![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите, почему не происходит очистка таблицы? [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;