Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Validation Expressions / 8 сообщений из 8, страница 1 из 1
05.06.2005, 22:25
    #33101676
Amberit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Validation Expressions
Здравствуйте, уважаемые одночатцы! Я человек новенький на сайте, также как и в PowerBuilder. Но вопросик у меня возник весьма существенный - надеюсь, вы сможете мне помочь.

PowerBuilder9. В организации, где я работаю, написана программка просмотра справочников - в окошко как агрумент передается имя необходимого DataWindow (и еще куча разной полезной информации). Естественно, человек, который писал это, сделал небольшую каку - он каким-то образом поставил запрет на изменение своего окошка - т.е. образовался своеобразный черный ящик - не видно скриптов элементов окна, нельзя ничего менять. Естественно, человек со временем уволился.

С недавних пор возникла необходимость в DataWindow делать некоторые проверки вводимых данных, например, графа 1 должна быть больше графы 2, и выводить результат неверно введенных данных на экран. Единственный выход из этой ситуации я вижу в использовании Validation Expressions в DataWindow, но возникли вопросы:

1. Как в Validation Expressions сравнить графу 1 с графой 2? Причем сравнить не те значения, которые сидят в Primary Buffer, а те, которые пользователь вводит в поля?
2. Как в Validation Expressions реализовать проверку правильности ввода по внешним ключам? Понимаю, что при ошибке ввода система (Oracle 9) крикнет о нарушении, но крикнет она на английском, и мне как разработчику сразу будет следовать звонок юзера, что очень нежелательно.

Буду очень благодарен за Ваши ответы и советы. Просьба не судить очень строго - я еще пока новичок... ;-)))
...
Рейтинг: 0 / 0
06.06.2005, 02:57
    #33101779
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Validation Expressions
AmberitPowerBuilder9. В организации, где я работаю, написана программка просмотра справочников - в окошко как агрумент передается имя необходимого DataWindow (и еще куча разной полезной информации). Естественно, человек, который писал это, сделал небольшую каку - он каким-то образом поставил запрет на изменение своего окошка - т.е. образовался своеобразный черный ящик - не видно скриптов элементов окна, нельзя ничего менять. Естественно, человек со временем уволился.
С недавних пор возникла необходимость в DataWindow делать некоторые проверки вводимых данных, например, графа 1 должна быть больше графы 2, и выводить результат неверно введенных данных на экран. Единственный выход из этой ситуации я вижу в использовании Validation Expressions в DataWindow,
Ну почему же единственный?
Намного дешевле для Вашей огранизации переписать это окно с нуля прямо сейчас, т.к. рано или поздно возникнет необходимость в чем-то, чего нет в DW, а делать надо срочно. Или захочется мигрировать на другую версию PB, а без исходников данного объекта Вы привязаны к текущей версии.
Я бы переписал на Вашем месте.

Есть правда еще вариант - отнаследоваться от данного окна и в наследнике дописать обработку.
...
Рейтинг: 0 / 0
06.06.2005, 05:13
    #33101812
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Validation Expressions
Amberit
1. Как в Validation Expressions сравнить графу 1 с графой 2? Причем сравнить не те значения, которые сидят в Primary Buffer, а те, которые пользователь вводит в поля?
GetText() в Validation Expression использовать
Amberit
2. Как в Validation Expressions реализовать проверку правильности ввода по внешним ключам? Понимаю, что при ошибке ввода система (Oracle 9) крикнет о нарушении, но крикнет она на английском, и мне как разработчику сразу будет следовать звонок юзера, что очень нежелательно.
Посылать выше упомянутый GetText() в глобальную функцию в том же самом Validation Expression, а в ней производить небходимые проверки.

Таким образом можно временно не переписывать и не наследоваться...
...
Рейтинг: 0 / 0
06.06.2005, 21:12
    #33103590
Amberit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Validation Expressions
Спасибо всем, кто ответил на вопрос... Но, честно говоря, ответили Вы не по сути... Если со внешними ключами все можно решить с помощью DropDownDataWindow (с запретом редактирования), благо, размеры списка позволяют, то вот как сравнить графы через Validation Expressions? Ума не приложу...

Переписать, конечно, будет правильнее всего, но реализовать данные проверки нужно за короткий промежуток времени... У кого какие идеи? Очень жду помощи... ;-)))
...
Рейтинг: 0 / 0
06.06.2005, 21:25
    #33103594
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Validation Expressions
AmberitСпасибо всем, кто ответил на вопрос... Но, честно говоря, ответили Вы не по сути... Если со внешними ключами все можно решить с помощью DropDownDataWindow (с запретом редактирования), благо, размеры списка позволяют, то вот как сравнить графы через Validation Expressions? Ума не приложу...

Если речь идёт о "графа1" и "графа2" в ОДНОМ ряду, тогда элементарно, если же речь идёт о cross-row validations, тогда по сути дела ни о каких Validation Expressions речи и быть не может...
...
Рейтинг: 0 / 0
06.06.2005, 22:51
    #33103658
Amberit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Validation Expressions
Совершенно верно, ув. Филипп, в одном ряду... Простите, но я не понимаю... КАК??? ;-)))

GetText() вытягивает введенное значение одного поля... Как я могу в Validation Expressions Графы 1 обратиться к GetText() графы 2??? ;-)))

Повторюсь, меня в данном случае интересуют именно значения в Edit Control-е, а не в первичном буфере, поэтому прямое обращение по имени столбца в данном случае не срабатывает...

С нетерпением жду Ваших советов... ;-)))
...
Рейтинг: 0 / 0
07.06.2005, 00:05
    #33103689
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Validation Expressions
AmberitGetText() вытягивает введенное значение одного поля... Как я могу в Validation Expressions Графы 1 обратиться к GetText() графы 2??? ;-)))
Повторюсь, меня в данном случае интересуют именно значения в Edit Control-е, а не в первичном буфере, поэтому прямое обращение по имени столбца в данном случае не срабатывает...
Вы просто в корне не понимаете как работает datawindow control вообще, и Validation Expressions в частности.
Validation Expression срабатывает тогда, когда вы вводите что-то, допустим в Графу 1. В этот момент GetText() есть ТОЛЬКО в Графе 1 и НИГДЕ больше, поэтому как вопрос ваш, так и утверждение - абсурдны.
...
Рейтинг: 0 / 0
07.06.2005, 20:26
    #33105959
Amberit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Validation Expressions
Большое спасибо за объяснения. Я до этого дошел только на следующее утро... Вот что значит - переработался... ;-)))

Всем спасибо! ;-)))
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Validation Expressions / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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