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


Автор: napTu3aH 8.12.2004, 18:16
При запросе нужно чтобы вместе с полями существующими в БД возвралось еще одно поле, значения которого могли бы редактироваться в BDGrid, но не хранились в БД.
Реально такое сделать ?

Т.е. запрос (MSSQL) имеет вид : 'Select field1, field2, 0 As field3 from table'
После этого выставляю в DBGrid'е у field3 свойство Readonly в false.
Значение изменяется, но при потери фокуса ячейкой в ней восстанавливается 0 (значение которое вернул запрос для этого поля ), а хотелось бы, чтобы оно сохранялось.



Прочитал, что DBGrid не хранит данные, а только отображает.

P.S.
Что за дурацкая привычка сначала постить, а потом читать ? smile

Автор: Medved 9.12.2004, 09:33
НД, возвращаемый TQuery нельзя редактировать, за исключение некоторых случаев.
Вариантов решения много.
Навскидку - можно копировать НД в память (MemTable из RxLib). Если непонятно, могу объяснить более обстоятельно.

Автор: Dimich 9.12.2004, 09:37
Как вариант решения могу предложить следующий алгоритм (конечно не совсем удочный):
1. Данные, выбранные запросом поместить в массив (динамический)
2. Отображать данные DBGrid'om из массива
3. При изменении ячейки записывать ее если надо в БД и массив

Алгоритм я не проверял, но должен работать

Автор: Alex 9.12.2004, 09:51
napTu3aH, Хотелось бы узнать длящего вообще вы это хотите делать потому как есть подозрение, что вашу задачу можно решить иначе.

Но если уж действительно нужно делать именно так, то можно воспользоваться ADODataSet и поиграться с его событием BeforeEdit.

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