row changed between retrieve and update
在数据窗口的update properties没问题时,注意多数据窗口update的写法。
dw_1.update.(true,false):update()->resetupdate()->commit,避免把resetupdate和commit写到两处。
取dropdowndw的display值
dw_1.describe("evaluate('lookupdisplay(tybq)', " + string(i) + ")")
Importstring和rowscopy
ls_data = dw_1.object.datawindow.data dw_1.importstring(ls_data),如果ls_data中有tab符,就会报错,而rowscopy不会。
PB + Oracle精简客户端
设置path、tns_admin和nls_lang环境变量
EDITMASK
对于没有数据源的数据窗口中数值类型的列的EDIT属性可以设置成EDITMASK,这样就自动给空值填0了。
itemchanged和itemerror。
dropdowndw类型列,输入拼音,而列本身是数值类型,故itemchanged返回值为2(不接受拼音,在事件中重新赋值)。但有些数据窗口是继承的,可能在keyenter事件中写了改变焦点的代码而触发了itemerror,故输入拼音就被itemerror拒绝了,所以对于此类继承的数据窗口需在itemerror事件中写此列的例外(itemerror返回2强制接收输入的拼音),注意去掉继承父类的Extend ancestor script勾选。
Grid类型数据窗口
调整列顺序勾选"column moving","mouse selection";调整文本框位置需改position中的layer属性。
窗口函数的POST
this.function post wf_resize()
pb编译exe
(不编译pbd时),需要将动态赋值的dataobject写到资源文件pbr中。
调试过程中,add watch
可以手工填写要获取的数据窗口信息。
Getfullstate、setfullstate。select into后和变量名之间要有空格。
Datawindow error显示SQL中的具体参数值
修改sqlca.dbparm增加DisableBind=1
Response窗口
Response窗口打开时,注意指定父窗口。如果是从菜单打开response窗口,没有父窗口,就限制不住了。open(w_child,w_main)
数据窗口粘贴不上内容
考虑列的长度,或者列的显示长度是否不够。
数据窗口中计算域调用PB的函数
如果函数中有查库操作,注意效率。
Grid类型数据窗口不打印边框
空白处general属性,display选择off(1)
第三方DLL
第三方dll函数的参数中如果包含长字符串,调用前先space分配空间,防止PB崩溃。
数据窗口设置滚动条分割
//分隔
string ls_location
ls_location = dw_property.object.drug_property_dict_property_1.x
dw_property.Object.datawindow.horizontalscrollsplit = ls_location
报用户对象的实例变量无法解决 unresolvable external 变量名
用户对象的实例变量名和应用程序的全局变量名冲突。
复制整列
Dw_1.object.col1.primary = dw2.object.col2.primary
调试时跟踪变量的值
Add watch列表中右键,选择break on change
获取内存中某地址的字符串值
ls_tmp =string(地址,"Address")
手动触发doubleclicked事件
dw_1.event doubleclicked(0,0,dw_1.GetRow(),dw_1.object.#1)
或
//pb未公开的函数
dwobject adwo,adwo2
adwo2=this.object
adwo=adwo2.__get_attribute('col1',false)
this.event doubleclicked( 1,1,1,adwo)
字符串赋值时
内容注意避免~,包含转义字符会出错。
Reference和value参数
数据窗口直接用value就行,reference会导致调试崩溃。
数据窗口动态调整行高
勾选行的autosize height属性,如果行高初始值大(如画调查表类数据窗口),可先将detail的height改为0,这样会触发大小调整。
WEB
http请求
- 发送http请求时,posturl在url参数中不能传递?以后的参数,需使用OLE控件Microsoft.XMLHttp来发送请求。可以使用fiddler工具来监控请求的报文格式。
- 调用服务的方法
pb自带soap模版,inet和internetresult进行posturl,ole调用http组件,ole调用pocketsoap。java服务用后三种方法搭配soapui工具