删除主块oracle表单时如何删除所有细节块
Posted
技术标签:
【中文标题】删除主块oracle表单时如何删除所有细节块【英文标题】:How to delete all detail block when i delete master block oracle forms 【发布时间】:2020-05-22 21:34:55 【问题描述】:当我从主块中删除一条记录时,它应该删除块详细信息中的所有记录....但这不会发生在我身上...此消息出现“frm-40510:ORACLE 错误无法删除记录” .
我按了shift + f1
出现这条消息:
SQL 语句出错:DELETE FROM tableName WHERE ROWID=:1
错误ORA-02292: integrity constraint (schemaName.C_NO_FK) violated - child record found
。
这是我的删除按钮代码
DECLARE
v_id NUMBER := :CUSTOMERS.C_NO;
v_alert NUMBER;
BEGIN
SET_ITEM_PROPERTY ('CUSTOMERS.C_NO', enabled, property_true);
SET_ITEM_PROPERTY ('CUSTOMERS.C_NO', update_allowed, property_true);
SET_ITEM_PROPERTY ('CUSTOMERS.C_NO', navigable, property_true);
IF v_id IS NOT NULL
THEN
v_alert := SHOW_ALERT ('DEL_ALERT');
IF v_alert = alert_button1
THEN
GO_BLOCK ('CUSTOMERS');
DELETE_RECORD;
:SYSTEM.message_level := 25;
COMMIT;
:SYSTEM.message_level := 0;
MESSAGE ('deleted');
END IF;
ELSE
MESSAGE ('choose one record to delete it');
MESSAGE ('choose one record to delete it');
GO_ITEM ('btnsrch');
END IF;
GO_ITEM ('btnsrch');
SET_ITEM_PROPERTY ('CUSTOMERS.C_NO', enabled, property_false);
exception when others then
message(sqlerrm);
END;
我想用delete_record;
代替delete语句delete form detailTable where …
然后delete form masterTable where …….
这工作正常但不是delete_record;
【问题讨论】:
您的代码是正确的,没有任何内容。但是您需要将关系属性删除记录行为更改为级联。就是这样。 【参考方案1】:非常简单,只需转到主块中的关系并按 F4 并将“删除记录行为”属性设置为“级联”。
【讨论】:
感谢您的回答。我在哪里可以找到该主块中的关系?以上是关于删除主块oracle表单时如何删除所有细节块的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 Oracle Forms 中的“FRM-30408:无效值”错误?