![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как удалить определенные записи по условию
Tempo © (2004-07-19 08:41:00)Допустим, есть таблица, в которой много записей. Как удалить записи в которых в поле "Pole" содержится значение 1?
Пробовал делать через цикл, но при этом все сбивается, удаляется только первая найденная запись.
with main.ClientDataSet3 do begin
First;
repeat
if FindField('Pole').AsInteger = 1 then main.ClientDataSet3.Delete;
until not FindNext;
end;
MegaBass (2004-07-19 11:27:00) [1]To
>Tempo (19.07.04 09:24) [13]
>Все, спасибо Анатолию за подсказку...
:)
только так держать!!!
єще чуть-чуть и вовсе узнаєшь что такоє TClientDataSet
он ещо і не то может
дерзай
Tempo (2004-07-19 10:18:00) [2]
> Anatoly Podgoretsky
Ну я и использовал другой метод. Работает ведь=)
bushmen (2004-07-19 09:56:00) [3]> Tempo (19.07.04 09:24) [13]
Называется "Вперед в прошлое" :)
Anatoly Podgoretsky (2004-07-19 09:48:00) [4]Tempo (19.07.04 09:24) [13]
Я такого не подсказывал, я намекал что это не тот метод, который нужен для решения задачи.
Reindeer Moss Eater (2004-07-19 09:43:00) [5]А где во встроенной справке написано про xpman?
Есть некоторое кол-во не документированных возможностей.
Это тема другой ветки. К нашему делу не относится.
Tempo (2004-07-19 09:42:00) [6]А где во встроенной справке написано про xpman?
Есть некоторое кол-во не документированных возможностей.
Соловьев (2004-07-19 09:41:00) [7]2 Tempo
http://ibase.ru/devinfo/bde.htm
Reindeer Moss Eater (2004-07-19 09:39:00) [8]"Проcто" переходит на следующую строку метод Next.
С какого перепугу это делать методу FindNext?
И кстати где про это написано (только не у Фаронова, а во встроенной справке)?
Tempo (2004-07-19 09:37:00) [9]
> Reindeer Moss Eater
Нет, если не заняты параметры, то он просто переходит на следующую строку.
Reindeer Moss Eater (2004-07-19 09:33:00) [10]Странно, но в этой книге, приведен именно такой пример
Что, FindNext без всяких там параметров магическим образом ищет записи, нужные программисту путем чтения мыслей?
Здорово.
Я тоже так хочу.
Tempo (2004-07-19 09:24:00) [11]Все, спасибо Анатолию за подсказку...
with main.ClientDataSet3 do begin
First;
while not eof do begin
if FindField('Pole').AsInteger = 1 then main.ClientDataSet3.Delete else
next;
end;
end;
Tempo (2004-07-19 09:21:00) [12]
> Она тебе сообщает, что ты провайдера не назначил
Знаю, т.к. его и нет. Где я его возьму, если я работаю иначе.
> Reindeer Moss Eater
Странно, но в этой книге, приведен именно такой пример для поиска записей или изменения их или удаления. Так эже там сказано, что FindNext и Next одно и тоже (хотя смысл тогда их делать?)
Reindeer Moss Eater (2004-07-19 09:18:00) [13]А что тогда наложено, если ты от FindNext чего-то ждешь?
Как по твоему FindNext должен понять, что именно ему надо найти?
Anatoly Podgoretsky (2004-07-19 09:16:00) [14]Она тебе сообщает, что ты провайдера не назначил
Tempo (2004-07-19 09:13:00) [15]Фильтрация не наложена!
Пробовал только что с запросом - не работает.
main.ClientDataSet3.CommandText:='delete from table where Pole = 1';
main.ClientDataSet3.Execute;
Пишет ClientDataSet3: Missing data provider
Reindeer Moss Eater (2004-07-19 09:04:00) [16]И при чем здесь какой-то Фаронов с его страницей?
Ты нам сказал, что у тебя фильтрация наложена?
По моему нет.
Reindeer Moss Eater (2004-07-19 09:03:00) [17]Кто будет запросы выполнять?
Тот же, кто твой метод Delete сейчас выполняет.
Tempo (2004-07-19 08:59:00) [18]
> Reindeer Moss Eater
См. "Программирование баз данных в Delphi 7" В. Фаронов, 2004
г., стр 73
> Reindeer Moss Eater
Недели две назад мне в этом форуме утверждали, что SQL запросы доступны только в клиент-серверных БД. Я, в принципе, с логикой "а кто будет эти запросы выполнять? файл что-ли?" согласен.
Reindeer Moss Eater (2004-07-19 08:52:00) [19]забыл указать, SQL не доступен, работаю с локальными парадоксовскими БД.
И почему же он недоступен? Кому именно?
Reindeer Moss Eater (2004-07-19 08:51:00) [20]Кстати, при чем здесь FindNext?
Implements a virtual method for positioning the dataset on the next record, respecting any filters.
Delphi syntax:
function FindNext: Boolean;
C++ syntax:
bool __fastcall FindNext(void);
Description
This function returns false, indicating that the active record was not successfully changed. Descendant classes override FindNext to move to the next record of the dataset, honoring any filtersthat are in effect. In descendants, FindNext returns true if the active record is successfully changed.