DBGrid и добавление записей: отображение изменений в НД

A.K.
Дата: 08.10.2006 17:51:47
TDBGrid связан с TQuery, содержащим простой запрос на выбору из таблицы. RequestLive=true. СУБД Sybase ASA 8.
Задача: редактировать данные в НД через грид.
Обновление данных происходит без проблем. А вот при вставке происходит следующее: после выполнения Post (как программно, так и автоматически при переходе пользователем на другую строку в гриде) вновь вставленная строка перескакивает в гриде на место другой строки, и при этом строка, отображавшаяся ранее на этом месте, из грида "исчезает". Т.е. например, было 8 строк, вставили еще одну, после Post снова отображается 8 - все за исключением одной из ранее существовавших.
В БД все происходит правильно, и если переоткрыть НД, то грид снова будет отображать все строки. Проблемы именно с отображением в гриде изменений НД.
Можно ли решить проблему отображения в гриде без переоткрытия НД после каждого Post?
v314156
Дата: 08.10.2006 18:12:49
Попробуй refresh на TQuery после пост и, возможно, repaint гриду
Ramin Hashimzade
Дата: 08.10.2006 19:47:52
Для АСА используй компонент SaVCL!

----
www.hramin.jino-net.ru
Картинка с другого сайта.
A.K.
Дата: 08.10.2006 20:02:28
Хорошие компоненты, пробовал. Но в моем случае использование стандартного TQuery - это внешнее ограничение, на которое я не могу повлиять :(

Кстати, сделать TQuery.Refresh, как советует v314156, не получается - говорит, что невозможно, т.к. отсутствует уникальный индекс. При этом НД успешно работает в режиме RequestLive, что было бы невозможно при отсутствии в таблице первичного ключа.
Dimitry Sibiryakov
Дата: 09.10.2006 10:38:09

A.K.

При этом НД успешно работает в режиме RequestLive, что было бы
невозможно при
отсутствии в таблице первичного ключа.

А как значение ПК у тебя назначается для новой записи?

Posted via ActualForum NNTP Server 1.3

A.K.
Дата: 09.10.2006 11:20:16
Dimitry Sibiryakov
А как значение ПК у тебя назначается для новой записи?


Значение ключа генерируется специальной хранимой процедурой. Ее значение пробовал присваивать полю ключа по событиям OnNewRecord, BeforePost и т.п. - поведение грида от этого не изменилось. Во всех случаях все добавленные пользователем через грид строки успешно и с нормальными значениями ключей записались в БД, но на экране, пока не выполнишь перезапрос, строки поочередно "пропадают".
Я еще могу понять, почему новые строки после Post "перескакивают" на другую позицию - дело в том что ключи в БД varchar-ные, фактически число с буквенным префиксом, и строки в НД, даже если не установлена явная сортировка, отсортировываются по значению первичного ключа. Но "пропадание" с последующим появлением - совсем не годится :(
Dimitry Sibiryakov
Дата: 09.10.2006 11:24:53

A.K.

Значение ключа генерируется специальной хранимой процедурой. Ее значение
пробовал присваивать полю ключа по событиям OnNewRecord, BeforePost и
т.п. - поведение грида от этого не изменилось.

OnNewrecord - правильное место. Что-то еще у тебя не так.

Posted via ActualForum NNTP Server 1.3