更新静态游标和存储库到最后一条记录

2020-09-29 17:44发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个静态游标,该游标在Delphi中由显示在TDBGrid中的TAdsQuery组件使用:

从不在其中的id中选择*(从从b其中的key =:Key中选择id)按名称排序。

1。 当我想使用相同或其他用户对基础表所做的更新来更新此游标时,必须关闭并重新打开查询。 如果参数:Key的值已更改,我还必须在关闭和打开之间做准备。 这是正确的吗?

2。 当我更新静态光标的内容时,我想提醒更新前在网格中选择的记录,并在更新后重新定位到该记录。 如何才能做到这一点? 书签不起作用,因为内部记录号似乎是静态游标中记录的临时记录。 如果同时删除或插入记录,则所有后续记录的记录编号均为-1 rep。 +1。

使用实时游标不起作用,因为我正在引用第二个表。

对于使用FindKey或FindNearest,我没有找到在IDE中定义使用它的方法。

任何提示表示赞赏。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个静态游标,该游标在Delphi中由显示在TDBGrid中的TAdsQuery组件使用:

从不在其中的id中选择*(从从b其中的key =:Key中选择id)按名称排序。

1。 当我想使用相同或其他用户对基础表所做的更新来更新此游标时,必须关闭并重新打开查询。 如果参数:Key的值已更改,我还必须在关闭和打开之间做准备。 这是正确的吗?

2。 当我更新静态光标的内容时,我想提醒更新前在网格中选择的记录,并在更新后重新定位到该记录。 如何才能做到这一点? 书签不起作用,因为内部记录号似乎是静态游标中记录的临时记录。 如果同时删除或插入记录,则所有后续记录的记录编号均为-1 rep。 +1。

使用实时游标不起作用,因为我正在引用第二个表。

对于使用FindKey或FindNearest,我没有找到在IDE中定义使用它的方法。

任何提示表示赞赏。

付费偷看设置
发送
6条回答
SC_Yao
1楼-- · 2020-09-29 18:12

" rowid"是一个字符串字段。 因此,我建议将rowid字段的值存储在变量中,然后再使用TAdsQuery.Locate('rowid',my_variable,[])来重新定位网格。 推荐使用DisableControls/EnableControls,理想情况下用户看不到任何滚动。

粗暴的香蕉
2楼-- · 2020-09-29 17:50

是的,我使用了持久字段...很抱歉,我没有看到它...当然 我必须将该字段添加到持久字段列表中...现在它可以工作了...

黑丝骑士
3楼-- · 2020-09-29 18:01

RowID是根据记录的物理位置计算出的虚拟列...我宁愿 使用主键字段来定位正确的记录(插入/删除/更新记录时,rowid可能会更改)。

哎,真难
4楼-- · 2020-09-29 17:53

但是,rowid的顺序仍然与基表的recno相同。 如果我执行"按名称排序"(名称不是主索引),则rowid不会按升序排列。 如果更新静态游标后所选记录不见了,我想回购。 到所选记录旁边的记录。

在这种情况下,主键,RECNO和Rowid都不起作用。

所以我会尝试进行定位,但是定位只是找到确切的字符串。 如果定位只是通过记录逐条记录运行,我可以自己执行此操作,并实现一些逻辑以执行某种"定位最近"。 正确吗?

还是其他任何提示?

hongfeng1314
5楼-- · 2020-09-29 17:57

1。 "准备/取消准备"在Delphi ADS组件中不起作用。 您可以在源代码中看到这一点:"描述:表明已准备好,但实际上什么也没做"(准备功能)。

2。 为此,请使用表" a"的ROWID伪列。

Violet凡
6楼-- · 2020-09-29 18:05

谢谢您的回答。 因此,我不必关心"准备/准备"。

关于2:

我将使用:"从不在其中的id中选择rowid,field1,field2,...(从b中的key =:Key中选择id)按名称排序"。 但是AQuery.FindField('rowid')为nil。 我如何阅读此rowid?

然后:关闭/打开后如何重新定位到该rowid?

一周热门 更多>