Sql 如何显示和操作记录数组?

Sql 如何显示和操作记录数组?,sql,oracle,informix,progress-4gl,Sql,Oracle,Informix,Progress 4gl,正在使用INFORMIX 4GL?、ISQL和ESQL/C?、PROGRESS-4GL?、ORACLE寻找以下表单功能?等等 我有一个CRUD表单,它在同一屏幕上以记录数组[detail]显示客户[master]及其所有关联交易: [id ] [fullname ] [address1 ] [address2 ] [city |st|zip

正在使用INFORMIX 4GL?、ISQL和ESQL/C?、PROGRESS-4GL?、ORACLE寻找以下表单功能?等等

我有一个CRUD表单,它在同一屏幕上以记录数组[detail]显示客户[master]及其所有关联交易:

[id   ]
[fullname                     ]
[address1                     ]
[address2                     ]
[city                |st|zip  ]  
 ================================================================
[trxnum][itemdesc                            ]
[trxnum][itemdesc                            ]
[trxnum][itemdesc                            ]
[trxnum][itemdesc                            ]
[trxnum][itemdesc                            ]
[trxnum][itemdesc                            ]


attributes
id = customer.pk_id = transaction.fk_id;
trxnum = transaction.trx_num = actions.trx_num;
[...];

instructions
customer master of transaction
transaction master of action
[...];
所需功能:

当我查询并找到正确的客户[主客户]时,我希望自动显示属于该客户的所有交易[详细信息]。如果有6个以上的详细信息行,我希望能够[在一个滚动区域]滚动所有详细信息行,直到找到适当的事务。然后,我想通过按enter键或“U”键进行更新来更新该事务,并在更新模式下弹出以下操作屏幕:

[id   ]
[fullname                     ]
[address1                     ]
[address2                     ]
[city                |st|zip  ]  
 ================================================================
[trxnum][itemdesc                                  ]

 TRANS-DATE TRX-TIME ACTION PRINCIPAL  AMOUNT  BALANCE CLERK
[tdate     ][ttime ]  [a]  [princ    ][amt   ][bal    ][cl]
[tdate     ][ttime ]  [a]  [princ    ][amt   ][bal    ][cl]
[tdate     ][ttime ]  [a]  [princ    ][amt   ][bal    ][cl]
[tdate     ][ttime ]  [a]  [princ    ][amt   ][bal    ][cl]
[tdate     ][ttime ]  [a]  [princ    ][amt   ][bal    ][cl]
[tdate     ][ttime ]  [a]  [princ    ][amt   ][bal    ][cl]
同样,这是与特定事务相关的先前操作[行]的滚动区域。我希望光标自动定位到下一个可用的打开点,让tdate和ttime=默认当前值,光标停在动作标记“a”上,以便职员输入所需动作。我还希望能够在以前的操作[行]之间执行计算。我在ISQL perform中巧妙地模仿了这一点,但没有记录数组浏览功能。(参见www.frankcomputer.com上的视频演示[2min.mark]


我愿意用另一个非INFORMIX开发工具重新编写这个所需的功能,如果它有这些功能并且不复杂或者需要很长时间来实现,但是逻辑上的选择是用I4GL重新编写,但是我听说处理记录数组很麻烦。有什么更好的建议吗?

INFORMIX 4GL可以做到;INFORMIX SQL,即使有ESQL/C的帮助,也不能明智地做到这一点。我不知道Progress或Oracle,但他们很可能也能做到类似的事情


在I4GL中,您将调出主记录信息,然后使用常规显示语句(而不是显示数组)在详细信息部分的屏幕行中显示详细信息。当用户想要选择要更新的行时,您将进入显示数组或(可能的)显示行一个输入数组语句。

Informix 4GL可以做到这一点;Informix SQL,即使有ESQL/C的帮助,也不能明智地做到这一点。我不知道Progress或Oracle,但他们很可能可以做类似的事情


在I4GL中,您将调出主记录信息,然后使用常规显示语句(而不是显示数组)在详细信息部分的屏幕行中显示详细信息。当用户想要选择要更新的行时,您将进入显示数组或(可能的)显示行输入数组语句。

您的目标用户群体是什么?是普通商业用户吗?@Conrad:任何开发了显示或操作记录数组的表单的开发人员!您的目标用户群体是什么?是普通商业用户吗?@Conrad:任何开发了显示或操作记录数组的表单的开发人员记录数组!我如何使用光标下标在不同记录数组上的列之间执行计算?@Frank:这取决于你在找什么。如果数据都在屏幕数组中(或者更准确地说,在屏幕上显示的程序数组中),然后您只需像正常情况一样使用数组下标。如果您有两个并行数组,一个带有用于显示的数据,另一个没有显示数据,那么您就有了一个更复杂的任务。您必须跟踪输入数组中的插入和删除操作,并在两个数组中记录的位置上保持选项卡(确保第二个数组有PK信息的副本-用于交叉检查和健全),然后你像以前一样使用常规下标。我如何使用光标下标在不同记录数组上的列之间执行计算?@Frank:这取决于你的目的。如果数据都在屏幕数组中(或者更准确地说,屏幕上显示的程序阵列),然后您只需像正常情况一样使用数组下标。如果您有两个并行数组,一个带有用于显示的数据,另一个没有显示数据,那么您就有了一个更复杂的任务。您必须跟踪输入数组中的插入和删除操作,并在两个数组中记录的位置上保持选项卡(确保第二个数组有PK信息的副本-用于交叉检查和健全),然后像以前一样使用常规下标。