|
|
|
Как лучше реализовать добавление новых значений в dddw ?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть dw . На нем колонка со стилем dddw. пользователь хочет , чтобы при вводе несуществующей в dddw записи она автоматически попадала в БД и dddw "перерисовывалось" с учетом новой записи. Как лучше закодировать такое поведение , какие события использовать? В инете предлагают ItemChanged или ItemError. Может кто сталкивался с примером такого решения , посоветуйте , pls ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 18:37 |
|
||
|
Как лучше реализовать добавление новых значений в dddw ?
|
|||
|---|---|---|---|
|
#18+
Ну если dddw настолько примитивен, что имеет дело только с двумя колонками, то можно и в ItemChanged. Подразумевается, что dddw allows edit. В общем то это плохая практика - "пользователь хочет , чтобы при вводе несуществующей в dddw записи она автоматически попадала в БД и dddw "перерисовывалось" с учетом новой записи". А что пользователь подразумевает под вводом - код или дисплей значение? Что будешь писать в БД - одно и то же для кода и дисплей значений? А что если то что введено НЕсовпадает ни с каким кодом, но совпадает с каким то дисплей значением? Будешь хашировать? То есть продумать надо, что же ты на самом деле делать будешь, а потом об имплементации спрашивать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 23:20 |
|
||
|
Как лучше реализовать добавление новых значений в dddw ?
|
|||
|---|---|---|---|
|
#18+
Случай на самом деле , я думаю , распространенный. Основное dw служит для ввода некого документа . у документа есть атрибут - клиент. для выбора клиента используется dddw. с помощью pfc осуществляется автопоиск в dddw при вводе пользователем символов с клавиатуры. в dddw отображается название клиента , а в документ вносится его код. Edit для dddw allowed. так вот . нужно сделать так , чтобы : если то название , которое ввел пользователь не имеется в dddw , возник вопрос , вводить ли нового клиента в базу. если ответ да , происходит insert в базу и перезапрос dddw. я так это себе представляю. но как это лучше реализовать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 11:47 |
|
||
|
Как лучше реализовать добавление новых значений в dddw ?
|
|||
|---|---|---|---|
|
#18+
Мне кажется, а точнее я практически уверен, что в данном случае с клиентами предлагаемый Вами подход порочен изначально. Если не вдаваться в теорию БД про нормальные формы и первичные и внешние ключи, практически очень быстро у Вас появятся большое количество вариантов названия одного и того же клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 12:20 |
|
||
|
Как лучше реализовать добавление новых значений в dddw ?
|
|||
|---|---|---|---|
|
#18+
Как делаю я Пример, есть таблица операций, связанная внешним ключем (поле payee_id типа integer) с таблицей имен клиентов. В DW операций поле payee_id привязано к DDDW со справочником имен. Для него стоит Allow Editing = True, Empty String is Null = True,Required = True. Справочник в свою очередь привязан к кэшу справочных данных. Факт того, что пользователь ввел имя, отсутствующее в DDDW отлавливается в событии ItemError. В событии ItemEerror проверяется в каком поле произошла ошибка и если в payee_id, то вызывается модальное окно с новой записью клиента. Как параметр в него передается только что введенный текст, который становится именем клиента. Юзер вводит необходимые доп. данные и жмет OK или Отмена. Если OK отрабатывается логика сохранения в базе нового клиента и возвращается payee_id нового клиента. Эта же логика обновляет данные в кэше справочных данных, соответственно обновится и DDDW. Код в ItemError проверяет возвращенное значение и если не ноль, то делает this.Post SetItem(row, column, ll_payee_id) // Это чтобы не возиться с поиском новой записи в DDDW. и обязательно Return 2 - это означает принять введенные данные. Если юзер нажал в форме Отмена или произошла ошибка при сохранении новой записи в базе, в ItemError делаем Return 1 - это возвращает юзера в поле payee_id, для исправления введенного текста. Если ошибки в DW другого рода и не связаны с полем payee_id делаем Return 0 - это выводит сообщение об ошибке Если дочитал до конца, еще добавлю что как параметр в программе предусмотрено автоматическое добавление имени клиента в базу с проверкой на дублирование имен. Успехов! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:23 |
|
||
|
Как лучше реализовать добавление новых значений в dddw ?
|
|||
|---|---|---|---|
|
#18+
2 urvas То что будут появляться записи об одном и том же клиенте с разными именами - это в любом случае, независимо от способа реализации интерфейса. Для это у меня существует механизм объединения записей в справочных таблицах. Но это отдельная тема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:27 |
|
||
|
Как лучше реализовать добавление новых значений в dddw ?
|
|||
|---|---|---|---|
|
#18+
2rcryo Большое спасибо ! Это именно то , что я хотел услышать : хорошее описание вполне подходящего для меня решения ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 14:22 |
|
||
|
Как лучше реализовать добавление новых значений в dddw ?
|
|||
|---|---|---|---|
|
#18+
Вот , если кому интересно , полный скрипт того , что в итоге пока получилось : (событие ItemError) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 18:45 |
|
||
|
Как лучше реализовать добавление новых значений в dddw ?
|
|||
|---|---|---|---|
|
#18+
Выглядит это ужасающе :-) 1) непонятно зачем это в ItemError, а не в ItemChanged 2) Если твой dddw умеет ретривить из этих таблиц или у тебя есть dataobject, который умеет это делать, то почему не использовать его для update, в том числе и с Identity column, вместо того чтобы писать этот уродливый embedded SQL... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 19:26 |
|
||
|
Как лучше реализовать добавление новых значений в dddw ?
|
|||
|---|---|---|---|
|
#18+
2 Филипп 1) в ItemError , тк это событие срабатывает , когда данные , введенные пользователем , не присутствуют в dddw 2) у меня запрос-источник для dddw не обновляемый . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 19:50 |
|
||
|
Как лучше реализовать добавление новых значений в dddw ?
|
|||
|---|---|---|---|
|
#18+
Вовику меня запрос-источник для dddw не обновляемый . А что мешает его сделать обновляемым? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 20:03 |
|
||
|
|

start [/forum/topic.php?fid=15&fpage=100&tid=1338927]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 9ms |
| total: | 131ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...