![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Если я не выбираю файл и закрываю opendialog выскакиевает ошибка, мол не удается найти указанный файл, проверьте правильность... Как от этого избавится.
пробывал Код:
if not opendialog1.Execute then exit; |
#2
|
||||
|
||||
![]() Цитата:
|
#3
|
|||
|
|||
![]() Цитата:
вот код: Код:
procedure TForm1.Button10Click(Sender: TObject); var ea:variant; row:integer; i: word; i3 : integer; i2:integer; i4:integer; asd : string; asd10:string; asd1 : string; asd2 : string; asd3 : string; asd4 : integer; asd9:integer; begin if not opendialog1.Execute then exit; if opendialog1.Execute then asd:=Label5.Caption; begin ea:=CreateOleObject('Excel.Application'); ea.Workbooks.Open(opendialog1.FileName); ea.Visible:=false; Label5.Caption:=ea.Sheets[1].Cells[2,1]; asd:=Label5.Caption; asd1:=ea.Sheets[1].Cells[1,1]; asd2:=ea.Sheets[1].Cells[3,1]; asd3:=ea.Sheets[1].Cells[4,1]; if asd3<>'IN' then begin ea.quit; showmessage('Приходная накладная должна быть со значением IN'); exit; end; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text:= Format('CREATE TABLE %s (Код number, Наименование varchar(255), По_документу number, По_факту number, Расхождения number, Учед varchar(255), Дата_IN date, Клиент varchar(255), З_Х varchar(25), Тип varchar(255), номер_заявки varchar(255))', [asd]); ADOQuery1.ExecSQL; ADOQuery1.SQL.Text:= Format('SELECT * from %s', [asd]); Label6.Caption:='1'; ADOQuery1.Open; DBGridEh1.TitleParams.MultiTitle := true; DBGridEh1.Columns[2].Title.Caption := 'Количество|По док-ту'; DBGridEh1.Columns[3].Title.Caption := 'Количество|По факту'; DBGridEh1.Columns[5].Title.Caption := 'Уч.ед'; ADOConnection1.GetTableNames(ComboBox1.Items, False); Edit2.Clear; ADOQuery2.Active:=true; ADOQuery2.Append; ADOQuery2.FieldByName('Номер заявки').Value:=asd; ADOQuery2.FieldByName('Клиент').AsString:=asd1; ADOQuery2.FieldByName('Дата').Value:=asd2; ADOQuery2.Post; RadioButton1.Checked:=true; RadioButton2.Checked:=false; DBGrideh2.DataSource:=DataSource2; for i2:=0 to DBGridEh1.Columns.Count-1 do DBGridEh1.Columns[i2].OptimizeWidth; row:=ea.ActiveSheet.UsedRange.Rows.Count+ ea.ActiveSheet.UsedRange.Row - 1; for i:=5 to row do begin //adoquery1.Edit; adoQuery1.Append; try ADOQuery1.FieldByName('Код').Value:=StrToIntDef(string(ea.Sheets[1].Cells[i,2]),0); except ADOQuery1.FieldByName('Код').Value:=0; end; ADOQuery1.FieldByName('Наименование').Value:=ea.Sheets[1].Cells[i,3]; ADOQuery1.FieldByName('По_документу').Value:=ea.Sheets[1].Cells[i,4]; ADOQuery1.FieldByName('Учед').Value:=ea.Sheets[1].Cells[i,5]; ADOQuery1.FieldByName('Дата_IN').Value:=ea.Sheets[1].Cells[3,1]; ADOQuery1.FieldByName('Клиент').AsString:=ea.Sheets[1].Cells[1,1]; ADOQuery1.FieldByName('Тип').Value:=ea.Sheets[1].Cells[4,1]; ADOQuery1.FieldByName('Номер_заявки').AsString:=ea.Sheets[1].Cells[2,1]; DBGridEh1.TitleParams.MultiTitle := true; DBGridEh1.Columns[2].Title.Caption := 'Количество|По док-ту'; DBGridEh1.Columns[3].Title.Caption := 'Количество|По факту'; DBGridEh1.Columns[5].Title.Caption := 'Уч.ед'; //ADOQuery1.FieldByName('Дата').ReadOnly:=true; //ADOQuery1.FieldByName('Расхождения').ReadOnly:=true; //ADOQuery1.FieldByName('Клиент').ReadOnly:=true; application.ProcessMessages; end; adoQuery1.Post; ea.quit; adoQuery1.First; end; begin ADOQuery1.FieldByName('Дата_IN').ReadOnly:=true; ADOQuery1.FieldByName('Расхождения').ReadOnly:=true; ADOQuery1.FieldByName('Клиент').ReadOnly:=true; end; begin asd10:=ADOQuery2.FieldByName('Клиент').AsString; ADOConnection4.GetTableNames(ListBox1.Items, False); for i4 :=0 to ListBox1.Items.Count-1 do if ListBox1.Items.Strings[i4]=asd10 then begin exit; end; begin ADOQuery4.Close; //ADOQuery4.SQL.Clear; ADOQuery4.SQL.Text:= Format('CREATE TABLE %s (Заявка varchar(255), Код number, Наименование varchar(255), Количество number, Учед varchar(255), Дата_IN date, Дата_OUT date, З_Х varchar(255))', [asd1]); ADOQuery4.ExecSQL; ADOQuery4.SQL.Text:= Format('SELECT * from %s', [asd10]); ADOQuery4.Open; ADOConnection4.GetTableNames(ComboBox3.Items, False); end; end; if ADOQuery3.fields[0].asstring='' then begin exit; end; end; |
#4
|
||||
|
||||
![]() ну так 2 раза вызов идет:
Код:
if not opendialog1.Execute then exit; if opendialog1.Execute then и Код:
asd:=Label5.Caption; видимо не в том месте стоит. Пишу программы за еду. __________________ |
#5
|
||||
|
||||
![]() Цитата:
Код:
... if OpenDialog1.Execute then begin ... ExtractFileName(OpenDialog1.FileName); ... end; ... З.Ы. А то вижу что происходит только это Код:
if opendialog1.Execute then asd:=Label5.Caption; Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 26.03.2013 в 11:58. |
#6
|
|||
|
|||
![]() Засунул в бегин, но это ничего не изменило. Может в какое-то другое место поставить if not opendialog1.Execute then exit; ?
|
#7
|
||||
|
||||
![]() Цитата:
Код:
procedure TForm1.Button10Click(Sender: TObject); var i: word; ea: variant; row, asd4, asd9, i3, i2, i4: integer; asd, asd10, asd1, asd2, asd3: string; begin if opendialog1.Execute then begin {opendialog1.Execute} asd:=Label5.Caption; ea:=CreateOleObject('Excel.Application'); ea.Workbooks.Open(opendialog1.FileName); ea.Visible:=false; Label5.Caption:=ea.Sheets[1].Cells[2,1]; asd:=Label5.Caption; asd1:=ea.Sheets[1].Cells[1,1]; asd2:=ea.Sheets[1].Cells[3,1]; asd3:=ea.Sheets[1].Cells[4,1]; if asd3<>'IN' then begin {if} ea.quit; showmessage('Приходная накладная должна быть со значением IN'); exit; end;{if} ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text:= Format('CREATE TABLE %s (Код number,'+ ' Наименование varchar(255), По_документу number,'+ ' По_факту number, Расхождения number, Учед varchar(255),'+ ' Дата_IN date, Клиент varchar(255), З_Х varchar(25), Тип varchar(255),'+ ' номер_заявки varchar(255))', [asd]); ADOQuery1.ExecSQL; ADOQuery1.SQL.Text:= Format('SELECT * from %s', [asd]); Label6.Caption:='1'; ADOQuery1.Open; DBGridEh1.TitleParams.MultiTitle := true; DBGridEh1.Columns[2].Title.Caption := 'Количество|По док-ту'; DBGridEh1.Columns[3].Title.Caption := 'Количество|По факту'; DBGridEh1.Columns[5].Title.Caption := 'Уч.ед'; ADOConnection1.GetTableNames(ComboBox1.Items, False); Edit2.Clear; ADOQuery2.Active:=true; ADOQuery2.Append; ADOQuery2.FieldByName('Номер заявки').Value:=asd; ADOQuery2.FieldByName('Клиент').AsString:=asd1; ADOQuery2.FieldByName('Дата').Value:=asd2; ADOQuery2.Post; RadioButton1.Checked:=true; RadioButton2.Checked:=false; DBGrideh2.DataSource:=DataSource2; for i2:=0 to DBGridEh1.Columns.Count-1 do DBGridEh1.Columns[i2].OptimizeWidth; row:=ea.ActiveSheet.UsedRange.Rows.Count+ ea.ActiveSheet.UsedRange.Row - 1; for i:=5 to row do begin {for} //adoquery1.Edit; adoQuery1.Append; try ADOQuery1.FieldByName('Код').Value:= StrToIntDef(string(ea.Sheets[1].Cells[i,2]),0); except ADOQuery1.FieldByName('Код').Value:=0; end; {except} ADOQuery1.FieldByName('Наименование').Value:=ea.Sheets[1].Cells[i,3]; ADOQuery1.FieldByName('По_документу').Value:=ea.Sheets[1].Cells[i,4]; ADOQuery1.FieldByName('Учед').Value:=ea.Sheets[1].Cells[i,5]; ADOQuery1.FieldByName('Дата_IN').Value:=ea.Sheets[1].Cells[3,1]; ADOQuery1.FieldByName('Клиент').AsString:=ea.Sheets[1].Cells[1,1]; ADOQuery1.FieldByName('Тип').Value:=ea.Sheets[1].Cells[4,1]; ADOQuery1.FieldByName('Номер_заявки').AsString:=ea.Sheets[1].Cells[2,1]; DBGridEh1.TitleParams.MultiTitle := true; DBGridEh1.Columns[2].Title.Caption := 'Количество|По док-ту'; DBGridEh1.Columns[3].Title.Caption := 'Количество|По факту'; DBGridEh1.Columns[5].Title.Caption := 'Уч.ед'; //ADOQuery1.FieldByName('Дата').ReadOnly:=true; //ADOQuery1.FieldByName('Расхождения').ReadOnly:=true; //ADOQuery1.FieldByName('Клиент').ReadOnly:=true; application.ProcessMessages; adoQuery1.Post; ea.quit; adoQuery1.First; end;{for} ADOQuery1.FieldByName('Дата_IN').ReadOnly:=true; ADOQuery1.FieldByName('Расхождения').ReadOnly:=true; ADOQuery1.FieldByName('Клиент').ReadOnly:=true; asd10:=ADOQuery2.FieldByName('Клиент').AsString; ADOConnection4.GetTableNames(ListBox1.Items, False); for i4 :=0 to ListBox1.Items.Count-1 do if ListBox1.Items.Strings[i4]=asd10 then exit; ADOQuery4.Close; //ADOQuery4.SQL.Clear; ADOQuery4.SQL.Text:= Format('CREATE TABLE %s (Заявка varchar(255), Код number,'+ ' Наименование varchar(255), Количество number, Учед varchar(255),'+ ' Дата_IN date, Дата_OUT date, З_Х varchar(255))', [asd1]); ADOQuery4.ExecSQL; ADOQuery4.SQL.Text:= Format('SELECT * from %s', [asd10]); ADOQuery4.Open; ADOConnection4.GetTableNames(ComboBox3.Items, False); if ADOQuery3.fields[0].asstring='' then exit; end;{ opendialog1.Execute} end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
cyborgg4655 (26.03.2013)
|
#8
|
|||
|
|||
![]() Цитата:
|
#9
|
|||
|
|||
![]() Код:
ADOQuery1.FieldByName('Код').Value:=StrToIntDef(string(ea.Sheets[1].Cells[i,2]),0); |
#10
|
|||
|
|||
![]() Все, заработало, я вручную добавил {if,for и т.п}... Спсибо, я даже и не догадывался что решение окажется именно таким)
|