Суть в том что ошибка возникает через раз, а то и через 2...
прилагаю исходный код, подскажите может я что-то перемудрил:
процедура вызова:
Код:
Button3.Enabled:=False;
Clear(ADOTable1,0);
Excel();
Button3.Enabled:=True;
Процедура Clear:
Код:
procedure Clear(ADOTable:TADOTable;z:integer);
Var
x:integer;
begin
With ADOTable do
begin
if z=1
then x := MessageDlg('Подтвердите очистку таблицы.', mtconfirmation, [mbYes, mbNo], 0)
else x:=6;
if x = 6 then
begin
ADOTable.First;
While not EOF do
ADOTable.Delete;
end;
end;
end;
процедура Excel:
Код:
procedure Excel();
var
x: TXLSFile;
i: Integer;
C: TCell;
Ex1,Ex2,Ex3,Ex4,Ex5,Ex6:integer;
begin
Ex1:=StrToInt(Form1.Ex1.Text);
Ex2:=StrToInt(Form1.Ex2.Text);
Ex3:=StrToInt(Form1.Ex3.Text);
Ex4:=StrToInt(Form1.Ex4.Text);
Ex5:=StrToInt(Form1.Ex5.Text);
Ex6:=StrToInt(Form1.Ex6.Text);
Form1.OpenDialog1.Execute();
x := TXLSFile.Create;
x.OpenFile(Form1.OpenDialog1.FileName);
for i := 0 to x.Workbook.Sheets[0].Cells.Count - 1 do
begin
C := x.Workbook.Sheets[0].Cells.Item[i];
if IntToStr(C.Row) <> '0' then
with Form1.ADOTable1 do
begin
Form1.ADOTable1.Last;
if IntToStr(C.Col) = IntToStr(Ex1) then
begin
Form1.ADOTable1.Insert;
FieldByName('Naim').AsString := C.Value;
end;
if IntToStr(C.Col) = IntToStr(Ex2) then
begin
Form1.ADOTable1.Edit;
FieldByName('Kod').AsInteger := C.Value;
end;
if IntToStr(C.Col) = IntToStr(Ex3) then
begin
Form1.ADOTable1.Edit;
FieldByName('Cen').AsFloat := C.Value;
end;
if IntToStr(C.Col) = IntToStr(Ex4) then
begin
Form1.ADOTable1.Edit;
FieldByName('Grup').AsString := C.Value;
end;
if IntToStr(C.Col) = IntToStr(Ex5) then
begin
Form1.ADOTable1.Edit;
FieldByName('KolVo').AsInteger := C.Value;
end;
if IntToStr(C.Col) = IntToStr(EX6) then
begin
Form1.ADOTable1.Edit;
FieldByName('Str').AsString := C.Value;
end;
end;
end;
end;
Для подключения к документу Excel использовал библиотеку XLSFile.