Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-1091216496
поклонник
2004-07-30 23:41
2004.08.15
Поможем наши друзьям


14-1090819044
Ega23
2004-07-26 09:17
2004.08.15
Модераторам, создателям, или тем кто знает!


1-1091102890
Aleksandr.
2004-07-29 16:08
2004.08.15
Допустимы ли для нормальной работы такие действия с объектом?


4-1088691398
BillyJeans
2004-07-01 18:16
2004.08.15
Форма и её контролы...


9-1083399484
Smoke_Gomel
2004-05-01 12:18
2004.08.15
Обращение к свойствам спрайта через процедуру другого спрайта.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский