|
|
|
Validation Expressions
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые одночатцы! Я человек новенький на сайте, также как и в PowerBuilder. Но вопросик у меня возник весьма существенный - надеюсь, вы сможете мне помочь. PowerBuilder9. В организации, где я работаю, написана программка просмотра справочников - в окошко как агрумент передается имя необходимого DataWindow (и еще куча разной полезной информации). Естественно, человек, который писал это, сделал небольшую каку - он каким-то образом поставил запрет на изменение своего окошка - т.е. образовался своеобразный черный ящик - не видно скриптов элементов окна, нельзя ничего менять. Естественно, человек со временем уволился. С недавних пор возникла необходимость в DataWindow делать некоторые проверки вводимых данных, например, графа 1 должна быть больше графы 2, и выводить результат неверно введенных данных на экран. Единственный выход из этой ситуации я вижу в использовании Validation Expressions в DataWindow, но возникли вопросы: 1. Как в Validation Expressions сравнить графу 1 с графой 2? Причем сравнить не те значения, которые сидят в Primary Buffer, а те, которые пользователь вводит в поля? 2. Как в Validation Expressions реализовать проверку правильности ввода по внешним ключам? Понимаю, что при ошибке ввода система (Oracle 9) крикнет о нарушении, но крикнет она на английском, и мне как разработчику сразу будет следовать звонок юзера, что очень нежелательно. Буду очень благодарен за Ваши ответы и советы. Просьба не судить очень строго - я еще пока новичок... ;-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2005, 22:25 |
|
||
|
Validation Expressions
|
|||
|---|---|---|---|
|
#18+
AmberitPowerBuilder9. В организации, где я работаю, написана программка просмотра справочников - в окошко как агрумент передается имя необходимого DataWindow (и еще куча разной полезной информации). Естественно, человек, который писал это, сделал небольшую каку - он каким-то образом поставил запрет на изменение своего окошка - т.е. образовался своеобразный черный ящик - не видно скриптов элементов окна, нельзя ничего менять. Естественно, человек со временем уволился. С недавних пор возникла необходимость в DataWindow делать некоторые проверки вводимых данных, например, графа 1 должна быть больше графы 2, и выводить результат неверно введенных данных на экран. Единственный выход из этой ситуации я вижу в использовании Validation Expressions в DataWindow, Ну почему же единственный? Намного дешевле для Вашей огранизации переписать это окно с нуля прямо сейчас, т.к. рано или поздно возникнет необходимость в чем-то, чего нет в DW, а делать надо срочно. Или захочется мигрировать на другую версию PB, а без исходников данного объекта Вы привязаны к текущей версии. Я бы переписал на Вашем месте. Есть правда еще вариант - отнаследоваться от данного окна и в наследнике дописать обработку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 02:57 |
|
||
|
Validation Expressions
|
|||
|---|---|---|---|
|
#18+
Amberit 1. Как в Validation Expressions сравнить графу 1 с графой 2? Причем сравнить не те значения, которые сидят в Primary Buffer, а те, которые пользователь вводит в поля? GetText() в Validation Expression использовать Amberit 2. Как в Validation Expressions реализовать проверку правильности ввода по внешним ключам? Понимаю, что при ошибке ввода система (Oracle 9) крикнет о нарушении, но крикнет она на английском, и мне как разработчику сразу будет следовать звонок юзера, что очень нежелательно. Посылать выше упомянутый GetText() в глобальную функцию в том же самом Validation Expression, а в ней производить небходимые проверки. Таким образом можно временно не переписывать и не наследоваться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 05:13 |
|
||
|
Validation Expressions
|
|||
|---|---|---|---|
|
#18+
Спасибо всем, кто ответил на вопрос... Но, честно говоря, ответили Вы не по сути... Если со внешними ключами все можно решить с помощью DropDownDataWindow (с запретом редактирования), благо, размеры списка позволяют, то вот как сравнить графы через Validation Expressions? Ума не приложу... Переписать, конечно, будет правильнее всего, но реализовать данные проверки нужно за короткий промежуток времени... У кого какие идеи? Очень жду помощи... ;-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 21:12 |
|
||
|
Validation Expressions
|
|||
|---|---|---|---|
|
#18+
AmberitСпасибо всем, кто ответил на вопрос... Но, честно говоря, ответили Вы не по сути... Если со внешними ключами все можно решить с помощью DropDownDataWindow (с запретом редактирования), благо, размеры списка позволяют, то вот как сравнить графы через Validation Expressions? Ума не приложу... Если речь идёт о "графа1" и "графа2" в ОДНОМ ряду, тогда элементарно, если же речь идёт о cross-row validations, тогда по сути дела ни о каких Validation Expressions речи и быть не может... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 21:25 |
|
||
|
Validation Expressions
|
|||
|---|---|---|---|
|
#18+
Совершенно верно, ув. Филипп, в одном ряду... Простите, но я не понимаю... КАК??? ;-))) GetText() вытягивает введенное значение одного поля... Как я могу в Validation Expressions Графы 1 обратиться к GetText() графы 2??? ;-))) Повторюсь, меня в данном случае интересуют именно значения в Edit Control-е, а не в первичном буфере, поэтому прямое обращение по имени столбца в данном случае не срабатывает... С нетерпением жду Ваших советов... ;-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 22:51 |
|
||
|
Validation Expressions
|
|||
|---|---|---|---|
|
#18+
AmberitGetText() вытягивает введенное значение одного поля... Как я могу в Validation Expressions Графы 1 обратиться к GetText() графы 2??? ;-))) Повторюсь, меня в данном случае интересуют именно значения в Edit Control-е, а не в первичном буфере, поэтому прямое обращение по имени столбца в данном случае не срабатывает... Вы просто в корне не понимаете как работает datawindow control вообще, и Validation Expressions в частности. Validation Expression срабатывает тогда, когда вы вводите что-то, допустим в Графу 1. В этот момент GetText() есть ТОЛЬКО в Графе 1 и НИГДЕ больше, поэтому как вопрос ваш, так и утверждение - абсурдны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 00:05 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=33101676&tid=1338314]: |
0ms |
get settings: |
7ms |
get forum list: |
27ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
76ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 407ms |

| 0 / 0 |
