在Oracle Forms 6i中提交“已插入记录”

时间:2015-06-11 18:32:49

标签: oracle oracleforms

我不是Oracle表格的人,但是我坚持维护我们公司所拥有的旧的Oracle Forms 6i应用程序,所以如果我听起来像我不理解表单,我会道歉,因为我没有。

我们有一个预先存在的表单,我必须对其进行一些更改。它有一个主/细节类型设置。细节有一系列“行”。当我输入主信息和第一个详细记录时,我可以保存得很好。当我向详细信息部分添加第二行信息时,它会转到KEY-COMMIT触发器,但是当它实际命中“commit”时它,它给出了错误“记录已被插入。”

但是只有一条记录与表格中的主要细节相关联。当我清除该消息时,它会问:“你想保存你所做的更改吗?”如果我点击“是”,它只是给我状态栏中的“已插入记录”消息,没有任何反应。如果我尝试退出表单,它会再次询问我是否要保存更改,但“是”除了保留表单之外什么都不做。单击“否”将删除第二个详细记录。

我很困惑。我显然遗漏了一些东西。

1 个答案:

答案 0 :(得分:0)

您的详细数据块已将uint32_t key; uint32_t result; key = ( uint32_t )(( buffer [ 1 ] << 0 ) | ( buffer [ 2 ] << 8 ) | ( buffer [ 3 ] << 16 ) | ( buffer [ 4 ] << 24 )); result = ntohl ( key ); 设置为是。这意味着rowid不会查询由此块插入/更新/删除的行,而是通过主键查询。

无关紧要,如何在数据库中设置主键,但如何在表单中设置。检查详细信息块中的所有项目,找到Enforce Primary Key property属性的项目。然后检查数据库中是否有重复记录。

我更喜欢使用rowid并取消选中Primary Key (Item)。如果您的块直接使用数据库表(而不是视图),它可以正常工作