2013-04-24 3 views
0

Моя функция имеет входной аргумент adwc типа DataWindowChild. Возможно ли каким-то образом обнаружить его DataObject? Нет указателя на DataWindow, где размещается DWC, поэтому мы не можем запрашивать поле «dddw.name».Как определить DataObject для DataWindowChild?

Спасибо!

+0

Привет, вы хотите получить dataobject DatawindowChild или объект данных родителя? – DARKinVADER

ответ

1

AFAIK, ответ нет. Вы можете сделать adwc.Describe («datawindow.syntax»), чтобы получить его определение (или любое Describe() для получения различных атрибутов), или, как вы предлагаете, вы можете изменить свою функцию, чтобы взять дескриптор родителя и имя столбца для доступа к dddw.name.

В чем цель? Возможно, если бы мы знали конечную игру, мы могли бы сделать более ценные предложения.

Удача,

Terry.

0

Вы не должны писать код, который касается имени объекта DataWindow. Существует несколько причин.

  1. DataWindow - это динамический объект. Имя контрольных отчетов DataWindow для объекта данных является последним, которое было задано по имени. С помощью Create можно загрузить совершенно другой DataWindow, и имя не изменится.
  2. Код, который проверяет имя DataWindow, является хрупким. Предположим, что ваш код проверяет, является ли dddw d_emp или d_manager. Когда кто-то создает нового менеджера dddw и называет его d_manager_v2, ваш код может завершиться непредвиденным и запутанным образом.
  3. Ваш код, который интересуется именем DataWindow, может нарушать принципы проектирования, такие как One Responsibility.

Добавлен на основе комментариев Ursego в

Для вашего DataWindow/DataStore у вас есть uf_row_exists(ls_search_expr). Вы пытаетесь написать функцию для DataWindowChild, но DataWindowChild не существует без элемента управления DataWindow, больше, чем DataWindow. Если вы добавите uf_child_row_exists(ls_column, ls_search_expr) в свой DataWindow/DataStore, у вас будут как родительский, так и дочерний.

+0

Это функция рамки, которая выполняет поиск в DWC с помощью выражения (здесь - http://forum.powerbuilder.us/viewtopic.php?f=4&t=83) - вы можете найти аналогичную функцию, но для DataWindow, а не для DWC). Если поиск технически завершился неудачно, функция выдает исключение, которое отображает выражение поиска, и предлагает убедиться, что все поля, упомянутые в выражении, отображаются в DataObject (чтобы упростить поиск причины ошибки). Но все, что вы написали, правильно для бизнес-кодирования. – Ursego

+0

Я добавил к своему ответу, основываясь на ваших комментариях. –

Смежные вопросы