Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.15;
Скачать: CL | DM;

Вниз

Редактирование найденных данных.   Найти похожие ветки 

 
KostR   (2005-11-13 09:55) [0]

Здравствуйте. Вопрос такого плана. В этом примере я работаю с базой данных (list.db). Мне нужно найти все слова на букву «С» в столбце data этой таблицы. Данные отображаются в DBGrid. После нажатия на кнопку (Button1) все слова на букву «С» выводятся в DBGrid, НО Я НЕ МОГУ ИХ РЕДАКТИРОВАТЬ, такое ощущение, что доступен только просмотр. Мне же нужно произвести поиск и далее отредактировать нужные вещи. Возможно ли как-то это сделать. Вот мой пример. Спасибо.

procedure Tfmosn.Button1.Click(Sender: TObject);
begin
Query1.Close; // закрыть файл-результат предыдущего запроса
Query1.SQL.Clear; // удалить текст предыдущего запроса
// далее формируем новый запрос
Query1.SQL.Add("SELECT *");
Query1.SQL.Add("FROM ":list:list.db"");// ищем в базе list.db
Query1.SQL.Add("WHERE data like "C%"); // в столбце
//data слова на букву С
Query1.SQL.Add("ORDER BY data"); // сортируем по порядку
Query1.Open; // активизируем запрос
if Query1.RecordCount <> 0 then
DataSource1.DataSet:=Query1 // отобразить
//результат выполнения запроса
else
showmessage("Не найдено!");
end;


 
Бобров Илья   (2005-11-13 11:07) [1]

А как насчет поиска по ключевому полю в исходной таблице. Там - то можно все править!


 
Anatoly Podgoretsky ©   (2005-11-13 12:20) [2]

Не редактируй в гриде


 
ЮЮ ©   (2005-11-14 04:25) [3]

Всё дело в ORDER BY data
Для редактирования такого запроса в BDE нужно либо иметь индекс по этому полю, либо использовать TUpdateSQL для данного TQuery, тогда TQuery станет редактируемым.


 
Anatoly Podgoretsky ©   (2005-11-14 08:53) [4]

ЮЮ ©   (14.11.05 04:25) [3]
Всё дело в ORDER BY data

Не совсем, все дело в отсутствии индекса по условию указаному в ORDER BY


 
ЮЮ ©   (2005-11-14 09:12) [5]

Anatoly Podgoretsky ©   (14.11.05 08:53) [4]
все дело в отсутствии индекса по условию указаному в ORDER BY

Не совсем, т.к. подключение и настройка TUpdateSQL сделает набор редактируемым, даже при отсутствии такого индекса


 
KostR ©   (2005-11-15 19:39) [6]

Извените, но что это за индекс по условию указаному в ORDER BY?
Что такое TUpdateSQL?


 
Anatoly Podgoretsky ©   (2005-11-15 19:49) [7]

ЮЮ ©   (14.11.05 09:12) [5]
TUpdateSQL конечно сделает возможность редактирования, но я говорю про редактируемый набор. А эта надстройка редактирует набор другим запросом и обновляет его.


 
ЮЮ ©   (2005-11-16 04:07) [8]

>Anatoly Podgoretsky ©   (15.11.05 19:49) [7]
>А эта надстройка редактирует набор другим запросом и обновляет его.

Всё равно не переспоришь :) Тем более с такими ляпами :)

TUpdateSQL не "редактирует набор другим запросом и обновляет его", а снимает ответственность с БДЕ и перекладывает её на TUpdateSQL по генерации инструкций для изменения таблицы  БД, делая набор данных редактируемым, независимо от того, правильные ли там инструкции и действительно ли они вносят изменения в БД.


 
Anatoly Podgoretsky ©   (2005-11-16 08:33) [9]

Не так, там пишется запрос на обновление, а компонент обращается к этому запросу. Тоже по Delete/Insert основной запрос, про который я говорю, как был не редактируемый, так и остался.


 
ЮЮ ©   (2005-11-16 08:54) [10]

Так вот и низвергаются авторитеты :(

function TBDEDataSet.GetCanModify: Boolean;
begin
 Result := FCanModify or ForceUpdateCallback;
end;

function TBDEDataSet.ForceUpdateCallback: Boolean;
begin
 Result := FCachedUpdates and (Assigned(FOnUpdateRecord) or
   Assigned(FUpdateObject));
end;

Итак, если FCanModify = false, но FCachedUpdates and  Assigned(FUpdateObject), то набор данных, т.е тот самый, что вернул TQuery можно редактировать, т.е те самые Delete/Insert у того самого TQuery.
И только после ApplyUpdates будут выполнены запросы, что прописаны в TUpdateSQL, причем они могут делать даже совсем не то, что было сделано в наборе данных



Страницы: 1 вся ветка

Текущий архив: 2006.01.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.032 c
2-1135666949
TStas
2005-12-27 10:02
2006.01.15
В каком свойстве ShellTreeView хранит выбранную папку?


2-1135208071
kotbazilio
2005-12-22 02:34
2006.01.15
Код символа


14-1135173301
Fl@sh
2005-12-21 16:55
2006.01.15
Пролог и выход с цикла


2-1135275962
denisww
2005-12-22 21:26
2006.01.15
HTTPRIO


2-1135376569
Lokk
2005-12-24 01:22
2006.01.15
Работа с датами