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

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

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]

Не нужно. Следующая запись станет текущей


Наверх

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