PowerBuilder
zbguohua
这个作者很懒,什么都没留下…
展开
-
powerbulder中的destroy 和 setnull
powerbuilder 对象的创建 引用计数和销毁原创 2024-07-20 14:41:16 · 166 阅读 · 0 评论 -
pb的内部类
forwardglobal type uo_test内部类 from nonvisualobjectend typeend forwardglobal type uo_test内部类 from nonvisualobjectend typeglobal uo_test内部类 uo_test内部类forward prototypespublic subroutine of_test内部类 (integer a_cnt)end prototypespublic subroutine .原创 2021-09-24 20:52:16 · 270 阅读 · 0 评论 -
pb12.5通过sendmessage读取mle中的一行文字
在pb11.5中,是不需要使用blob转换的,是升级到12.5后,才被迫换成这种方式的外部函数声明:function long SendMessage(ulong hWnd, uint msg, long wParam, ref blob lParam) library "user32.dll" alias for "SendMessageA;ansi"long numsblob lp_bufferstring ls_textfor i=0 to mle_1.linecount( )...原创 2021-05-24 10:33:00 · 621 阅读 · 0 评论 -
用powerbuilder实现汉诺塔的栈算法(用excel展示栈的变化过程)
用于保存汉诺塔的结构定义:global type str_任务 from structure integer 盘子个数 character a起点柱 character 中转柱 character 目标柱end type每个汉诺塔, 都是用这个结构来保存的用于求解的栈的类:forwardglobal type uo_汉诺塔任务栈 from nonvisualobjectend typeend forwardglobal type uo_汉诺塔任务栈 from原创 2020-10-15 21:42:47 · 254 阅读 · 0 评论 -
dwControl.object.data 是二维数组,每个成员都是一维数组
cnt=ds_半成品.retrieve(a_id)原创 2020-04-17 10:19:54 · 226 阅读 · 0 评论 -
pb match的问题
match("【门扇·分类单价1】", "原创 2014-06-18 08:35:04 · 2144 阅读 · 0 评论 -
pb中window的windowstate属性与setredraw函数
win.setredraw(false) win.windowstate=maximize!win.setredraw(true)原创 2014-11-12 00:26:24 · 4674 阅读 · 1 评论 -
dropdownlistbox 对text属性赋值为空字串后, 显示不更新
ddlb_1.text=""不论ddlb_1的Item中原创 2014-10-20 16:15:40 · 1330 阅读 · 0 评论 -
datawindow的Find函数
应该算做是一个Bug吧 例: dw_1.setItem(1, "fname", "Nike")j=dw_1.find("fname='Nike '", 1, dw_1.rowcount()) //注意, Nike后面带有一个空格 这时pb的find函数返回了1按Find函数说明, 应该返回值为0或者>1的其它行号总之不应该返回1, 因为函数实参中给的数据在尾部多了一个空原创 2015-11-05 22:38:45 · 4716 阅读 · 0 评论 -
Sharedobject与pb多线程
PB没有提供完整的多线程机制,只是提供了一种通过Sharedobject进行线程间通信的方式, 实际是以一个新线程启动另一个虚拟机, 并在其中实例化一个对象来运行一段程序(函数), 并在完成后执行回调。这个具体概念目前还不是特别清晰, 从SharedObjectRegister函数的帮助中看, 原文写的是"opens a separate runtime session", 直译是打开一...原创 2018-05-21 17:27:05 · 1747 阅读 · 1 评论 -
isnumber()函数注意事项
string ls_套件id="1,2,3"string 套件id数组[]if isnumber(ls_套件id) then cnt=1 套件id数组[1]=ls_套件idelse cnt=gf_拆分字串(ls_套件id, ",", 套件id数组)end if以上代码执行结果:cnt=1, 套件id数组[1]="1,2,3"另外, long("1,2...原创 2018-09-18 18:06:04 · 5568 阅读 · 0 评论 -
datawindowobject属性值
一般情况下, dwo的属性值是布尔型时, 可以用true/false, 1/0, yes/no, 但也有个别特殊属性不是这样的 例: dw_1.modify("datawindow.detail.height.autosize=yes") 只可使用yes/no赋值, 不区分大小写, 可以带引号或不带引号不可用True/False, 1/0原创 2013-04-30 10:54:53 · 797 阅读 · 0 评论 -
关于identity
<br />在Ms sql server 中, 有Identity类型(标识列, 自增长列).<br /> <br />如果使用 ole db连接数据库, Pb默认使用 select @@identity语法来获得dw中Identity列的新值(在update()之后, dw自动从数据库中获得). <br /> <br />在使用了向第二张表中插入新行的"触发器"的情况下, 如果第二张表中也有Identity列, 会导致dw在Update()后, 获得第二张表的最后的identity<br /> <br /原创 2010-07-05 16:15:00 · 745 阅读 · 0 评论 -
慎用today 做列初始值
在 datawindow 定义界面的 [column specification] tab页上, 可以定义列的初始值(Initial Value)对于datetime类型的字段, 要慎用today(不是today()函数)来做初始值, 因为这代表Pb将使用datetime类型的 today() 的返回值 , 也就是包括时分秒在内的数据.原创 2010-07-05 16:25:00 · 626 阅读 · 0 评论 -
post function 与timer
<br />在post function 调用函数时, 被调用函数内的timer()函数未激活timer事件, 改为triger function调用后正常原创 2010-10-05 10:07:00 · 450 阅读 · 0 评论 -
item的 original值
经试验, getItemNumber( row, 1, Primary!, true) 取得item的原始值时, 如果getItemStatus(row, 0, primary!)是Newmodified!, 那么原始值与当前值是一样的 因此, 只判断DataModified!是不可靠的, 原始值与当前值有可能相同 也可能不同 只有当数据行是retrieve自数据库时, datamodified!才会代表原始值与当前值不一致 如果是insertrow()的新增行, 当Ite原创 2010-10-07 09:48:00 · 644 阅读 · 0 评论 -
retrieveend 事件中的rowcount参数与rowcount()函数的区别
<br />retrieveend事件中的rowcount参数中保存的是从数据库中取到的行数, rowcount()函数返回的是primary缓冲区中的行数.<br /> <br />区别显而易见, 参数rowcount是包括filter缓冲区中的行数在内的.<br /> <br />由于retrieve()函数执行后会把不符合filter条件的行立即移入filter区, 因此, rowcount与rowcount()的值是不一定相等的.<br /> <br />强调这一点是有实际意义的:<br />原创 2011-05-23 18:09:00 · 1478 阅读 · 0 评论 -
classname函数与控件name字串
控件.classname() 返回在painter中对控件的命名classname( 对象 ) 返回对象的 name 字串一般的, 不管是否可见, 只要是在painter中添加的控件, 都可以直接使用 控件.classname() 而在代码中通过create 类名 来创建的对象i原创 2011-07-07 11:35:02 · 957 阅读 · 0 评论 -
并发业务实例
2012-2-18 13:16:43这个是实际业务开发中的例子工作流程:订单审核-->审核后的订单加入生产计划(生产计划中不能包括未审核订单)并发可能导致的错误结果①订单A, 通过审核②查看通过审核的订单列表,其中包括了订单A③选中订单A,准备加入生产计划④生产计划保存前, 订单A在另一地点被反审核⑤生产计划保存成功, 包括了一个未审核的订单A解决办法:使用dw原创 2012-02-18 13:25:25 · 647 阅读 · 0 评论 -
datewindow的update where子句控制并发的实例
dw的更新条件子句控制“并发”的实例2011-5-20 10:08 如上图有一个【发货记录表】,有两个部门操作① 是成品发货,要记录装车时间和条码扫描人② 是财务,要记录出库时间(实际是收款时间)和审核人 虽然在成品发货时,不会修改【财务审核人/出库时间】,但是在 update的where子句中,仍要包原创 2011-05-20 10:35:00 · 726 阅读 · 0 评论 -
修改protect属性, 可能会触发rowfocuschanged事件
如果dw的所有字段都不可编辑, 修改protect 或是修改tabsequence属性, 可能会触发rowfocuschanged事件, 这是因为原来没有任何字段具有focus(处于可编辑状态), 修改protect后, 第一个可编辑的字段将会获得focus,变成可编辑状态, 进而触发rowfocuschanged事件原创 2012-04-20 13:08:18 · 890 阅读 · 0 评论 -
数据库索引与并发
为表中的某个列或是列组合建立索引, 作用有两个方面: 1.提高检索效率: 这实际上是把"B树"类的算法间接引入到了自己的程序中来, 客观上提高了客户的操作体验 2.提高并发度: 如果存在索引, DBMS就不必进行全表扫描(可能引起加锁超时或死锁等). MSSQL SERVER是自动处理"锁"的, 单用户程序开发者不太意识到锁的存在. 锁是比较复杂的一个对象, 有不同的粒度和原创 2012-05-24 14:42:31 · 1432 阅读 · 0 评论 -
crosstab数据窗口的StaticMode
如果第一次执行dw.modify("datawindow.crosstab.staticmode='yes'")时, dw中已经有至少一行, 则不论后续retrieve时是否有返回行, 始终执行正常 如果第一次执行dw.modify("datawindow.crosstab.staticmode='yes'")时, dw的行数为0, 则modify失败, 提示语法错误, 且再retriev原创 2012-07-11 15:53:44 · 1041 阅读 · 0 评论 -
PB中的itemchanged事件
最近发现一个有趣的现象:在dw的itemchanged事件中, 如果调用 find()函数, 将导致getitemxxx()函数返回不了修改前的字段值 正常情况下, 在Itemchanged事件中, 调用getItemNumber()等函数时, 将会取得修改前的字段值, 而事件的参数data中保存着修改后的值(string). 如果先调用了find()函数, 就会导致无法取得修原创 2010-02-20 22:51:00 · 7076 阅读 · 0 评论