Главная страница
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.015 c
3-92027
Separator
2003-08-03 07:55
2003.08.28
Динамическое добавление Алиасов


7-92268
Mortal
2003-06-14 13:14
2003.08.28
Несколько hook-ов в одной dll


3-92002
shark_mas
2003-08-05 22:46
2003.08.28
Как работать с field query?


4-92318
Acidy
2003-06-26 15:34
2003.08.28
Виндовые иконки ...


3-92055
Fantasy
2003-08-03 23:00
2003.08.28
Ttable