Форум: "Базы";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
ВнизПодскажите, почему не происходит очистка таблицы? Найти похожие ветки
← →
DimonS © (2005-06-08 09:22) [0]Есть такой код для копирования БД:
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; не выполняется, т. е. даже не заходит на нее и все данные с другой базы дописываются в эту.
Что это за глюк? Вроде раньше где-то встречался с этим, но не помню...
← →
dolmat (2005-06-08 09:55) [1]while not Table3.Eof do Table3.Delete;
замена Table3.emptitable;
← →
Bronco © (2005-06-08 10:10) [2]Проверь чему равно Table3.Eof, возможно таблица пуста и оптимизатор не считает нужным выполнять цикл. Или попробуй отключить оптимизацию.
← →
Anatoly Podgoretsky © (2005-06-08 10:16) [3]Последовательность не та
Table3.First;
Table3.MasterFields:="";
Предполагаю еще и ошибки в алгоритме
← →
DimonS © (2005-06-08 10:33) [4]В том то и дело, что база не пустая. И притом, рядом же стоит код ТОЧНО ТАКОЙ ЖЕ, но для другой таблице, там все работает!!!
Вот он:
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:="";, то происходит то же самое. Перепробовал уже все, что можно.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c