![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Подскажите, как в ClientDataSet не прогоняя все записи в цикле (т.к. медленно) можно изменить или удалить записи с определенным значением в одном (или не одном) из полей? Желательно маленький пример.
|
|
#2
|
|||
|
|||
|
Использовать для удаления SQL запрос.
Delete from <Table_Name> where <Field1>=<:Значение1> and <Field2>=<:Значение2> |
|
#3
|
|||
|
|||
|
Цитата:
не пользовался SQL раньше... попробовал так: Код:
with clientdataset1 do begin
Close;
CommandText:=' DELETE FROM ClientDataSet1 where (ClientDataSet1.flag=true);';
Execute;
Open;
end;Последний раз редактировалось andrey.v.z, 09.07.2010 в 20:23. |
|
#4
|
|||
|
|||
|
1. Какая ошибка?
2. Имя таблицы - не имя компонента. 3. Для убыстрения прохода по компонентам-источникам данных надо отключать обновление данных в визуальных компонентах. Основное время тратится именно там. Соотв. методы: DisableControls и EnableControls. Типа: Код:
cdsMyData.DisableControls;
Try
cdsMyData.First;
While Not cdsMyData.Eof Do
cdsMyData.Next;
Finally
cdsMyData.EnableControls;
End;
|
|
#5
|
|||
|
|||
|
1. 'ClientDataSet1: Missing data provider or data packet'
2. Тут подробнее плиз. Мой ClientDataSet1 не связан с базами данных. Какое имя таблицы надо вписать? 3. За эту подсказку спасибо, так совсем другое дело. Правда теперь есть желание с SQL ближе познакомиться. |
|
#6
|
|||
|
|||
|
В том-то и дело, что похоже тут особо ничего не сделаешь. Хотя, вроде, можно было как-то гонять SQL запросы по CDS. Но точно как - просто не помню. Давно перешел на использование локальных (embedded) баз данных и забыл этот кошмар как класс.
|