Показать сообщение отдельно
  #3  
Старый 15.08.2010, 18:47
Аватар для Anchorte
Anchorte Anchorte вне форума
Прохожий
 
Регистрация: 18.09.2009
Адрес: Курск
Сообщения: 49
Репутация: 10
По умолчанию

Суть в том что ошибка возникает через раз, а то и через 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.
Ответить с цитированием