Форум: "Базы";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
ВнизКак удалить определенные записи по условию Найти похожие ветки
← →
Tempo (2004-07-19 08:41) [0]Допустим, есть таблица, в которой много записей. Как удалить записи в которых в поле "Pole" содержится значение 1?
Пробовал делать через цикл, но при этом все сбивается, удаляется только первая найденная запись.with main.ClientDataSet3 do begin
First;
repeat
if FindField("Pole").AsInteger = 1 then main.ClientDataSet3.Delete;
until not FindNext;
end;
← →
Reindeer Moss Eater © (2004-07-19 08:44) [1]delete from table where Pole = 1
← →
Tempo (2004-07-19 08:48) [2]забыл указать, SQL не доступен, работаю с локальными парадоксовскими БД.
← →
Anatoly Podgoretsky © (2004-07-19 08:48) [3]Неправильно работает функция FindNext
← →
Reindeer Moss Eater © (2004-07-19 08:51) [4]Кстати, при чем здесь 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 filters that are in effect. In descendants, FindNext returns true if the active record is successfully changed.
← →
Reindeer Moss Eater © (2004-07-19 08:52) [5]забыл указать, SQL не доступен, работаю с локальными парадоксовскими БД.
И почему же он недоступен? Кому именно?
← →
Tempo (2004-07-19 08:59) [6]
> Reindeer Moss Eater
См. "Программирование баз данных в Delphi 7" В. Фаронов, 2004
г., стр 73
> Reindeer Moss Eater
Недели две назад мне в этом форуме утверждали, что SQL запросы доступны только в клиент-серверных БД. Я, в принципе, с логикой "а кто будет эти запросы выполнять? файл что-ли?" согласен.
← →
Reindeer Moss Eater © (2004-07-19 09:03) [7]Кто будет запросы выполнять?
Тот же, кто твой метод Delete сейчас выполняет.
← →
Reindeer Moss Eater © (2004-07-19 09:04) [8]И при чем здесь какой-то Фаронов с его страницей?
Ты нам сказал, что у тебя фильтрация наложена?
По моему нет.
← →
Tempo (2004-07-19 09:13) [9]Фильтрация не наложена!
Пробовал только что с запросом - не работает.
main.ClientDataSet3.CommandText:="delete from table where Pole = 1";
main.ClientDataSet3.Execute;
Пишет ClientDataSet3: Missing data provider
← →
Anatoly Podgoretsky © (2004-07-19 09:16) [10]Она тебе сообщает, что ты провайдера не назначил
← →
Reindeer Moss Eater © (2004-07-19 09:18) [11]А что тогда наложено, если ты от FindNext чего-то ждешь?
Как по твоему FindNext должен понять, что именно ему надо найти?
← →
Tempo (2004-07-19 09:21) [12]
> Она тебе сообщает, что ты провайдера не назначил
Знаю, т.к. его и нет. Где я его возьму, если я работаю иначе.
> Reindeer Moss Eater
Странно, но в этой книге, приведен именно такой пример для поиска записей или изменения их или удаления. Так эже там сказано, что FindNext и Next одно и тоже (хотя смысл тогда их делать?)
← →
Tempo (2004-07-19 09:24) [13]Все, спасибо Анатолию за подсказку...
with main.ClientDataSet3 do begin
First;
while not eof do begin
if FindField("Pole").AsInteger = 1 then main.ClientDataSet3.Delete else
next;
end;
end;
← →
Reindeer Moss Eater © (2004-07-19 09:33) [14]Странно, но в этой книге, приведен именно такой пример
Что, FindNext без всяких там параметров магическим образом ищет записи, нужные программисту путем чтения мыслей?
Здорово.
Я тоже так хочу.
← →
Tempo (2004-07-19 09:37) [15]
> Reindeer Moss Eater
Нет, если не заняты параметры, то он просто переходит на следующую строку.
← →
Reindeer Moss Eater © (2004-07-19 09:39) [16]"Проcто" переходит на следующую строку метод Next.
С какого перепугу это делать методу FindNext?
И кстати где про это написано (только не у Фаронова, а во встроенной справке)?
← →
Соловьев © (2004-07-19 09:41) [17]2 Tempo
http://ibase.ru/devinfo/bde.htm
← →
Tempo (2004-07-19 09:42) [18]А где во встроенной справке написано про xpman?
Есть некоторое кол-во не документированных возможностей.
← →
Reindeer Moss Eater © (2004-07-19 09:43) [19]А где во встроенной справке написано про xpman?
Есть некоторое кол-во не документированных возможностей.
Это тема другой ветки. К нашему делу не относится.
← →
Anatoly Podgoretsky © (2004-07-19 09:48) [20]Tempo (19.07.04 09:24) [13]
Я такого не подсказывал, я намекал что это не тот метод, который нужен для решения задачи.
← →
bushmen © (2004-07-19 09:56) [21]> Tempo (19.07.04 09:24) [13]
Называется "Вперед в прошлое" :)
← →
Tempo (2004-07-19 10:18) [22]
> Anatoly Podgoretsky
Ну я и использовал другой метод. Работает ведь=)
← →
MegaBass (2004-07-19 11:27) [23]To
>Tempo (19.07.04 09:24) [13]
>Все, спасибо Анатолию за подсказку...
:)
только так держать!!!
єще чуть-чуть и вовсе узнаєшь что такоє TClientDataSet
он ещо і не то может
дерзай
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.039 c