当我删除主块 oracle 表单时如何删除所有详细信息块
How to delete all detail block when i delete master block oracle forms
当我从 Master Block 中删除一条记录时,它应该删除 Block Details 中的所有记录....但这并没有发生在我身上...此消息出现 "frm-40510: ORACLE error unable to DELETE record"。
我按下了 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;
非常简单,只需转到主块中的关系并按 F4 并将 "Delete Record Behavior" 属性 设置为 "Cascading"。
当我从 Master Block 中删除一条记录时,它应该删除 Block Details 中的所有记录....但这并没有发生在我身上...此消息出现 "frm-40510: ORACLE error unable to DELETE record"。
我按下了 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;
非常简单,只需转到主块中的关系并按 F4 并将 "Delete Record Behavior" 属性 设置为 "Cascading"。