![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Есть вот такой код:
Код:
Table1.First;
while not Table1.eof do begin
if Table1.FieldbyName('Num').AsString=edit1.text then Table1.Delete;
Table1.next;
end;Почему при выполнении он удаляет не все нужные строки в таблице? Таблицы Paradox. Заранее спасибо |
|
#2
|
|||
|
|||
|
Можно так попробовать.
Код:
Var n:integer;
begin
Table1.First;
while not Table1.eof do
begin
if Table1.FieldbyName('Tip_id').asString =edit1.text then
begin
n:=Table1.recNo;
Table1.Delete;
if n<>1 then
Table1.recNo:=n-1;
end;
Table1.next;
end;
end; |
|
#3
|
|||
|
|||
|
Вроде все работает, вот только когда в таблице остаются только те записи, которые нужно удалить (например с индексом "1"), удаляются все кроме первого. Иначе говоря, в таблице все равно остается одна запись, которая удаляется только со второго раза
|
|
#4
|
|||
|
|||
|
Ну тогда так.
Код:
Table1.Last;
for n:=table1.recordcount downto 1 do
begin
if Table1.FieldbyName('Tip_id').asString =edit1.text then
Table1.delete;
Table1.Prior;
end; |
|
#5
|
|||
|
|||
|
так все работает. Спасибо большое. А в чем была ошибка, вроде алгоритмы совершенно равнозначные?
|
|
#6
|
|||
|
|||
|
Цитата:
|
|
#7
|
|||
|
|||
|
помоему проще всё было сделать одним SQL-запросом ...
delete from таблица t where t.имя_поля = условие; но как кому нравится |
|
#8
|
|||
|
|||
|
Цитата:
Согласен. Но не все ищут легкие пути. ![]() Если размер таблицы не большой то не принципиально. |