Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Delphi

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

Ответ
 
Опции темы Опции просмотра Language
Старый 12.04.2009, 19:54   #1
Неактивный пользователь
 
Пол:Мужской
Регистрация: 25.03.2009
Сообщений: 7
Репутация: 0
По умолчанию Редактирование записи БД

Посоветуйте спецы, как лучше организовать редактирование записи БД

Имеем подключение к 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
JakobVal вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: intel core i5-12400 ценамини барн домМебельный магазин: стул бостон с мягким сиденьем купить - Переходи на сайт!Магазин бытовой техники: samsung стиральная машина ww70agas22axld - переходи на сайт ТАЙМТВ!приточная установка utr 50-25 v1.22-037*30.r (подвесная)


Старый 13.04.2009, 11:48   #2
vlukarev
Неактивный пользователь
 
Пол:Мужской
Регистрация: 13.04.2009
Сообщений: 1
Репутация: 0
По умолчанию Re: Редактирование записи БД

Лучше всего использовать следующие темы:
1. Загрузка данных, которые будут отредактированы (с SQLcomponent).
2. Показать данные о различных формах с 2 кнопки "ОК" и "Отмена"
3. В зависимости от нажатой кнопку обновить базу данных или ничего не делать.

Это самый безопасный способ. Также нет связи с базой данных, если изменить данные.
vlukarev вне форума
 
Ответить с цитированием Вверх
Старый 13.04.2009, 16:03   #3
Vasuha
Постоялец
 
Пол:Мужской
Регистрация: 13.03.2008
Адрес: Минск
Сообщений: 257
Репутация: 231
По умолчанию Re: Редактирование записи БД

Цитата:
Сообщение от vlukarev Посмотреть сообщение
4) Самый трудоемкий в сфере организации. Он описан неодднократно в книгах и в интернете
- на модальную форму ложаться стандартные елементы редактирования
- перед открытием окна редактирования выполняется команда Table.Edit
- элементам редактирования присваиваются значания полей записи
- по кнопке "Ок" загоняем измененные данные в поля записи и выполняем Table.Post
- по кнопке "Cancel" просто выполняем Table.Cancel

В чем проблема реализовать именно так, за сеанс редактирования обработка только одной записи происходит. Пока не будет вызван метод post или не перейдете на другую запись, текущая не будет сохранена.
__________________
Vasuha вне форума
 
Ответить с цитированием Вверх
Старый 17.04.2009, 13:00   #4
tomor
Постоялец
 
Аватар для tomor
 
Пол:Мужской
Регистрация: 05.02.2007
Адрес: Иваново
Сообщений: 290
Репутация: 646
По умолчанию Re: Редактирование записи БД

Я не использую компоненты типа Tdb.. . Беру стандартные, закачиваю туда данные, а потом отправляю, если надо. Наиболее надежный способ, правда ручками прийдется поработать, зато всегда уверен в результате.
tomor вне форума
 
Ответить с цитированием Вверх
Старый 29.05.2009, 17:08   #5
vizinform
Неактивный пользователь
 
Регистрация: 29.05.2009
Сообщений: 5
Репутация: 1
По умолчанию Re: Редактирование записи БД

А использовать режим CachedUpdates не пробовали?
vizinform вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование .torrent REAL_XLD P2P-системы & Soft 12 01.10.2009 07:31
Редактирование DVD alextk Просмотр, конверторы и монтаж Аудио&Видео 4 28.08.2008 16:33
Редактирование DVD Zepp Запись CD и DVD 2 16.01.2008 21:04
Редактирование инсталляторов fire4x Архив 8 21.04.2007 18:00
Редактирование DVD slonidze Архив 3 28.08.2006 04:20

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 14:16. Часовой пояс GMT +3.


Copyright ©2004 - 2026 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.06088 секунды с 11 запросами