根据在 oracle 表单中使用 LOV 检索的其他文本字段中的值禁用文本字段
Disable text fields depending upon the value in other text field retrieved using LOV in oracle forms
我有一个表单,其中我接受客户的 ID,并根据该 ID 检索该特定客户的详细信息。
在这里,我有一个支付方式的 LOV。
如果客户通过支票付款,我会保留字段以接受支票详细信息。
但如果他输入现金,我会禁用支票详细信息字段。
现在的问题是,当我输入新记录并且我 select 现金作为付款方式时,支票详细信息字段被禁用。但是当我保存该记录时,检查详细信息字段再次启用。
此外,当我使用 'execute-query' 从数据库中检索数据时,如果该特定客户的付款方式为现金,则不会禁用这些字段。
我想在支付方式字段中的值为现金时禁用支票详细信息字段。
谁能帮我解决这个问题?
为此,请执行以下操作:
1. 在程序单元中编写一个程序来禁用该字段,并在支付模式字段的 when_validate 触发器或 key_next_item 触发器上调用该程序,示例如下:
如果 :block1.payment_mode = 'CASH' 那么
disable_fields; -- 禁用项目程序
如果结束;
- 如果支付方式是现金,则在块级编写 when-new-record-instance 触发器来调用该过程以禁用字段,示例如下:
when-new-record-instance 触发代码:
if :block1.payment_mode = 'CASH' then
disable_fields; -- disable item procedure
end if;
当您保存记录时,记录状态更改为查询模式。因此,为了在保存后和查询记录时显示禁用的支票详细信息字段:
(1) 在 Form Level Trigger KEY-EXEQRY
中以编程方式禁用字段
if :block1.payment_mode = 'CASH' then
set_item_property('BLOCK.Field',Update_allowed,Property_false);
Set_item_property('BLOCK.Field',insert_ALLOWED,PROPERTY_FALSE);
end if;
(2) 复制相同的代码以禁用表单级别触发器中的字段 WHEN-NEW-RECORD-INSTANCE
我有一个表单,其中我接受客户的 ID,并根据该 ID 检索该特定客户的详细信息。 在这里,我有一个支付方式的 LOV。 如果客户通过支票付款,我会保留字段以接受支票详细信息。 但如果他输入现金,我会禁用支票详细信息字段。
现在的问题是,当我输入新记录并且我 select 现金作为付款方式时,支票详细信息字段被禁用。但是当我保存该记录时,检查详细信息字段再次启用。
此外,当我使用 'execute-query' 从数据库中检索数据时,如果该特定客户的付款方式为现金,则不会禁用这些字段。
我想在支付方式字段中的值为现金时禁用支票详细信息字段。
谁能帮我解决这个问题?
为此,请执行以下操作: 1. 在程序单元中编写一个程序来禁用该字段,并在支付模式字段的 when_validate 触发器或 key_next_item 触发器上调用该程序,示例如下:
如果 :block1.payment_mode = 'CASH' 那么 disable_fields; -- 禁用项目程序 如果结束;
- 如果支付方式是现金,则在块级编写 when-new-record-instance 触发器来调用该过程以禁用字段,示例如下:
when-new-record-instance 触发代码:
if :block1.payment_mode = 'CASH' then
disable_fields; -- disable item procedure
end if;
当您保存记录时,记录状态更改为查询模式。因此,为了在保存后和查询记录时显示禁用的支票详细信息字段: (1) 在 Form Level Trigger KEY-EXEQRY
中以编程方式禁用字段 if :block1.payment_mode = 'CASH' then
set_item_property('BLOCK.Field',Update_allowed,Property_false);
Set_item_property('BLOCK.Field',insert_ALLOWED,PROPERTY_FALSE);
end if;
(2) 复制相同的代码以禁用表单级别触发器中的字段 WHEN-NEW-RECORD-INSTANCE