Cause:
Solution: 将Item间距离拉大一些。
Cause: 由于是在测试,B上还没有内容,只选择了view stacked canvasA。症状是A的内容不显示,只是用TAB键的时候才会把A切换出来。造成这个的原因是B虽然没有显示,但是也是存在的,且是较大片空白,盖住了A。--shit...
Solution:将背景色、前景色改成别的颜色,再分别改回automatic、automatic、transparent.
developer error:set_window_position called with invalid relation:EMP
Solution:原来是PRE-FORM Trigger中的app_window.set_window_position('EMP', 'FIRST_WINDOW');写成了
app_window.set_window_position('EMP','EMP');将'FIRST_WINDOW'用WINDOW名替换掉了。
这里切记:只是写相应的BLOCKNAME。
6.
Block:B_XXXX
Form:F_XXXX
FRM-30085: Unable to adjust form foroutput
Solution:将Block的DML Da
7.
基于view的block,在CRTL+F11查询后变为灰色,无法进行新增等操作,关闭画面重新打开后,画面显示正常,一旦执行查询完毕则变
Solution: 增加on-insert Trigger后正常。
8.Block da
测试运行Form,在保存时报错:on-insert抛出no-da
常,之后看了一下Formblock的ROW_ID项,杯具,不知道长度怎么变成4了…
9.有时候在post-query里面对某个要显示的非数据库item赋值,这样会造成在鼠标切换到另一条记录时以及查询完毕没有做任何改动却被
提示是否要保存修改。
10.SET_ITEM_PROPERTY用来设置某个ITEM的某个属性,可以说是设置Block中某个Item整体的某个属性,有时候要设置某条记录中的Item属性(如当前记录),这样可以使用SET_ITEM_INSTANCE_PROPERTY.
11.Block的insert_allowed属性设置为Y,在when-new-block-instance里面用set_block_property设置insert_allowed为false,这样新增记录的按钮会亮,但不能新增记录。
frm-41050: You cannot update thisrecord.
Compilation unit analysis terminated
procedure等的spec和body参数不一致的时候,编译会报这个错误。
Solution:在update等及commit之前写:System.Message_Level := 25;
为了不改动app_custom里面的
而把每个result block的 "previous navigationblock"都改成了query_find block。
19.
如在KEY-CLRRECTrigger中写APP_EXCEPTION.DISABLED;则画面上的擦除按钮虽亮却失效。
20.
22.Stackedcanvas的水平滚动条位置是由canvas本身的view port的下边界决定,将其viewport下界设置为比canvas最下面的记录多出一个滚动条的高度的位置。
View port的宽度决定了stacked canvas 在content canvas上的视界宽度。
有时会发现水平滚动条拉到最左端时,stacked canvas右边界却在垂直滚动条的左边很远的距离,这是stackedcanvas的canvas太宽造成的,应设置为靠紧最右边Item。
Stacked canvas 的垂直滚动条一般放在contentcanvas上(即一般设置为block显示垂直滚动条,并显示于content canvas,stackedcanvas显示水平滚动条,显示于stacked canvas)。
23.Tools等菜单项,例在form级增加special1(special xx....)trigger,里面可以写这个菜单项要执行的代码,初始化此菜单项可以在when-new-form-instance中用类似APP_SPECIAL.INSTANTIATE('SPECIAL1','生成明细数据', 'POBKORD',TRUE);来实现。
24.LIST条目,Elements inList增加以后,没法删除掉,只得删掉这个Item重新建一个,如果Elements inList多的话,会很麻烦,要一个一个重新写。
Solution:使用Shift+Ctrl+小于号(Shift+Ctrl+<)快捷键可以删除掉多余的Elements
25.按钮按过之后灰,可以按后go_block,go_item,到其它Block,然后在when-new-record-instance里面写使controlblock的按钮失效,当然也可以在其它trigger里面写,看情形。
解决方法:
forms\java\oracle\forms\registry\Registry.dat
修改app.ui.lovButtons=true(默认是false)
注:个人没测试过,不知效果。
27.FRM-40654 Record has been updatedby another user.Re-query to see change.
不知道为什么出这个错误,新写的Form,BaseView,没什么another user在用,后自己写了个on-lock就没再出现这。
28.限制在新增记录的时候必须第一个输入某栏位,直接把这个Item设为First navigateitem即可,即在block中位置排在最上面,或者排在它上面的item
29.状态栏提示信息。如果发现在保存记录等情形下应该在Window底部显示的如"FRM-40400:Transaction complete:1 recordsapplied and saved."没有显示,应该是Form Module的ConsoleWindow属性被设为了Null。改为随便设一个Window即可。
附属性说明:
Console Windowproperty
Specifies thename of the window that should display the Form Builder console.
On MicrosoftWindows, the console is always displayed on the MDI applicationwindow, rather than on any particular window in the form; however,you must still set this property to the name of a form window toindicate that you want the console to bedisplayed.
If you do notwant a form to have a console, set this property to<Null>.
30.QUERY_FIND类型,Find block的queryallowed设为NO,发现光标在Resultblock时,手电筒不可用,如果下面还有别的blcok,光标点过去,手电筒亮了,再点回Resultblock,手电筒可用。
Solution:把Find block的queryallowed设为YES。(I Just wanna say "shit!")
31.Master-Detail类型的两个Block,发现Master没有值的时候,在DetailBlock上执行CTRL+F11竟然把所有记录都查出来了。
Solution:Relations的属性PreventMasterless Operations设置为Yes
32.Lov 的Filter BeforeDisplay如果设置为Y,且这个lov使用的recordgroup的SQL中用了别名,就会有问题,会报frm-40502。因为Filter
33.Block 的Query Data Source Type为FROMclause query时,报FRM-30100: Block must have at least one primary keyitem.----把DML Data Target Type设置为None maybe有效。
34.录入数据时,选择日期--确定,系统询问是否保存记录。
原 因:数据块1trigger:WHEN-NEW-BLOCK-INSTANCE中有写execute_query;因此录入时,光标从当前块(数据块1)跳到数据块:CALENDAR-接着又回到当前块(数据块1),触发数据块1的WHEN-NEW-BLOCK-INSTANCE,执行execute_query;
35.Form中的Procedure中可以以下方式来写
BEGIN
36.在注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Oracle下新建字符串值ORACLE_APPLICATIONS,值设定为TRUE,重新打开Form Builder可以看到所有引用的对象后面都会带一个图标,以方便区分哪些对象是引用的,哪些对象是属于自己的。
症状:Form查询的时候,会弹出Lov让选择值
Cause:查询时,Displayitem的显示值是在Post-query中由此记录的DBitem得到并赋予的,由于发生Validation,而Lov中此时已无此值。
Solution:在Post-query中赋值后加上
SET_RECORD_PROPERTY(:SYSTEM.TRIGGER_RECORD,:SYSTEM.TRIGGER_BLOCK,STATUS,QUERY_STATUS);