PowerBuilder: Как писать выражение валидации для поля
-
16-09-2020 - |
Вопрос
У меня есть datawindow, содержащий несколько полей.Я хочу написать выражение валидации для поля с именем amount
.У меня есть еще два поля имени debit
и credit
.Если сумма дебета и кредита больше, чем сумма, то я хочу показать сообщение о проверке пользователя.
Как я могу написать требуемое выражение валидации в столбце Спецификация этого datawindow?
Я также хочу написать выражение проверки для поля, названного test
.Есть поле имени criteria
.Когда это поле установлено на 1, я хочу, чтобы тестовое поле было обязательным полем.Как я могу писать выражение проверки для этого?
Решение
Есть разные способы сделать это, в зависимости от того, должны ли вы использовать необходимое выражение валидации столбца или иметь лицензию, чтобы сделать это разными способами.
<Сильные> Дизайн соображения
Это будет настроен на Freestyle Datawindow, где вам нужно только для проверки правила только для экрана, или в табличном стиле, где пользователи могут массовые вводить наборы данных, и правило необходимо применять к каждой строке?
Вы хотите, чтобы пользователи вводили правильные значения каждый раз, когда требуется необходимое поле для фокусировки или вы хотите позволить им свободно перемещаться по экрану и подтвердить в сэкономле время?
Вы получите некоторые разные ответы здесь, я ожидаю, но я предпочитаю использовать выражения спецификации столбцов только для простых проверок, потому что:
- .
- Сложная логика там, как правило, нужно усердно читать и поддерживать
- Если у вас есть несколько условий ошибок, которые вы проверяете, которые могут привести к некоторым громоздким сообщениям, если вы используете встроенное поле «Спецификация столбца»
Тем не менее, я дам, что выражения DW, как правило, действительно быстро.
Одна альтернативная техника также является быстрым исполнителем и может использоваться в большинстве версий Pb.
- .
У
- есть вычисленное поле на Datawindow, которое имеет значимое имя, такое как
cf_amount_rule
и что-то вроде этого в выражении:if (debit + credit = amount, 0, 1)
- сделать это поле невидимым для пользователя, если вы хотите
- Добавьте другое вычисленное поле в нижнем колонтитуле для суммирования
cf_amount_rule
, и теперь у вас есть удобная контрольная точка, которая быстро говорит вам, когда есть ошибка - сэкономьте время (или событие pfc_validation для пользователей PFC) Вы можете проверить на наличие суммы> 0 и опубликовать сообщение об ошибке
Пуристы OO могут предположить, что неправильно поместить логику в Datawindow, и если вы окажетесь в том же правило, в нескольких данных, которые, безусловно, являются кодовым запахом. Но для простых правил, которые вряд ли изменится, я нашел время и снова, что datawindow очень эффективен при выполнении этих правил и сэкономить вас от необходимости писать много кода в другом месте.
<Сильные> Дополнительные вкусности
- .
- Вы можете сделать сообщение об ошибке более прочным, используя функциональность Find () для определения определенных строк с ошибкой
- Вы предоставляете полезные визуальные сигналы для ваших пользователей, изменив ряд или цвет фона поля через выражения свойства, которые ссылаются на генеракодицетагкод.