Отношения между временными таблицами
В рамках определения набора данных вы должны определить отношения родитель-потомок между временными таблицами. Это позволяет заполнить набор данных связанными данными. Например, если вы хотите заполнить набор данных данными для определенного клиента, вы можете использовать отношения для получения данных клиента, за которыми следуют заказы для этого клиента, а затем строки заказа для каждого заказа.
Чтобы указать отношения для набора данных, вы должны указать, какие поля в паре временных таблиц будут использоваться для определения отношения.
Упрощённый синтаксис для указания отношений в наборе данных:
define [{&<visibility-parameter>}] dataset <dataset-name> for < tt-name> {[,<tt-name>]} data-relation <data-relation-name> for <parent-ttname>, <child-ttname> relation-fields (<parent-field>,<child-field>).
visibility–parameter, – заполнитель, который используется во время компиляции для замены значения видимости в определении. Это позволяет использовать одно и то же определение набора данных в классе или процедуре (в которой не используются ключевые слова public, private или protected).
data-relation-name, – имя отношения данных.
parent-ttname, – имя временной таблицы набора данных, которая будет родительской в отношении.
child–ttname, – имя временной таблицы набора данных, которая будет дочерней в отношении.
parent–field, – имя поля в родительской временной таблице, которое будет использоваться для связи двух таблиц. Значение этого поля должно совпадать со значением поля в дочернем поле.
child–field, – имя поля в дочерней временной таблице, которое будет связывать две таблицы. Значение этого поля должно совпадать со значением поля в родительском поле.
Пример определения набора данных dsCustomerBE с его первой взаимосвязью между полем CustNum во временной таблице ttCustomer и полем CustNum во временной таблице ttOrder. Вторая связь — между полем OrderNum во временной таблице ttOrder и полем OrderNum во временной таблице ttOrderLine.
/* the temp-tables have been previously defined */ define {&ClassAccess} dataset dsCustomerBE for ttCustomer, ttOrder, ttOrderLine data-relation CustomerOrders for ttCustomer, ttOrder relation-fields (Custnum,CustNum) data-relation OrderOrderLines for ttOrder, ttOrderLine relation-fields (Ordernum,OrderNum).