![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TDbf Где находится указатель записи после Dbf.delete? [D6, dBase, FoxPro]
smu © (2003-12-26 15:07:00)
Хочу переместить данные из одной таблицы в другую. Нужно ли переходить к новой записи после Delete?
paul_k (2003-12-26 16:02:00) [1]
2 vlad
А слона то я и не заметил....
smu (2003-12-26 16:02:00) [2]
> paul_k ©
Сабж
Vlad (2003-12-26 16:01:00) [3]
> paul_k © (26.12.03 15:54) [11]
> по Вашему умолчанию ....
Название ветки глянь :-)
smu (2003-12-26 16:00:00) [4]
if not dmDB.dbVypiskiS.IsEmpty then
begin
dmDB.dbArchVypS.Insert;
dmDB.dbArchVypS.FieldByName("DATE").AsDateTime:=dmDB.dbVypiskiS.FieldByName("DATE").AsDateTime;
dmDB.dbArchVypS.FieldByName("TIME").AsString:=dmDB.dbVypiskiS.FieldByName("TIME").AsString;
dmDB.dbArchVypS.FieldByName("NAMORG").AsString:=dmDB.dbVypiskiS.FieldByName("NAMORG").AsString;
dmDB.dbArchVypS.FieldByName("ACCORG").AsString:=dmDB.dbVypiskiS.FieldByName("ACCORG").AsString;
dmDB.dbArchVypS.Post;
dmDB.dbVypis.First;
While not dmDB.dbVypis.Eof do
begin
if ((dmDB.dbVypis.FieldByName("DATE").AsDateTime=dmDB.dbVypiskiS.FieldByName("DATE").AsDateTime)and
(dmDB.dbVypis.FieldByName("TIME").AsString=dmDB.dbVypiskiS.FieldByName("TIME").AsString)and
(dmDB.dbVypis.FieldByName("ACCORG").AsString=dmDB.dbVypiskiS.FieldByName("ACCORG").AsString))then
begin
dmDB.dbArchVyp.Insert;
dmDB.dbArchVyp.FieldByName("DATE").AsDateTime:=dmDB.dbVypis.FieldByName("DATE").AsDateTime;
dmDB.dbArchVyp.FieldByName("TIME").AsString:=dmDB.dbVypis.FieldByName("TIME").AsString;
dmDB.dbArchVyp.FieldByName("NAMORG").AsString:=dmDB.dbVypis.FieldByName("NAMORG").AsString;
dmDB.dbArchVyp.FieldByName("NAMCON").AsString:=dmDB.dbVypis.FieldByName("NAMCON").AsString;
dmDB.dbArchVyp.FieldByName("ACCORG").AsString:=dmDB.dbVypis.FieldByName("ACCORG").AsString;
dmDB.dbArchVyp.FieldByName("ACCCON").AsString:=dmDB.dbVypis.FieldByName("ACCCON").AsString;
dmDB.dbArchVyp.Post;
dmDB.dbVypis.Delete;
end
else dmDB.dbVypis.Next;
end;
dmDB.dbVypiskiS.Delete;
end;
end
Урезанный код.... Записи почему то не всегда переносились в архивные таблицы...
Term (2003-12-26 15:55:00) [5]
> Так я и делал, но некоторые записи не копировались... Почему
> так и не понял. Сейчас все вроде бы работает
для верности отфильтруй, и без next обойдешся
paul_k (2003-12-26 15:54:00) [6]
А вот это уже надо смотреть.
по Вашему умолчанию я был в полной уверенности что Вы пользуете BDE компоненты а там есть такая возможность.....
Vlad (2003-12-26 15:53:00) [7]
> smu © (26.12.03 15:50) [9]
> Так я и делал, но некоторые записи не копировались... Почему
> так и не понял. Сейчас все вроде бы работает.
Значит как-то не так делал. Если бы код привел, тогда бы ясно стало.
smu (2003-12-26 15:50:00) [8]
> while not EOF do if <условие> then delete else next
Так я и делал, но некоторые записи не копировались... Почему так и не понял. Сейчас все вроде бы работает.
> paul_k ©
А TDbf поддерживает SQL?
paul_k (2003-12-26 15:38:00) [9]
1.запрос
insert into table1 ()
select from table2
where (твое условие)
2.запрос
delete from table2
where (твое условие)
и нечего по записям в цикле ползать.
Vlad (2003-12-26 15:38:00) [10]
while not EOF do if <условие> then delete else next;
sniknik (2003-12-26 15:36:00) [11]
> Будет ли на них попадать указатель после Next или Delete?
нет скорее всего. по умолчанию так (DbiSetProp не вызывал? тогда точно нет)
хотя да, у тебя же TDbf..., ищи аналог (в гриде удаленные видны? нет тогда нет).
smu (2003-12-26 15:33:00) [12]
> В твоем случае никаких Next делать не надо.
Копируются не все записи, а только удовлетворяющие некоторому условию, так что Next делать тоже приходится....
Vlad (2003-12-26 15:29:00) [13]
> smu © (26.12.03 15:25) [3]
Указатель не попадает на помеченные как удаленные записи.
В твоем случае никаких Next делать не надо.
smu (2003-12-26 15:25:00) [14]
После Delete записи не удаляются физически, а только помечаются на удаление. Будет ли на них попадать указатель после Next или Delete?
sniknik (2003-12-26 15:12:00) [15]
> Следующая запись станет текущей
или предыдущая если курсор в конце таблици.
Vlad (2003-12-26 15:08:00) [16]
Не нужно. Следующая запись станет текущей