Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2008, 12:58   #1
Tanuska___:)
Пользователь
 
Аватар для Tanuska___:)
 
Регистрация: 22.04.2008
Сообщений: 84
По умолчанию ошибка "Переполнения"

Здравствуйте!
пытаюсь перегнать данные из .dbf в .mdb следующим образом:
но если нет данных добавляеться некоторое колличество данных и пишет ошибку :"Переполнение"
а если данные есть то еще при первом сравнении и обнавленнии появляется ошибка :'list index out of bounds (0)'
Пожалуста скажите в чем тут дело?
Код:
procedure TForm2.Button1Click(Sender: TObject);
Var
ExcelApp,Book,Sheet,V:Variant;
I:Integer;
ResultPath: string;
 Begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from Voditely ');
ADOQuery1.Open;
ResultPath:=ExtractFilePath(Application.ExeName)+'GENERAL.xls';
ExcelApp:=CreateOleObject('Excel.Application');
ExcelApp.Workbooks.Open(ResultPath);
Book:=ExcelApp.Workbooks[1];
Sheet:=Book.Worksheets[1];
I:=2;
V:= Sheet.Cells[I, 1].Value;
While Not VarIsEmpty(V) do
begin
if ((Sheet.Cells[I, 1].Value=1) or (Sheet.Cells[I, 1].Value=2))  then
  begin
  //Перебор пока не дойдете до пустой/последней строки
      Edit2.Text:=Sheet.Cells[I, 2].Value;
      Edit3.Text:=Sheet.Cells[I, 5].Value+' '+Sheet.Cells[I, 6].Value+' '+Sheet.Cells[I, 7].Value;
     If (Form1.ADOQuery1.Locate(Form1.ADOQuery1.Fields.Fields[0].FieldName,StrToInt(Edit2.Text),[]))  then
   begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('update Voditely set FIO ='+ QuotedStr(Edit3.Text)+' where tabNom = '+IntToStr(ADOQuery1.Fields.Fields[0].AsInteger));
  ADOQuery1.ExecSQL;
   end  else
        begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('insert into Voditely (tabNom, FIO) values('+ QuotedStr(Edit2.Text)+','+ QuotedStr(Edit3.Text)+')');
    ADOQuery1.ExecSQL;
         end;
 end;
 Inc(I);
 V:= Sheet.Cells[I, 1].Value;
end;
ExcelApp.ActiveWorkbook.Close;
ExcelApp.Application.Quit;
Application.MessageBox(0,'Таблица содержащая данные о водителях была успешно обновлена ',MB_ICONINFORMATION);
 end;
Tanuska___:) вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06
"Ошибка приложения" при запуске мидлета hotman Общие вопросы по Java, Java SE, Kotlin 0 04.09.2008 15:16
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 10:49