注册 登录
壹佰网|ERP100 - 企业信息化知识门户 返回首页

的个人空间 https://www.erp100.com/?0 [收藏] [复制] [RSS]

日志

如何获取Form界面的数据源

已有 2669 次阅读2008/3/20 11:45

当功能顾问或者用户们指着Form界面上的某个栏位的数据大声喊道:“对,我就要它,报表上给我带出来”,开发人员常常会面露难色,“抱歉,这个字段我取不到”。

真得取不到吗?

为什么取不到?

 

为什么取不到      

取不到数据,大概有以下几个原因:

1找不到Block对应的数据源

2能找到Block对应的数据源,但是不知道界面上的Item对应基表的哪个字段

3 Item是非数据库字段(比如是汇总字段,公式字段或是同步字段等)

4 想通过下载当前Form的源代码寻找数据源,却不知道对应哪个fmb文件

5 ….

查看当前From对应的fmb文件

查看当前Form对应的fmb源文件,我知道的至少有2种方法:1 Help—About Oracle Application 2 巧用Form. 个性化功能,找到对应的fmb文件 名后只要到服务器目录将对应的文件下到本地即可

1Help—About Oracle Application

1

2

在图1红圈所示部分,可以得到看到编译完成.fmx文件名和存放路径,一般.fmb文件和fmx文件同名。

比较图1和图2紫圈部分,可以在Form级的WHEN-NEW-FORM-INSTANCE触发器中添加源文件注释,Oracle标准Form就是这么做的。

2.巧用Form. 个性化功能

前提是已Form个性化菜单开启,从当前Form打开Form个性化界面,可以看到当前Form对应的Function NameForm. Name,就这么简单

 

3

 

查看Block的数据源

查看Block的数据源的方法就更多了,1Help—Record History2 System.Last_Query  3 查看fmb文件

1Help—Record History

此方法的前提是Block中包含5Standard Who Collums,但这并不是充分条件。

4

2Help—Diagnostics—Examine  System.Last Query

5

在当前Block中执行F11查询操作,然后查看System.Last_Query的值,可以得到最后一个执行查询的语句,往往可以获得我们想要的数据源。需要注意的是,如果Form存在主从块级联自动查询或者post_query执行其他查询的情况,那么在主块F11查询后查看System.Last_Query,那么得到就不是主块的数据源了,这种方法需根据情况,灵活使用

3.查看fmb文件

这种办法比较麻烦,但是却最直接最准确,前提是先得到当前Form对应的源文件。另外在当前Form上数据块极多的情况下,一个小技巧是利用块上字段先得到目标块的名称,然后直接在Form. Bulider中找到该块,查看Query Data Source Name属性:

6

查看Item的数据源

查看Item的数据源的情况相对比较复杂,相对比较难找。有些Item基于表字段,有些基于视图字段,还有的甚至是非数据库字段(汇总字段,同步字段,公式字段,post_query赋值等)

1Help—Diagnostics—Examine + 联想

此方法很简单,查到Filed Name后,只要Select FieldName from QueryDataSourceName 即可,如图7只要select ship_to_address1 from oe_order_headers_v

 

7

2.查看fmb文件 + 联想

当上例中的fieldFieldName与其对应的数据库字段名不一致或者根本就不是数据库字段的情况下,方法1就不再适用了,此时打开fmb源文件,查看Item属性是最好的方法。一个小技巧是利用方法1Examine功能先得到BlockNameFieldName,便于快速定位

 

8

如图8,在Item属性窗体中留意下Collum NameCopy Value from ItemSynchronize with Item等属性,也许就能当前Block中执行F11查询操作,然后查看System.Last_Query的值,可以得 得到你想要得答案了

3Help—Diagnostics— Trace

如果查看Item属性仍无果,我一般把Sql Trace作为最后一招,它能将记录在起始时间点之间当前Form与数据库后台的所有交互操作与过程,里面包含了包括系统等待,绑定变量,查询语句等大量信息,查看比较费劲,不过可以利用Tkprof命令将trace文件转换成易于阅读的格式。

Tkprof 命令是Oracle 客户端的一个可执行文件,一般在8.0.6\BIN 目录下可以找到;TKPROF 的命令行格式是:Tkprof tricefile outputfile [Sys=] [Explain=] [Sort=] [Table=] [Print=] [Insert=]

示例:

Tkprof c:\devp2_ora_19657_8NICO.trc C:\196570.prf

Tkprof c:\devp2_ora_19657_8NICO.trc C:\196571.prf Sys=no

Tkprof c:\devp2_ora_19657_8NICO.trc C:\196572.prf Sys=no  Explain=APPS/WDBSVRAPP

 

9

如图9 要查询得到界面上的total字段,利用方法2却一无所获

 

10

那么按图9所示启用Trace,使用F11查询得到数据后终止Trace

11

根据系统提示将.trc文件下载到本地,利用Tkprof优化格式后,可以在其中发现下面的语句:

12

虽然没有直接得到答案,但借此我们可以推断出数据可能来源于汇总字段,点开图9界面Details按钮,如图13

13

根据方法1和方法2 ,以及图12的提示,就可以得到Total字段的取值方法了,过程略。

 

 

本章小结

                        以上方法都是日常工作经验的总结,查找数据 源更多的要依靠经验的积累。

                        以上的方法可以根据实际情况,组合使用,效果更佳。

评论 (0 个评论)

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 00:27 , Processed in 0.012641 second(s), 12 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部