![]() |
|
![]() ![]() ![]() |
|
Jakob |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 7.4.2009 Репутация: нет Всего: нет |
Посоветуйте спецы, как лучше организовать редактирование записи БД
Имеем подключение к BD и таблицу Table Определенные поля (3 шт) записи выводятся в Grid через источник TableSrc (TDataSource) Полная запись имеет порядка 20 полей Редактирование записи будет производиться в модальной форме В голове рродилась идея просто редактировать данные с помощью компонет TDBEdit, TDBLookupComboBox, etc... привязанных к Table через TableSrc Все как бы хорошо, только на модальной форме есть пара кнопок "Ok" и "Cancel" Раз копоненты редактирования напрямую привязаны к таблице - то изменение данных в модальной форме сразу отображаются в Grid-е С "Ok" все понятно.... ![]() Возникает вопрос как обработать кнопку "Cancel" - т.е. вернуть данные измененные пользователем в первоначальный вид 1) Сделать RollBack - закрывает BD. Приходиится переоткрывать вручную. 2) Сделать RollBackRetaining данные данной транзакции отменяются. Но. При редактировании в модельном окне данные отобразились в Grid. И после закрытия модального окна омеют измененный вид в Grid-е. Хотя в БД изменения не провелись (отменились) Эти два метода конечно можно доработать - но для малых объемов. Переоткрывать постоянно большую таблицу, да еще и по сети считаю не корректно... 3) Пришел в голову пока писал первые два. Может открывать отдельную транзакцию для редактирования с ее собственными Commit и RollBack 4) Самый трудоемкий в сфере организации. Он описан неодднократно в книгах и в интернете - на модальную форму ложаться стандартные елементы редактирования - перед открытием окна редактирования выполняется команда Table.Edit - элементам редактирования присваиваются значания полей записи - по кнопке "Ок" загоняем измененные данные в поля записи и выполняем Table.Post - по кнопке "Cancel" просто выполняем Table.Cancel В этом методе все наверное будет работать и все прозрачно и понятно. Но вот как быть в таких случаях с полями связки Master-Detail Может у кого есть мысли по этому поводу и советы по существу Буду признателен Заранее спасибо Валицкий Яков Германович ICQ: 60289599 |
|||
|
||||
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
примерно так:
Это сообщение отредактировал(а) Akella - 12.4.2009, 21:32 |
||||
|
|||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
немного не так перед открытием окна редактирования считываем все значения в элементы управления/ввода на модальной форме, в момент закрытия записываем данные в базу из элементов управления |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |