使用Openedge版本11.2& Progress Developer Studio。
我使用多个TEMP-TABLE定义(每个定义在一个单独的包含文件中)来形成DataSet。如果我只使用一对RELATION-FIELDS来获得单个数据关系,那么一切看起来都不错。只要我在定义中添加另一个RELATION-FIELDS对并在表单上删除包含文件(或通过"从文件&#34导入模式;按钮)导入模式,DataSet就会显示一个没有列的重复子表。为简单起见和测试,我设置了三个测试文件:
tt1.i - 第一个TEMP-TABLE:
/* Temp Table 1 */
DEFINE TEMP-TABLE tt1
FIELD tt_test AS CHARACTER
FIELD tt_rel_field_1 AS INTEGER
FIELD tt_rel_field_2 AS INTEGER
INDEX tt_idx tt_rel_field_1 tt_rel_field_2.
tt2.i - 第二个TEMP-TABLE:
/* Temp Table 2 */
DEFINE TEMP-TABLE tt2
FIELD tt_test2 AS CHARACTER
FIELD tt_rel_field_1 AS INTEGER
FIELD tt_rel_field_2 AS INTEGER
INDEX tt_idx tt_rel_field_1 tt_rel_field_2.
dsTest.i - 数据集定义:
/* Dataset Definition */
{tt1.i}
{tt2.i}
DEFINE DATASET dsTest FOR tt1 , tt2
DATA-RELATION drTest FOR tt1 , tt2
RELATION-FIELDS (
tt_rel_field_1,tt_rel_field_1,
tt_rel_field_2,tt_rel_field_2
).
当我在表单上删除dsTest.i时会发生什么情况的打印屏幕:
如果我删除第二对,一切正常 - GUI明智。我错过了一些明显的东西吗?到目前为止,我发现的所有示例都使用单个RELATION-PAIR。现在我想知道为什么。根据Progress Knowledgebase的文章000018088,没有涉及伏都教。
答案 0 :(得分:2)
根据手册,您的语法看起来是正确的。但有趣的是,我在整个环境中看不到任何地方,我们使用超过1个关系字段。可能是它想为您定义的每个字段创建一个关系。
您在表格中放置的数据是什么样的?数据必须形成唯一匹配。
我会问Tom Bascom对此的一些意见。 https://stackoverflow.com/users/123238/tom-bascom
=============
OpenEdge开发的第1-19页:ProDataSets手册执行以下操作:
DEFINE DATASET dsOrder FOR ttOrder, ttOline, ttItem
DATA-RELATION OrderLine FOR ttOrder, ttOline
RELATION-FIELDS (OrderNum, OrderNum)
DATA-RELATION LineItem FOR ttOline, ttItem
RELATION-FIELDS (ItemNum, ItemNum).
很抱歉不确定如何在这里进行格式化,但也许可以通过创建另一个表作为两者之间的链接进行测试?