Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / custom UPDATE / 16 сообщений из 16, страница 1 из 1
01.02.2005, 11:53
    #32894170
JustVas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
Каким образом делается логика обновления БД, если стандартных средств (Stored Procedures & Update ... Set ...) не хватает (выбор процедуры зависит от введенных данных)?

PB10, Oracle9
...
Рейтинг: 0 / 0
01.02.2005, 12:05
    #32894216
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
JustVasвыбор процедуры зависит от введенных данных
Выбор процедуры для сохранения? Ну напишите тогда процедуруы, которые будут вызывать соответствующие процедуры для сохранения, в зависимости от введенных данных, и подключите их к DataWindow.
...
Рейтинг: 0 / 0
01.02.2005, 12:18
    #32894264
JustVas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
Ну напишите тогда процедуруы, которые будут вызывать соответствующие процедуры для сохранения, в зависимости от введенных данных, и подключите их к DataWindow.
Подгонять серверную часть под клиентскую несколько нетактично, imho... Это задача клиента сделать выбор. Кроме того, клиенту кроме вызова серверной процедуры часто приходится делать свои клиентские дела ;) В OracleForms это делалось пререкрытием событий (тиггеров) On-Update, On-Insert, On-Delete. В PB есть что-то подобное или реализован какой-то другой механизм?
...
Рейтинг: 0 / 0
01.02.2005, 12:41
    #32894345
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
авторПодгонять серверную часть под клиентскую несколько нетактично, imho...
По-моему это называется перенос логики на сервер. А так у вас получается - половина здесь, а половина там. Почему бы и оставшуюся часть на сервер не вынести? Я бы не назвал это подгонкой серверной части под клиентскую...
...ну или тогда динамически меняйте процедуру для работы с данными в DataWindow.
...
Рейтинг: 0 / 0
01.02.2005, 13:44
    #32894561
Сотников
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
Код: plaintext
1.
2.
3.
<DW Control Name>.Modify("DataWindow.Table.Update.Arguments=''<sp column>',COLUMN=('dw column',<ORIG or NEW>,<IN,OUT or INOUT>)' ")

<DW Control Name>.Modify("DataWindow.Table.Update.Method='<Stored Procedure Name>' ")
подойдет?
...
Рейтинг: 0 / 0
01.02.2005, 14:06
    #32894644
Andyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
Не очень правильно, но сделать можно: используйте событие DataWindow - SQLPreview. Можно менять текст запроса, который будет отправлен на сервер при обновлении данных.
...
Рейтинг: 0 / 0
01.02.2005, 14:12
    #32894660
JustVas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
подойдет?
Вполне. Только на какое событие это повесить? Ведь выбор процедуры зависит от строки к строке...
...
Рейтинг: 0 / 0
01.02.2005, 14:22
    #32894698
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
Сотниковподойдет?
Кстати, именно это я и имел ввиду. А то вдруг кто подумает, что я советовал поцедуры в базе менять :)
...
Рейтинг: 0 / 0
01.02.2005, 14:57
    #32894835
Сотников
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
JustVas
подойдет?
Вполне. Только на какое событие это повесить? Ведь выбор процедуры зависит от строки к строке...

Так... низя...
Могу предложить следующий вариант:
1) делаете своё DW и работаете с ним.
2) создаёте дополнительно столько датасторов, сколько у вас хранимых процедур на Update, и привязываете эти процедуры к этим датасторам.
3) для Update копируете строки по какому то нужному вам критерию в имеющиеся датасторе и апдейтит их.
4) У вашего DW либо ретирив, либо ResetStatus
...
Рейтинг: 0 / 0
01.02.2005, 15:33
    #32894959
JustVas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
Так... низя...
Могу предложить следующий вариант:
1) делаете своё DW и работаете с ним.
2) создаёте дополнительно столько датасторов, сколько у вас хранимых процедур на Update, и привязываете эти процедуры к этим датасторам.
3) для Update копируете строки по какому то нужному вам критерию в имеющиеся датасторе и апдейтит их.
4) У вашего DW либо ретирив, либо ResetStatus
Опять же... Какое событие будет заниматься п.3? Об этом я и спрашиваю: есть ли функция, получающая управление для каждой изменяющейся(IUD) строки?
...
Рейтинг: 0 / 0
01.02.2005, 16:47
    #32895209
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
JustVasОпять же... Какое событие будет заниматься п.3? Об этом я и спрашиваю: есть ли функция, получающая управление для каждой изменяющейся(IUD) строки?
Дык сказали уже SQLPreview event, только как-то криво это получается, уж лучше все тогда из своего скрипта вызывать...
...
Рейтинг: 0 / 0
01.02.2005, 18:24
    #32895545
Сотников
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
JustVas
Так... низя...
Могу предложить следующий вариант:
1) делаете своё DW и работаете с ним.
2) создаёте дополнительно столько датасторов, сколько у вас хранимых процедур на Update, и привязываете эти процедуры к этим датасторам.
3) для Update копируете строки по какому то нужному вам критерию в имеющиеся датасторе и апдейтит их.
4) У вашего DW либо ретирив, либо ResetStatus
Опять же... Какое событие будет заниматься п.3? Об этом я и спрашиваю: есть ли функция, получающая управление для каждой изменяющейся(IUD) строки?

Не понимаю... какое событие? клик на кнопке "Сохранить" к примеру... и зачем знать какая изменяющая? при перемещении (в данном случае из DW в DS) строки сохраняют статусы и билдер будет генерить код для строк со статусом DataModified!
...
Рейтинг: 0 / 0
01.02.2005, 18:40
    #32895588
Andyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
Если очень хочется через процедуру - ну так напишите одну общую на все параметры и внутри нее делайте разводку логики и вызывайте остальные процедуры, какие нужны.
...
Рейтинг: 0 / 0
01.02.2005, 20:40
    #32895755
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
Локшин Марк JustVasОпять же... Какое событие будет заниматься п.3? Об этом я и спрашиваю: есть ли функция, получающая управление для каждой изменяющейся(IUD) строки?
Дык сказали уже SQLPreview event, только как-то криво это получается, уж лучше все тогда из своего скрипта вызывать...Давным-давно, когда компьютеры были большими... Гм... О чем это я? :-))
Так вот, фича, позволяющая в DW описывать обновляющие его хранимые процедуры, появилась не так давно, если мне не изменяет мой склероз - в версии 7.0... До этого, подобную функциональность рекомендовалось обеспечивать, описывая в событии SQLPreview вызовы хранимых процедур либо еще каким-то образом меняя логику изменения данных. Так что, не так уж и криво, IMHO.
Хотя, конечно,
Локшин Марк...процедуруы, которые будут вызывать соответствующие процедуры для сохранения, в зависимости от введенных данных, и подключите их к DataWindow.наиболее правильно
...
Рейтинг: 0 / 0
02.02.2005, 06:36
    #32895969
Guest_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
авторМогу предложить следующий вариант:
1) делаете своё DW и работаете с ним.
2) создаёте дополнительно столько датасторов, сколько у вас хранимых процедур на Update, и привязываете эти процедуры к этим датасторам.
3) для Update копируете строки по какому то нужному вам критерию в имеющиеся датасторе и апдейтит их.
4) У вашего DW либо ретирив, либо ResetStatus

авторОпять же... Какое событие будет заниматься п.3? Об этом я и спрашиваю: есть ли функция, получающая управление для каждой изменяющейся(IUD) строки?
При выполнении функции update(), у Вас всегда будет вызываться событие updatestart(). Вот его и используйте для выполнения п.3
Полагаю, что Вы уже знаете как найти в DataWindow новые, измененные и удаленные строки.
...
Рейтинг: 0 / 0
02.02.2005, 09:59
    #32896231
gal20
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
custom UPDATE
Guest_2 авторМогу предложить следующий вариант:
1) делаете своё DW и работаете с ним.
2) создаёте дополнительно столько датасторов, сколько у вас хранимых процедур на Update, и привязываете эти процедуры к этим датасторам.
3) для Update копируете строки по какому то нужному вам критерию в имеющиеся датасторе и апдейтит их.
4) У вашего DW либо ретирив, либо ResetStatus

авторОпять же... Какое событие будет заниматься п.3? Об этом я и спрашиваю: есть ли функция, получающая управление для каждой изменяющейся(IUD) строки?
При выполнении функции update(), у Вас всегда будет вызываться событие updatestart(). Вот его и используйте для выполнения п.3
Полагаю, что Вы уже знаете как найти в DataWindow новые, измененные и удаленные строки.

Или перекрыть функцию Update для унаследованного от DataWindow control пользовательского объекта с вызовом функции Update для Super'а, а перед этим вызвать свое событие, определенное для этого же пользовательского объекта. Вот в этом событии все и сделать.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / custom UPDATE / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]