首页 > 解决方案 > Oracle APEX:将主键分配为交互式网格 ROWID,在 SQL 查询中使用选择交互式网格 ROWID

问题描述

序言——我是绿色的。

我的任务是构建一个供内部组织使用的应用程序。我们有一个包含患者数据的数据库,并与医院电子病历系统接口。输入 EMR 的患者数据通过界面发送给我们,以更新我们数据库中的患者资料。部分匹配需要人工干预。

  1. 在暂存模式内的表中接收到消息
  2. 尝试匹配现有患者
  3. 如果只有“部分匹配”,则状态设置为“不匹配”

我想要:

  1. 显示所有“不匹配”状态记录的摘要。我想使用交互式网格来选择单个记录。
  2. 将交互式网格行的 ROWID 设置为临时表中记录的相应主键。
  3. 使用选定的交互式网格 ROWID(用户在交互式网格中选择特定记录)选择临时表中相应记录的匹配主键,以创建 SQL 查询以在我们的数据库中查找潜在匹配项。潜在匹配显示在第二个表格中。

问题:

  1. 如何将交互式网格的 rowID 设置为临时表的唯一键列?--一些研究表明我需要一个隐藏物品,这是正确的吗?
  2. 如何访问已在交互式网格中选择的 rowID 以在 SQL 查询中使用?

我谦虚的感谢和赞赏

标签: sqloracleplsqloracle-apexoracle19c

解决方案


所以,你的问题有点令人困惑,但据我所知。您正在从表 A 中获取一些数据,试图将其与表 B 匹配。如果匹配,则与我们无关。如果找不到匹配项,您希望显示它以便手动匹配。

在 apex 中,为了更新表,您需要选择更新数据的主键。这通常是表中的一列,但也可以是 rowid(只需像任何其他列一样将其包含在 SQL 中)。

根据我对您的情况的了解,我会为您提供什么建议。

在交互式网格中显示不匹配的行,以 rowid 作为主键。然后,您将需要一个匹配的列,如果这些条目已经具有某种您尝试匹配但失败的键,则显示该键。并让该列成为 PopupLOV,以便用户可以编辑该字段中的值并将其设置为适当的匹配。您需要注意的一件事。您正在编辑唯一键,甚至可能是主键,您可能会在这里遇到冲突。即使您只在 LOV 中显示不匹配的数据,您仍然可以让用户编辑多行并尝试将两行匹配到相同的值,这将失败并出现对用户不太友好的错误。


推荐阅读