Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];




Вниз

Вопрос по TQuery... 


Olfi   (2002-01-03 15:29) [0]

Через TQuery можно редактировать БД или только просматривать её содержимое?



Delirium   (2002-01-03 15:38) [1]

Можно



Jony   (2002-01-03 15:58) [2]

Можно, если запрос составлен только по одной таблице.



Fareader   (2002-01-03 16:26) [3]

Добавлю к сказаному Jony : если свойство RequestLive=true у TQuery



Olfi   (2002-01-03 18:00) [4]

Т. е., если свойство RequestLive=true у TQuery, то можно изменять БД?



Fareader   (2002-01-03 18:26) [5]

Да, но учти в запросе не должно быть сортировок, группировок, сумм, среднего арифметического... и прочей ерунды. если без этих прелестей жить нельзя, то прийдется TQuery подключать к TUpdateSQL, а там уже можно.



evgeg   (2002-01-03 22:24) [6]

Вы забыли о том, что с помощью Query можно выполнять
sql-команды - т. е. делать с базой практически все,
что угодно.



Turalyon   (2002-01-04 08:35) [7]

2Olfi
Я обычно работаю со всеми БД как раз через Query, для изменения баз данных использую кешированные обновления (Cached Updates) через компонент UpdateSQL. Почитай про эти самые обнавления.



TonnyS   (2002-01-04 12:01) [8]

Вообще-то вопрос был про редактирование БД, а не изменение БД из DBgrid, например. Изменять БД запросом можно с помощью операторов DELETE, INSERT, UPDATE. Подробнее можно прочитать:
Пуск-Программы-Borland Delphi5-Help-Borland Database Engine-Local SQL Guide. (думаю, в других версиях аналогично, файл:localsql.hlp).



Davojan   (2002-01-04 12:05) [9]

Соглашусь с последним советом. Самый удобный вариант - это через компонент UpdateSQL, т.к. он не накладывает никаких ограничений: можно использовать с любым запросом. Поэтому читай Help по этому компоненту, там всё подробно сказано, лично я разбирался с этим именно через Help.
Удачи.



Olfi   (2002-01-04 12:29) [10]

Т. е. в самой таблице редактировать БД нельзя, можно только , используя SQL. Правильно я понимаю? Но что можно сделать, чтобы редактировать БД в самой таблице, как в TTable? (без SQL)



TonnyS   (2002-01-04 12:47) [11]

можно, при RequestLive := true а также условиях, перечисленных
Fareader © (03.01.02 18:26)



Val   (2002-01-04 12:47) [12]

>Olfi (04.01.02 12:29)
Читай ответы-TUpdateSQL-это компонент а не диалект SQL.
А как ты собираешься еще работать с Query, если он специально сделан для прописывания команд SQL?



Olfi   (2002-01-04 16:08) [13]

Я делал RequestLive := true , и всё равно в редактировать БД не получалось из таблицы... SQL тут не совсем подходит.. А может я просто не совсем понимаю, как его тут можно использовать, т. к. мне необходимо изменить значение определённой записи, где Select не подходит.



Fareader   (2002-01-04 16:11) [14]

Брось сюда запрос из TQuery



Olfi   (2002-01-04 16:50) [15]

До меня кажется дошло.. :) . Вообщем всё делает, только я не могу понять, почему выдаёт ошибку "Update Failed". Изменяет строки и говорит об ошибке... - бред какой-то! :( Может код неправильный? Вот он...

sql1.InsertSQL.Clear;
sql1.InsertSQL.add (" UPDATE "e:\sklad\02012002.db" SET nalichie = 100 ");
query1.close;
sql1.ExecSQl (ukinsert);
query1.open;

Результат: в поле заполняет все строки знач. 100.






Fareader   (2002-01-04 17:12) [16]

Подожди, ты в свойстве UpdateObject у Query указал свой TUpdateSQL ? Если да, то щелкни по компоненту TUpdateSQL - откроется формочка, в ней будут столбцы, которые подлежат изменению, если тебя там все устраивает, то жми Generate SQL - он автоматически генерирует запросы на добавление, изменение и удаление. А на AfterPost поставь:

Dataset.applyupdates;
Dataset.commitupdates;

Хотя это и не самое лучшее решение.
А вообще я просил запрос на select




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.031 c
4-9023            Kirill_               2001-12-06 01:56  2002.02.04  
Соответствие типов


3-8754            KonuhovSegey          2001-12-30 11:21  2002.02.04  
Ограничения на транзакцию


1-8881            VladimirL             2002-01-15 18:47  2002.02.04  
Во время работы не меняются данные на форме


1-8899            Velocity              2002-01-15 12:28  2002.02.04  
Потоки и динамическое выделение памяти


3-8764            KonuhovSegey          2002-01-02 09:28  2002.02.04  
Убрать ограничения на количество изменений в одной транзакции