Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите, почему не происходит очистка таблицы? [D6]


DimonS ©   (2005-06-08 09:22:00) 

Есть такой код для копирования БД:
procedure TFormZ.N11Click(Sender: TObject);
var
s:string;
begin
tbCopy.DatabaseName:='\\Ivc-3\zarplata\zarplata\11\BAZA\dataz';
tbCopy.TableName:=tbDat.fieldByName('Mes').AsString+tbDat.fieldByName('God').AsString+'_Z.db';

Table3.Open;

try
  tbCopy.Open;
except
     ShowMessage('ÁÄ íåäîñòóïíà!');
     exit;
end;

Table3.First;

Table3.MasterFields:='';
while not Table3.Eof do Table3.Delete;

tbCopy.First;
while not tbCopy.Eof do
begin
    Table3.Insert;
    for i:=1 to tbCopy.FieldCount-1 do
    begin
         Table3.Fields[i].Value:=tbCopy.Fields[i].Value;
    end;
    Table3.Post;
tbCopy.Next;
end;
Table3.MasterFields:='TabN';
end;

И вот при выполнении его в режиме отладки после команды
Table3.First;

Table3.MasterFields:='';
сразу же выполняется строка tbCopy.First; , а строка while not Table3.Eof do Table3.Delete; не выполняется, т. е. даже не заходит на нееи все данные с другой базы дописываются в эту.

Что это за глюк? Вроде раньше где-то встречался с этим, но не помню...


DimonS   (2005-06-08 10:33:00) [1]

В том то и дело, что база не пустая. И притом, рядом же стоит код ТОЧНО ТАКОЙ ЖЕ, но для другой таблице, там все работает!!!

Вот он:
procedure TFormZ.N9Click(Sender: TObject);
begin
tbCopy.DatabaseName:='\\Ivc-3\zarplata\zarplata\11\BAZA\';
tbCopy.TableName:='fio.db';

fio.Open;

try
  tbCopy.Open;
except
     ShowMessage('ÁÄ íåäîñòóïíà!');
     exit;
end;

FIO.First;
while not FIO.Eof do FIO.Delete;

tbCopy.First;
while not tbCopy.Eof do
begin
    fio.Insert;
    for i:=0 to fio.FieldCount-1 do
    begin
         FIO.Fields[i].Value:=tbCopy.Fields[i].Value;
    end;
    fio.Post;
tbCopy.Next;
end;
end;

Если убрать строку Table3.MasterFields:='';, то происходит то же самое. Перепробовал уже все, что можно.


Anatoly Podgoretsky   (2005-06-08 10:16:00) [2]

Последовательность не та
Table3.First;
Table3.MasterFields:='';

Предполагаю еще и ошибки в алгоритме


Bronco   (2005-06-08 10:10:00) [3]

Проверь чему равно Table3.Eof, возможно таблица пуста и оптимизатор не считает нужным выполнять цикл. Или попробуй отключить оптимизацию.


dolmat   (2005-06-08 09:55:00) [4]

while not Table3.Eof do Table3.Delete;
замена Table3.emptitable;


Наверх

Титульная страница Поиск, карта сайта Написать письмо