Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Редактирование наборов данных
|
|||
|---|---|---|---|
|
#18+
Вопрос следующий: Есть определённое количество таблиц в базе; Как нужно создавать формы, а точнее КАК ПРАВИЛЬНО будет создать формы для редактирования этих таблиц ?, - нужно ли дополнительно составлять Views, или сразу редактировать таблицы ? - Нужно ли составлять редактируемые select на основе нескольких таблиц ? .... как вообще правильно организовать множество форм с редактируемыми наборами данных ??? Хотелось бы услышать как реально это люди уже делали, а не догадки и непроверенные предложения (у меня самого таких мыслей полно) Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 13:47 |
|
||
|
Редактирование наборов данных
|
|||
|---|---|---|---|
|
#18+
Как нужно создавать формы, а точнее КАК ПРАВИЛЬНО будет создать формы для редактирования этих таблиц ?, - нужно ли дополнительно составлять Views, или сразу редактировать таблицы ? А Билл Гейтс его знает, как правиильно. Я, например, когда хочу реадктировать запись в отдельной форме, перекрываю вызов Insert/Update динамически создаю экземпляр модальной формы редактирования, в которую передаю текущий DataSet: Код: plaintext Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. В OnShow делаю что - то похожее на: Код: plaintext 1. 2. 3. 4. 5. 6. 7. На форме лежат внизу справа пара кнопок OK и Cancel, с соответственно настроенными Kind. В OnCloseQuery принимается решение на то, что делать с записью после редактирования: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Естественно, все эти дела делаем в базовой форме, от которой наследуем свою, под конкретный набор данных, и размещаем на нем DB - Aware контролы. Т.Е. чаще всего никакого кода писать не приходится., толко мышко поводить. Ну, естественно, для всяких там Lookup - справочников приходится повозиться. - Нужно ли составлять редактируемые select на основе нескольких таблиц ? .... Использую компонент FIBpDataSet. Он включает в себя 4 SQL - предложения - для select, insert, update, refresh - операций. То же самое умеет IBX - TIBDataSet. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 14:16 |
|
||
|
Редактирование наборов данных
|
|||
|---|---|---|---|
|
#18+
авторКАК ПРАВИЛЬНО будет создать формы для редактирования этих таблиц ? 1 Придумываю select для выборки данных из таблицы (или таблиц). 2 Создаю DataWindow object на основе этого selecta 3 В DataWindow Painter'е определяю Update Properties 4 В нужную форму кидаю DataWindow control (DW), указываю, что работать буду с созданным DataWindow object'ом, подключаю к объекту транзакции через setTransObject(sqlca) Для выборки данных использую команду Retrive(...) , где вместо точек использую списак аргументов, если они конечно же используются в Select'e. Для добавления новых строк использую InsertRow(<rowNum>) Для удаления deleteRow(<rowNum>) Для сохранения изменений Update() Заполнение новых данных по полям или их редактирование идет естественно в самом DW. Только рекомендую перед вызом update() обязательно выполнить acceptText() , т.е. сбросить буфер редактирования в Primary буфер DW. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 15:14 |
|
||
|
Редактирование наборов данных
|
|||
|---|---|---|---|
|
#18+
Guest_2 авторКАК ПРАВИЛЬНО будет создать формы для редактирования этих таблиц ? 1 Придумываю select для выборки данных из таблицы (или таблиц). 2 Создаю DataWindow object на основе этого selecta 3 В DataWindow Painter'е определяю Update Properties 4 В нужную форму кидаю DataWindow control (DW), указываю, что работать буду с созданным DataWindow object'ом, подключаю к объекту транзакции через setTransObject(sqlca) Для выборки данных использую команду Retrive(...) , где вместо точек использую списак аргументов, если они конечно же используются в Select'e. Для добавления новых строк использую InsertRow(<rowNum>) Для удаления deleteRow(<rowNum>) Для сохранения изменений Update() Заполнение новых данных по полям или их редактирование идет естественно в самом DW. Только рекомендую перед вызом update() обязательно выполнить acceptText() , т.е. сбросить буфер редактирования в Primary буфер DW. очень интересно.... а InsertRow(<rowNum>) deleteRow(<rowNum>) можно поподробнее написать их алгоритм ???? ихже можно в буфере обмена использовать для вставки, копирования удаления нескольких строк ???, или я чтото не доганяю ??? insertr ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 15:24 |
|
||
|
Редактирование наборов данных
|
|||
|---|---|---|---|
|
#18+
авторочень интересно.... а InsertRow(<rowNum>) deleteRow(<rowNum>) можно поподробнее написать их алгоритм ???? ихже можно в буфере обмена использовать для вставки, копирования удаления нескольких строк ???, или я чтото не доганяю ??? insertr Для пометки и работы с множеством записей в DataWindow есть специальные методы. Возможно Вы не поняли - буферы в DataWindow у PowerBuilder не имеют никакого отношения к буферу обмена, это специальные буферы для организации работы отложенных изменений данных и фильтра. P.S. В отличие от Guest_2 я вместо пункта 4 и дальнейших описанных действий обычно наследуюсь от нужного по функциональности и отработанного базового класса формы, в котором уже есть DataWindow Control и указываю ему просто, с каким описанным в пункте 2 DataWindow нужно работать. Вся остальная логика по получению, сохранению, добавлению, изменению, сортировки и фильтрации данных уже в базовой форме есть и остается только дописать только специфичную для данной формы логику. Единственное, где приходиться самому кидать DataWindow Control и прописывать полностью логику интерфейса - это в страничках визардов. При желании конечно дописать у базового визарда класс-контроллер для автоматизации управления DataWindow страничек не долго, однако кроме усложнения логики это ничего не даст, так как обычно логика там везде разная и быстрее в коде вызвать методы RETRIEVE и UPDATE, чем писать, тестировать и везде цеплять в общем то бесполезный здесь управляющий класс. Вместо этого базовый класс визарда централизованно управляет логикой визарда и в зависимости от ситуации и действий пользователя производит нужные действия и оповещения страничек путем вызова их событий, где уже и можно прописать нужную логику для обработки затребованной визардом ситуации (или не прописать, если страничка визарда не отслеживает это действие и доверяет по умолчанию провести действие самому визарду). IMHO технология ООП + DataWindow в PowerBuilder дает неплохие результаты, при условии конечно , что хорошо знаешь обе технологии). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 16:35 |
|
||
|
Редактирование наборов данных
|
|||
|---|---|---|---|
|
#18+
DataWindow - это фича Power Builder? А то мы с трактором на Дельфях работаем... Или я ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 16:47 |
|
||
|
Редактирование наборов данных
|
|||
|---|---|---|---|
|
#18+
Угу, PowerBuilder. Правда по идее теперь у PowerBuilder 10 есть DataWindow.NET, который будет работать опять же по идее и в Delphi.NET . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 17:24 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=165&tid=1546348]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 329ms |

| 0 / 0 |
