- 博客(48)
- 问答 (1)
- 收藏
- 关注
原创 sharedata卡死、程序崩溃
最近给公司处理老版本中发现的bug,某个sharedata代码,数据量一大总是崩溃,且不报错。测试了几种可能,最后跟踪sql发现一个隐藏比较深的问题。举例:dw_1.sharedata(dw_2)如果dw_1或dw_2中,有些字段的edit面板中的dddw属性,里面的dddw对象dw中本身还有某些字段有dddw,存在设置错误,比如dddw不对或者value和display不对。一般需要跟踪SQL来发现,再加一点直觉。...
2021-03-24 09:41:34
359
转载 PB powerbuilder 数据库窗口的 scrolltorow 无效的说明(转)
PB 数据库窗口设计时,会常用到scrolltorow ,即跳转到指定的行。而经常有人抱怨,该函数无效。其罪魁祸首就是setrow这个函数,如果在scrolltorow函数前面使用了setrow,并且参数row值相同,那么scrolltorow是看不到效果的。因为如果当scrolltorow跳转的行是当前行,数据库窗口不会scroll,而setrow恰好是把指定行设置为当前行。建议:先scrolltorow,再setrow。另外,scrolltorow到的行是不会高亮显示的,如果需要,.
2020-06-10 10:32:28
969
原创 PB9对自定义SQL语句的检测很奇怪
结论在PB9中,alter + update 组合语句需要注意分开写,两者之间加 go 也不行举例:create + insert 组合语句:SQLserver2008数据库执行成功PB9执行成功//语句一ls_sql = "create table T_student (~r~n" +& "[id] [tinyint] IDENTITY(1,1) NOT NULL,~r~n" +& "[stu_id] .
2020-06-04 10:48:36
312
原创 PB中CreateDirectory、Fileopen不成功返回-1
例:li_re = CreateDirectory( ls_dir )注意点: ls_dir中,间隔号是“\“反斜杠,而不是除号 “/”; 可以为绝对路径,也可以为相对路径,建议绝对路径; 最容易忽略的一点,一次只能向下建立一层目录AAA(D:\AAA),不能连续建立一层以上目录(D:\AAA\BBB),只能先建立AAA后再建立BBB。 ...
2020-03-31 17:42:13
1362
原创 PB datawindow 数据窗口列项突破char字符串长度为255的限制
很多时候我们需要对从数据库中取出长字符串,但是PB里datawindow默认最大只能取255个字符,哪怕直接修改editsource也不能突破255限制。经过探索,亲测以下方法可行。1、首先,数据库表(标量值函数也可以)T_chcker中,某字段cmemo的长度需要超过255,例如设为varchar(2000),如下图:图1.数据库字段长度2、数据源连接属性里的Synt...
2019-11-13 09:32:48
1839
原创 同一段sql语句,每次执行结果(记录数目)不一样
同一段sql语句,每次执行结果(记录数目)不一样。可能是字段类型的问题,查询处的结果集中,会出现 0 变成如 0.0004541248577E-15 这种浮点数字。 解决办法:在做关系比较或者join on的时候,需要把用到的浮点数字段都转换成四舍五入到固定位数的decimal格式,把null转换成空值。如:convert(decimal(18,3),iquantity)...
2018-09-26 11:45:56
4312
转载 jsp页面:request.getContextPath()报错
报错内容:Multiple annotations found at this line:- String cannot be resolved to a type- The method getContextPath() from the type HttpServletRequest refers to the missing type String解决
2017-07-11 14:54:45
7282
原创 关于数据库里的值是0.05,通过dw取出来是0.049999的尾差问题
如果数据库表里的字段属性是float,那么PB连接数据库表的时候,float会转成number,这时候对dw取数(dw.getitemdecimal或者dw.object.iprice[row]),会得到有尾差的数如:数据库的表 test 里的字段 iprice 的属性是float,值0.05dw.retrieve()ld_price =
2017-07-07 12:15:29
920
原创 动态创建dw的时候运行失败及列名选择
动态创建dw的时候,务必先把SQL语句通过新建一个dw模拟一下,看看生成的列名是不是有特殊的情况,比如动态创建dw的sql语句类似为:select ...cinvcode from (select ... from ...)aleft join inventory,当表别名a在数据库中没有的时候,做:ls_cinvcode = dw.object.cinvcode[row]...
2017-07-07 12:05:12
344
原创 PB中dw合并相同内容的行
效果如下图:========================================================================1、在这里调出该设置2、把需要合并的列加入进去。注意这里加进去的三个列的逻辑关系,一个列与上下行内容不同就会带着另外两个列开新行...
2017-07-07 11:56:08
1466
原创 对datawindow里的dddw里的子datawindow过滤
对dw_1里的 edit属性为 dddw 字段里的子dw过滤,增加 child.setsqlselect(ls_oldsql) 是为了避免如果下次还有查询,免得把上次的查询条件带过来datawindowchild childstring ls_oldsqlif dw_1.getchild("ht_ly_depcode",child) = 1 then child.settra
2017-07-07 11:24:51
538
原创 PB使用系统的计算器(其他的小程序也类似)
//PB使用系统的计算器(其他的小程序也类似)string ls_fileExists, ls_fileExists2boolean ls_Exists, ls_Exists2ls_fileExists='c:\windows\calc.exe'ls_fileExists2 = 'C:\Windows\system32\calc.exe'ls_Exists=fileExists(ls_f
2017-06-30 18:26:58
1330
原创 在dw的itemchanged事件里面,修改当前参数data
原则上,在datawindow的itemchanged这个事件中对这三个自带参数:dwo、row、data,是不能修改的,但是我们可以用post的方式对其进行修改,曲线救国,如下情形:这里的wf_add_inv(row,data,dwo_name)函数放在dw的itemchanged事件中,并接受了其三个参数:dwo、row、data,dw_2.post
2017-06-28 19:45:54
1713
原创 dw.find,如果参数endrow 小于 startrow,会出现倒序查询
//dw.find,如果参数endrow小于startrow,会出现倒序查询stringls_cvencode,ls_cinvcodelongll_row,rtn,ll_rowcountdoubleld_pricell_row=1ll_rowcount=dw_2.rowcount()do ll_row=dw...
2017-06-28 19:43:31
634
原创 PB导出图片到指定目录
//PB导出图片到指定目录integer li_FileNumstring ls_imgID, ls_pathblob blob_imglong ll_rowcount, row, ll_serialinteger li_resultli_result = GetFolder( "图片存放路径", ls_path )dw_imgs.settransobject(sqlca)ll_
2017-06-28 18:29:10
1654
1
原创 PB关于字符串按照一定输入格式、规则检测(正则表达式)
在PB中使用正则表达式:matchw(string str,string pattern)比如:验证某个邮箱格式是否正确 代码exp:string ls_matchstring ls_email_addressls_match = "^[A-Z,a-z,0-9,'_']+@[A-Z,a-z,0-9]+\.com?$" //正则表达式规则ls_emai
2017-06-28 18:21:23
4189
1
原创 dw删除某行 和 撤销删除某行
//假删除long ll_rowll_row = dw_2.getrow()if ll_row 0 then dw_2.rowsmove(ll_row,ll_row,primary!,dw_2,1,delete!)end if//撤销删除long ll_currowll_currow = dw_2.getrow()if ll_currow = 0 then
2017-06-28 18:10:44
1489
原创 PB如何禁止拖动带title标题的response窗口
有时候,在PB工程中会有这样的场景:新弹出的窗口是response类型,很大几乎覆盖原来窗口,但是期望它不能被移动。在这个窗口下新建一个事件如下图,以及代码:IF hittestcode = 2 THEN RETURN 1注:hittestcode的值所代表含义如下: 标题:2 最小化:8 最大化/恢复:9 关闭:20 图标:3 左
2017-06-28 17:55:16
1141
转载 PB程序中如何测试网络连接是否中断?(实现Ping命令)
使用connect using sqlca连接数据库,如果和服务器网络不通,会等待很长时间(大约30~60秒) 通过Windows自带的icmp.dll,可以对服务器进行Ping,在很短时间内即可判断网络是否连通。我将网上的一个例子封装为类n_cst_ping,来简化调用过程。forward global type n_cst_ping from nonvisualobject end t
2017-02-28 12:42:31
3217
原创 sharedata简介和实例 dw_1.sharedata(dw_2)
若:dw_1.sharedata(dw_2)dw_2.sharedata(dw_3)所有对其中一个dw的内容修改(如setitem、filter)将会影响到别的两个dw;但是如果是对sql source修改(如调用全局函数gf_add_where来增加条件)则只能在dw_1上修改才有效,以最早的dw_1为主的。1、dw_2.sharedata(dw_3)--
2016-09-11 17:54:42
3423
原创 函数、事件全紫色、紫白色、全白色是啥意思
紫色:祖先窗口有内容紫白色:本窗口和祖先窗口都有内容白色:祖先对象无内容,本窗口(对象)有内容前面没有这个图标的才是没有代码的
2016-04-19 09:53:16
795
转载 PB字符串处理函数
Fill()功能建立一个由指定字符串填充的指定长度的字符串。语法Fill ( chars, n )参数chars:string类型,指定用于重复填充的字符串n:long类型,指定由该函数返回的字符串的长度返回值String。函数执行成功时返回n个字符的字符串,该字符串以参数chars中的字符串重复填充而成。如果参数chars中的字符个数多于n个,那么使用chars字符串的前
2016-04-18 18:25:45
7719
原创 dw在retrieve的时候就截取字符串
在dw的sql source里面,可以直接运用:SELECT LEFT(cname,CHARINDEX('#',cname)) as seedFROM KA_USER CHARINDEX是和pos差不多的函数,用于SQL数据库如:cname字段内容为:abcde#fgCHARINDEX('#',cname)返回6(字符
2016-04-18 18:22:25
525
原创 在dw的itemchanged事件里面,修改当前参数data
原则上,在datawindow的itemchanged这个事件中对这三个自带参数:dwo、row、data,是不能修改的,但是我们可以用post的方式对其进行修改,曲线救国,如下情形:这里的wf_add_inv(row,data,dwo_name)函数放在dw的itemchanged事件中,并接受了其三个自带参数:dwo、row、data。当我们要修改第row行某一列的值时,可以用:
2016-04-18 18:01:51
1051
原创 对datawindow里的dddw里的子datawindow过滤
对dw_1里的 edit属性为 dddw 字段里的子dw过滤,增加 child.setsqlselect(ls_oldsql) 是为了避免如果下次还有查询,免得把上次的查询条件带过来datawindowchild childstring ls_oldsql//原料领用部门if dw_1.getchild("ht_ly_depcode",child) = 1 then child.sett
2016-04-18 17:53:41
859
原创 2015工作年结
统计学与概率论上说,任何事都是概率的产物。没有绝对不可能的事,也没有百分百的事。都是一个概率,完成概率高,这事儿就成了。今天春天,在机缘下和合泰公司相遇,实习两个月,最后八月份转正,一晃到现在,也有半年了。还在大学里的时候,不知何时,也曾经在幻想,如果我脱离学生生涯转步进入社会成为职场人,会到怎样的公司?和怎样一群人共事?从事的是促进人类进步的事业还是无用功?是夕阳产业还是朝阳产业?能否扩
2016-04-18 17:41:13
356
原创 datawindow在调试的时候retrieve不出来的原因
这种情况大概有2个常见原因:1、可能是连接的数据库有问题2、可能是datawindow的retrieve参数和数据库中的参数类型不同
2016-04-18 17:17:29
649
原创 事件 带参数 和 不带参数 的执行代码
事件 带参数 和 不带参数 的执行代码比如,uo_search.postevent(clicked!) ,此时的clicked()事件,若有参数则必须传入参数,同时也会按需求返回数值然而,uo_search.postevent(“clicked”) , 此时的clicked()事件,直接执行事件里面的代码,无需带参数
2016-04-18 17:14:11
560
原创 pb中的连等应用
pb中的连等应用这段代码……一时间脑子搭牢了怎么也看不懂,请教师傅点拨,他话还没说完说完就豁然开朗了。豪蠢啊我T_Tuo_add.enabled = gf_setauth(is_auth_new) = 1//其实是‘uo_add.enabled’等于后面gf_setauth(is_auth_new) = 1的表达式的值是否为true或者false
2016-04-18 17:12:05
292
转载 对DllRegisterServer的调用失败,错误代码为0x8007005的解决办法,注册控件
对DllRegisterServer的调用失败,错误代码为0x8007005的解决办法,注册控件在手工注册DLL文件时,有时会出现“对DllRegisterServer的调用失败,错误代码为0x8007005”的提示,导致注册失败,该问题经常出现在Vista系统和Windows7系统下,解决办法如下: 方法一: 运行(或[win]+r): 然后输入regsvr32 wavdest.dll 回车
2016-04-18 17:07:38
13815
原创 PB在代码中更改数据源
PB在代码中更改数据源直接上代码:transaction itrans_dbitrans_db = create transaction //配置数据库连接对象的属性itrans_db.DBMS = "SYC Sybase ASE"itrans_db.Database = is_mid_datebaseitrans_db.ServerName = is_mid_serveritrans_d
2016-04-18 17:03:13
989
原创 两个dw之间复制某一行数据
两个dw之间复制某一行数据方法一:rowscopy(),只限于列名、顺序、列数都相同的两个dw方法二:当遇到列名、顺序、列数不全部相同的两个dw唉这个就麻烦了,需要2个dw,分别为dw_1、dw_2,且dw_2中必定包含dw_1中所有列。上代码://-------------------------------------------------------------------------
2016-04-18 17:00:00
1216
原创 自定义对象的属性增加
只要在自定义对象的声明实例变量处添加 变量 就能 自动地 在属性栏出现(下图):并且,什么类型变量自动对应什么编辑格式(int对应单行数字编辑框,string对应单行文本编辑框,boolean对应单选框)
2016-04-18 16:43:17
351
原创 如何快捷查看有关datawindow以及其下控件的属性
有时候我们在获取(Describe)或者修改(Modify)一个控件或对象的某个属性,比如visible属性,但是我们忘了怎么写,那我们就可以借用Datawindow Syntax这个工具来看:底下还有Exp例句参考哦~
2016-04-18 16:39:43
524
原创 欢迎使用CSDN-markdown编辑器
数据库字段内容有NULL或空,在PB中判断时如何处理代码块PB代码://显示已审核 if li_i1 = 1 then ls_filter1 = ls_filter1+" (cchecker <> '' and (not isnull(cChecker) )) or " end if //显示未审核 if li_i2 = 1 then ls_filter1 = ls_filter1+
2016-04-18 16:32:59
221
空空如也
android适配器问题(listview点击问题)
2018-03-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人