Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > TIBQuery + DBMemo: редактирование записей


Автор: Данкинг 26.7.2009, 22:24
Лежат, значит, у меня на форме всякие DB-компоненты: DBMemo, DBDateEdit, DBEdit и т.п. Если подключать к ним AdoQuery, то через эти компоненты датасет запроса можно редактировать, и, соответственно, редакции сохраняются в таблице. А вот если подключить TIBQuery, то редактирование невозможно: эти компоненты делаются как будто read-only. Данные-то отображаются, но вот редактировать их не получается. В запросах просто выбраны все записи, т.е. select * from ....
Вопрос: ы? smile 

Автор: Bose 26.7.2009, 23:39
Данкинг, IBQUery сам по себе позволяет только читать данные.
Если хочешь редактировать, добавь TIBUpdateSQL, но он имеет некоторые ограничения(например, в запросах нельзя использовать хранимые процедуры). Лучше юзай TIbDataset.

Автор: Данкинг 26.7.2009, 23:44
Цитата(Bose @  27.7.2009,  00:39 Найти цитируемый пост)
Если хочешь редактировать, добавь TIBUpdateSQL

Добавил... А как с ним работать-то? smile Куда там DbMemo привязывать?

Добавлено через 1 минуту и 5 секунд
Цитата(Bose @  27.7.2009,  00:39 Найти цитируемый пост)
Лучше юзай TIbDataset. 

Ну так а запросы как я в него впихну...

Автор: Bose 27.7.2009, 03:13
Цитата(Данкинг @  26.7.2009,  22:44 Найти цитируемый пост)
Добавил... А как с ним работать-то? smile Куда там DbMemo привязывать?


Смотри свойства
UpdateSQL, DeleteSQL, InsertSQL и RefreshSQL. 

А также прочитай http://www.ibase.ru/devinfo/ibx.htm - там есть ответы на все твои вопросы(даже ещё не заданные).   smile 

Автор: Данкинг 27.7.2009, 10:44
Цитата(Bose @  27.7.2009,  04:13 Найти цитируемый пост)
Смотри свойства

Ну так обычные стринглисты... smile А этот IBUpdateSQL даже привязать некуда ,т.е. свойства вроде "datasource" не имеется. 

Цитата(Bose @  27.7.2009,  04:13 Найти цитируемый пост)
А также прочитай это - там есть ответы на все твои вопросы(даже ещё не заданные).

ibase.ru не открывался как вчера, так и сегодня не открывается. Или это только у меня?

Цитата

Надо у компонента TIbQuery указать свойство UpdateObject равным IBUpdateSQL1 (имя компонента IBUpdateSQL).
При модификации IbQuery будет автоматически вызываться твои deleteSQL, insertSQL, updateSQL. 

 smile 

Но в любом случае DbMemo неактивным остаётся. В общем, проще кинуть обычные Memo и вручную апдейтить. smile 

Автор: former 27.7.2009, 12:43
Цитата(Данкинг @  27.7.2009,  10:44 Найти цитируемый пост)
Ну так обычные стринглисты... smile А этот IBUpdateSQL даже привязать некуда ,т.е. свойства вроде "datasource" не имеется. 

Данкинг, используй IBDataSet. Заполни SelectSQL, UpdateSQL, DeleteSQL, InsertSQL и RefreshSQL.
По двойному клику появится список полей. В контекстном меню выбери Add all fields. Кидаешь на форму DataSource (привязываешь его к IBDataSet) и DBMemo (указываешь DataSource и FieldName). 

Автор: Данкинг 27.7.2009, 13:44
Цитата(former @  27.7.2009,  13:43 Найти цитируемый пост)
IBDataSet

Ну а пересортировывать, выбирать по условию? ИМХО, с Датасетом - извращение не меньшее, чем внесение изменений вручную, как я хотел. Я просто думал, как-то с IBQuery можно сиё проделать.

Впрочем, с IBDataSet редактрование тоже отключено, как и с IBQuery.

Автор: Akella 27.7.2009, 18:23
Смотря какой запрос

Автор: former 27.7.2009, 21:10
Цитата(Данкинг @  27.7.2009,  13:44 Найти цитируемый пост)
Ну а пересортировывать, выбирать по условию? ИМХО, с Датасетом - извращение не меньшее, чем внесение изменений вручную, как я хотел.

Используй фильтры в IBDataSet. А сортировку средствами таблицы организуй, например.
Цитата(Данкинг @  27.7.2009,  13:44 Найти цитируемый пост)
Впрочем, с IBDataSet редактрование тоже отключено, как и с IBQuery.

Чего, чего? Уже несколько раз написали, редактируй свойства SelectSQL, UpdateSQL, DeleteSQL, InsertSQL и RefreshSQL.

Автор: Akella 27.7.2009, 21:17
Да на форуме уже есть темы про редактируемые/нередактируемые НД.

Автор: Данкинг 27.7.2009, 21:24
Цитата(former @  27.7.2009,  22:10 Найти цитируемый пост)
А сортировку средствами таблицы организуй, например.

Н-да. smile В общем, с UpdateSQL суть ясна, но для себя делаю вывод, что лучше использовать обычные Edit, Memo и т.п., в которые вручную загонять данные. smile Всем спасибо за участие. smile 




Автор: Bose 29.7.2009, 03:04
сначала включи мозги, и только потом запускай Delphi и всё получится. Проблема-то тривиальная.  smile 

Цитата(Данкинг @  27.7.2009,  12:44 Найти цитируемый пост)
Ну а пересортировывать, выбирать по условию? ИМХО, с Датасетом - извращение не меньшее, чем внесение изменений вручную, как я хотел. Я просто думал, как-то с IBQuery можно сиё проделать.

Всё возможно. И с датасетом и с IBQuery + IBUpdateSQL. Смотри у IBQuery свойство UpdateObject (кажется). 
Свойства UpdateSQL, DeleteSQL, InsertSQL и RefreshSQL заполнять придётся в любом случае. Точнее, достаточно заполнить только те, которые нужны. 

Автор: Akella 29.7.2009, 08:05
На сколько я помню, то когда-то в справке вычитал, что при вызове IBQuery.Update или IBQuery.Edit срабатывает код у IBQuery.IBUpdateSQL.SQL

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)