Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как отменить 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]

не редактировать в гриде


Наверх

Титульная страница Поиск, карта сайта Написать письмо