Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.28;
Скачать: CL | DM;

Вниз

Проблемы с документом (связка master-detail)   Найти похожие ветки 

 
MMF ©   (2003-07-25 10:52) [0]

Форма документа содержит шапку и грид. Вопросы у меня, безусловно, детские:
1) Как обеспечить возможность отката изменений при условии, что могут одновременно вводить/редактировать несколько документов. Насколько я понимаю, CancelUpdates откатит все изменения для общих для этих доков датасетов.
2) Как правильно делать пересчет значений в полях (к примеру, Сумма=Цена*Кол-во) при изменении любого поля (Цена, Кол-во) и не создавать рекурсию (OnChange/OnFieldChanged).
3) Как побороть добавление новой записи при хождении по гриду вниз.
Было бы совсем замечательно, если бы кто-нить подкинул ссылку/ образец кода/подсказал верный путь для создания класса некоего универсального документа. Заранее благодарю за помощь.


 
Andrey_1   (2003-08-01 16:21) [1]

сделай поиск в инете по словам Delphi5vol1.pdf или Delphi5vol2.pdf там на эту тему есть данные
1 - 5метров, 2 - 6 метров.если инет быстрый - качай

Всего наилучшего


 
MsGuns ©   (2003-08-01 16:39) [2]

Прежде всего основное - могут ли один документ вводить (править) более одного узера одновременно ? От ответа на это вопрос зависит очень многое. Предположим, что не могут (т.е. документ типа накладной или счета-фактуры, с которым одновременно может работать реально только один чел)

1. Откат. За исключением небольшого кол-ва спец.случаев предпочтительно коммитить каждую введенную-измененную строку с соотв. пересчетом агрегатных полей по документу и коррекции их в мастере. В этом случае макс. потеря - одна запись.
Аргумент простой: проще удалить ручками неверно введенные записи, чем повторно ввести их еще раз в случае потери при откате или сбоя ПК.

2. Пересчет сумм. Прежде всего выяснить необходимость хранения в БД таких полей. Если они всегда калькулируются, то я бы вообще их не хранил. В другом случае (например, в накладных прихода, где сумма совсем не обязательно = цена*кол-во) - авторасчет на клиенте, как и возможность ручной коррекции узером

3. Способов несколько. Если редактить узер должен только в гриде, то обрабатывать соотв. события НД (AfterScrool,BeforePost,BeforeDelete,BeforeInsert,..) и играть опцией грида ReadOnly или другими
Лично я предпочитаю все коррекции давать делать не в DB-Aware контролах, расположенных в удобном виде на отд.панельке, показываемой в соотв. месте грида после нажатия узером соотв. кнопульки "редактировать", "добавить", "удалить" и т.д. в контр.панеле проги.
На панельке редактирования помимо контролов типа TEdit есть кнопки "Записать" и "Отменить". Удобно, кстати, делать проверки правильности введенных данных не дергая по-напрасну сервер.
А вообще, создание интерфейса - вещь, ИМХО, одна из самых тонких и зависит от очень большого кол-ва самых разных факторов



Страницы: 1 вся ветка

Текущий архив: 2003.08.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
6-92166
Bagroff
2003-06-22 15:18
2003.08.28
IE


14-92263
Winam
2003-08-07 19:09
2003.08.28
Отправка SMS


1-92102
Berezne
2003-08-15 14:16
2003.08.28
Как отобразить полную дату в Report е?


9-91966
Призрак_Коммунизма
2003-02-27 07:48
2003.08.28
Где скачат спрайты в инете?


3-91980
Ш-К
2003-08-01 12:37
2003.08.28
Преобразоватие типов.