![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отменить Post при переходе на другую строку? [D5]
Бульбаш © (2005-01-18 17:20:00)Ситуация следующая. Возникла необходимость редактировать данные в гриде (QuantumGrid). Ранее пользовал редактирование записи в отдельном окне. К гриду цепляю вьюху. Необходимо сохранять изменения только при нажатии опред.клавиши, а Post дается как только уйдешь с редактируемой записи. Как этого избежать?
Erik1 (2005-01-19 12:05:00) [1]Тут все просто, предлагается использовать связку TClientDataSet и TProvider + TOraStoredProc. TOraStoredProc можно заменить на любой DataSet.
Бульбаш (2005-01-19 11:58:00) [2]Я тут почитал хелпик, опишу что понял, а вы поправте по возможности.
1. CachedUpdates=True;(вносим изменения только в кэш)
2. ApplyUpdates и Commit для сохранения изменений и CancelUpdate
для отмены
3.CommitUpdates для очистки кэша.
В связи с этим еще пара вопросов. Насколько я понял можно использовать только редактируемый Dataset OraTable и монопольного захвата записи не будет, другой пользователь сможет также загрузить этот же модуль для редактирования? И не могли бы вы прояснить суть строки их хэлпа: Альтернативой кэширования при работе в сети является использование клиентского набора данных и компонента - провайдера.
Erik1 (2005-01-19 10:58:00) [3]to Johnmen
Памяти сейчас много, да и сколько мы под кеш захватим ну максимум 1Mb. По современым меркам это не память.
Johnmen (2005-01-19 10:16:00) [4]>Erik1 © (19.01.05 10:04) [10]
Если бы спросил у меня, то лично мне не нравится то, что активно захватываем память под кеш. Хотя вполне жизненный способ...
Johnmen (2005-01-19 10:05:00) [5]>ЮЮ © (19.01.05 09:58) [9]
Нет, не проще... Т.к. на этот момент он уже броузе...:)
Erik1 (2005-01-19 10:04:00) [6]to Бульбаш
А чем тебе ненравится [3] у нес таким образом вся система построена! Понятно, что для отмены надо использовать CommitUpdates; думал ты сам догадаешся. Если хочется сднлать все автоматически напиши свой клас на основе TList и загружай в него все DataSet после Load. Только отсортировать незабудь, чтобы мастер был выше детаил таблицы.
ЮЮ (2005-01-19 09:58:00) [7]А не проще в BeforeScroll сделать Сancel, если DataSet находится в режиме редактирования/вставки ?
Бульбаш (2005-01-19 09:39:00) [8]Пришел на работу, загрузил инет и вижу что нужны уточнения:
>Что это за "вьюха"? TTable, TQuery, что-то другое?
OraTable таблицей указываю оракловское редактируемое представление.
> Юзаем нафигатор ?
нет
>Заводишь флажок (boolean), который выставляешь/анализируешь, чтобы в BeforePost делать или нет Abort.
Т.е. при редактировании флаг выставлять на Abort, а при нажатии кнопки на Post?
Johnmen (2005-01-18 18:29:00) [9]>Бульбаш (18.01.05 17:20)
Заводишь флажок (boolean), который выставляешь/анализируешь, чтобы в BeforePost делать или нет Abort.
msguns (2005-01-18 18:12:00) [10]> Юзаем нафигатор ?
Ega23 (2005-01-18 17:35:00) [11]К гриду цепляю вьюху.
Что это за "вьюха"? TTable, TQuery, что-то другое?
Бульбаш (2005-01-18 17:32:00) [12]Можно подробнее? Использую ODAC. Коллеги, пишущие на оракловском девелопере грят что у них таких проблем с блоком данных нет, не верится что нет решения в делфях
Erik1 (2005-01-18 17:29:00) [13]Если есть CachedUpdates то устанавливай в True, для настоящей записи в базу сделай ApplyUpdates.
Ega23 (2005-01-18 17:23:00) [14]К гриду цепляю вьюху.
Цепляй TClientDataSet
Соловьев (2005-01-18 17:21:00) [15]не редактировать в гриде