【ERP】如何在主数据块处于新建或插入状态时禁止对明细数据块进行查询数据操作
问题描述
在设计含有主从数据块的form时,我们可能在主数据块处于新建或插入状态时,不想让用户去明细块(从块)进入和执行查询动作,因为这样做本身就是不符合逻辑的。为此,我们有以下两种方法可供选择。
实现方法
【标准实现】设置主从关系对象属性
设置主块中的主从关系对象(RELATIONS)的Prevent Masterless Operations属性为YES即可达到目的。
图1-1 图1-2
【自定义实现】
在明细数据块中新增三个BLOCK级别的触发器KEY-CQUERY, KEY-ENTQRY和KEY-EXEQRY,加入如下逻辑:当主数据块的RECORD_STATUS为INSERT或者NEW时,向用户报警告或提示对话框,提示用户先输入主数据块内容,并终止当前操作。具体实现如下:
假设主数据块名称为HEADER,明细块名称为LINES
1. 向明细块LINES添加块级触发器KEY-ENTQRY,代码如下:
IF app_record.get_status( 'HEADER' ) IN ( 'NEW' , 'INSERT' ) THEN fnd_message.debug( 'Please enter header information first' ); RAISE form_trigger_failure; ELSE Enter_Query; END IF; |
2. 向明细块LINES添加块级触发器KEY-CQUERY,代码如下:
IF app_record.get_status( 'HEADER' ) IN ( 'NEW' , 'INSERT' ) THEN fnd_message.debug( 'Please enter header information first' ); RAISE form_trigger_failure; ELSE Count_Query; END IF; |
3. 向明细块LINES添加块级触发器KEY-EXEQRY,代码如下:
IF app_record.get_status( 'HEADER' ) IN ( 'NEW' , 'INSERT' ) THEN fnd_message.debug( 'Please enter header information first' ); RAISE form_trigger_failure; ELSE Execute_Query; END IF; |
第一种方法运行后系统会有提示信息(HINT)告诉用户必须先输入主块,第二种方法我们可以自定义输出信息,并提示给用户,同样可以达到我们想要的效果。
PS:回头再上图 已上图:P
标签:
Oracle Forms
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述