Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.026 c
14-1134541199
Жук
2005-12-14 09:19
2006.01.15
Запуск Д6


14-1134731483
Id
2005-12-16 14:11
2006.01.15
Не чем заняться


2-1135717341
Freezz
2005-12-28 00:02
2006.01.15
работа с записями


4-1131446444
psa247
2005-11-08 13:40
2006.01.15
EnumChildWindows !


14-1134921404
Praetor
2005-12-18 18:56
2006.01.15
Воскресная задачка




   Наверх