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

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Pepper
Сообщения: 33
Зарегистрирован: 21 фев 2004, 23:50
Откуда: Мурманск
Контактная информация:

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

Заранее благодарен!
maxrus
Сообщения: 5
Зарегистрирован: 19 июн 2004, 12:36
Контактная информация:

если у тебя запрос не редактируемый то придется использовать SQL запрос типа
INSERT INTO database_name (fiel_name1,field_name2...) VALUES (val1,val2...)
//////////
где val1 например это 'иванов' т.е. тто что надо вставить
maga
Сообщения: 1
Зарегистрирован: 19 июн 2004, 14:12
Контактная информация:

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

форма такая:
insert into имя_таблицы(здесь, столбы, таблицы) values (здесь, данные, если, 'строковые' )
дальше в этом духе :)
maga from gunib
Pepper
Сообщения: 33
Зарегистрирован: 21 фев 2004, 23:50
Откуда: Мурманск
Контактная информация:

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

А что значит "не редактируемый запрос"? ЧТо с ним делать?
А когда я в Database пытаюсь проставить ReadOnly:=True выскакивает ошибка: "Access violation ..."
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Не любой запрос в принципе может являться редакрируемым, т.е. допускать операции удаления, добавления и обновления (изменения) над набором записей, которые вернул данный запрос.

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

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

SELECT ... FROM t1 WHERE ... ORDER BY ..., если в select-е нет агрегатных функций (sum, avg, count и т.п.)
Apophis
Сообщения: 2
Зарегистрирован: 07 ноя 2004, 23:33

Если в Select присутствует ORDER BY - возвращаемый набор Read ONLY!
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Apophis, база какая? А LiveQuery:=true пробовали?
В любом случае есть такая вешь как TUpdateSQL, который решает эту проблему, и делает запрос обновляемым.
Apophis
Сообщения: 2
Зарегистрирован: 07 ноя 2004, 23:33

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