Страница 1 из 1

Добавление записи Query1.Insert

Добавлено: 18 июн 2004, 22:46
Pepper
Здравствуйте!
Подскажите пожалуйста, как можно добавить запись с помощь компонента Query?
Я делал это так.
На форме лежит DBGrid1->DataSource1->Query1 (они так связаны). И прсто писал Query1.Insert. Но выскакивает ошибка:
Query1: Cannot modify a read-only dataset.
Что я делаю неправильно? Как вообще грамотно добавить запись с помощью Query?

Заранее благодарен!

Добавлено: 19 июн 2004, 13:58
maxrus
если у тебя запрос не редактируемый то придется использовать SQL запрос типа
INSERT INTO database_name (fiel_name1,field_name2...) VALUES (val1,val2...)
//////////
где val1 например это 'иванов' т.е. тто что надо вставить

Re: Добавление записи Query1.Insert

Добавлено: 19 июн 2004, 14:16
maga
Pepper писал(а): На форме лежит DBGrid1->DataSource1->Query1 (они так связаны). И прсто писал Query1.Insert. Но выскакивает ошибка:
Query1: Cannot modify a read-only dataset.
Что я делаю неправильно? Как вообще грамотно добавить запись с помощью Query?
у тебя Database стоит ReadOnly=true; сделай ReadOnly=false;

форма такая:
insert into имя_таблицы(здесь, столбы, таблицы) values (здесь, данные, если, 'строковые' )
дальше в этом духе :)

Добавлено: 20 июн 2004, 18:05
Pepper
А запросом же не получится запись добавить, данные-то которые добавляю пока не известны, или я не прав?
Я хочу сделать добавление новой записи по аналогии с Table.Insert.
Как так можно сделать?

А что значит "не редактируемый запрос"? ЧТо с ним делать?
А когда я в Database пытаюсь проставить ReadOnly:=True выскакивает ошибка: "Access violation ..."

Добавлено: 23 июн 2004, 07:50
Naeel Maqsudov
Не любой запрос в принципе может являться редакрируемым, т.е. допускать операции удаления, добавления и обновления (изменения) над набором записей, которые вернул данный запрос.

Это означает, что не при любом значении SQL можно сделать ReadOnly=True.

Во вмногом это зависит от базы, например, в Oracle, при определенных условиях, запрос объединяющий несколько таблиц является обновляемым, в Paradox - никогда. Однако в любом случае DBE должен позволять редактировать запрос вида

SELECT ... FROM t1 WHERE ... ORDER BY ..., если в select-е нет агрегатных функций (sum, avg, count и т.п.)

Добавлено: 07 ноя 2004, 23:36
Apophis
Если в Select присутствует ORDER BY - возвращаемый набор Read ONLY!

Добавлено: 09 ноя 2004, 07:46
Naeel Maqsudov
Apophis, база какая? А LiveQuery:=true пробовали?
В любом случае есть такая вешь как TUpdateSQL, который решает эту проблему, и делает запрос обновляемым.

Добавлено: 10 ноя 2004, 13:55
Apophis
База Парадокс, LiveQuery:=true; Но даже в книжках перечислены условия при которых возвращаемый набор имеет статус readOnly. Вот один из них - присутствие в в запросе условия сортировки.