Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.037 c
1-1134227147
DimLord
2005-12-10 18:05
2006.01.15
Получение значение ячейки в DBGrid


6-1127822981
arhis
2005-09-27 16:09
2006.01.15
Исходящий траффик TServerSocket


3-1132640801
TAN_K
2005-11-22 09:26
2006.01.15
ComboBox - не раскрвать список


10-1111149870
dewersia
2005-03-18 15:44
2006.01.15
помогите с com+


14-1133625717
Nik8.
2005-12-03 19:01
2006.01.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский