我要发疯了

yh10231033 2010-07-14 09:08:05
返回错误描述:
窗口:w_sfc_904a
控件:cb_3
出错行;162
错误号:2
出错描述:Null object reference at line 162 in clicked event of object cb_3 of w_sfc_904a.


在cb_3 中代码:

if dw_2.rowcount() = 0 then
dw_1.object.emp_no.protect = 0
dw_1.object.plan_picking.protect = 0
else
dw_1.object.emp_no.protect = 1
dw_1.object.plan_picking.protect = 1
end if

出错的行:162正好是:if dw_2.rowcount() = 0 then

而dw_2 在窗口:w_sfc_904a 中是一个数据窗口,是显示数据给用户看的,所以我怎么都觉得这个dw_2怎么可能是Null object ,


cb_3按牛是窗口界面上是一个保存按牛,而这个保存也不是一直错误,如果一直错误,我根本无法保存数据了。

这样的错误,直到昨天都一直存在,而这个错误,就不知道是怎么出来的,在客户端的系统错误日志文件中能看到。

知道的请帮忙回答,不知道的,请帮顶
...全文
195 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
yh10231033 2010-07-15
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 new4everlau 的回复:]
是否是升级过来的PB?
export,然后再import试试,看看报错否;
如果还出现,建议重建这个窗体
[/Quote]

export,然后再import了,一点错误也没有
yh10231033 2010-07-15
  • 打赏
  • 举报
回复
不是升级过来的,自己建立的
new4everlau 2010-07-15
  • 打赏
  • 举报
回复
是否是升级过来的PB?
export,然后再import试试,看看报错否;
如果还出现,建议重建这个窗体
yh10231033 2010-07-15
  • 打赏
  • 举报
回复
今天一早来查了下,果然这个错误还是存在啊,在昨天晚上 2010-07-14 20:57:40.010发生了一次,这是为什么啊,有没人知道啊。。。。。。继续顶啊,
yh10231033 2010-07-15
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 chengg0769 的回复:]
问题是这个错误一直只出现在你某个客户端。而你自己的程序在自己电脑上测试会出现这样的错误吗?

建议完全编译一次。把那个客户端的程序更新一下。。。

2010/07/13这一天,总共保存了工票:385条,出错次数:1次----说明程序本身问题并不大,是程序问题,出错的几率就会很高。多半是客户端程序不一致。
[/Quote]
谢谢你的解答,在之前有人提过了,我也试了,我也同样说了,错误还在继续,
根本无法解决,
而刚刚我的另外一个帖子,也差不多是无法解决了,有人说在我是在等高手的垂怜,如果有不服气的,尽管去试试,我所提出来的问题,有几个人能解决,
所以,还是算了,揭贴吧,这些问题,根本不该来论坛问,网络无高手啊 。
chengg0769 2010-07-15
  • 打赏
  • 举报
回复
问题是这个错误一直只出现在你某个客户端。而你自己的程序在自己电脑上测试会出现这样的错误吗?

建议完全编译一次。把那个客户端的程序更新一下。。。

2010/07/13这一天,总共保存了工票:385条,出错次数:1次----说明程序本身问题并不大,是程序问题,出错的几率就会很高。多半是客户端程序不一致。
WYL20031722 2010-07-15
  • 打赏
  • 举报
回复
换个思路,将dw_2的查询内容写成sql语句,比如
long ll_count
select count(*) intp :ll_count from xxx where ....;
//
if sqlca.sqlcode <> 0 then
//将sqlca.sqlerrtext写入你的日志,找找原因
end if
//if dw_2.rowcount() = 0 then
if ll_count = 0 then
dw_1.object.emp_no.protect = 0
dw_1.object.plan_picking.protect = 0
else
dw_1.object.emp_no.protect = 1
dw_1.object.plan_picking.protect = 1
end if
yh10231033 2010-07-14
  • 打赏
  • 举报
回复
仔细想想,估计完全编译后,全部更新,问题能解决的可能性,,,,,个人认为不大
yh10231033 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 gmstzs 的回复:]
我的感觉是有关系的,因为我有次也是和你一样的问题,程序里明明那么写的但是执行了就是不对。
我猜测PB在编译的时候会记录PBD的内容甚至日期。这样你运行EXE的时候如果他按照你新编译的路径或者方法去找PBD的内容,而这时候你的PBD是旧的 ,那么很有可能出现不正常的现象。不过如果运行有问题绝对是代码里的。PB有些东西的用法和事实现方式和我们理解的有差距,所以通过这些错误我发现我对PB理解更深了,而……
[/Quote]

恩,我现在进行完全编译,这个要太多时间了,我编译后再全部更新一次,再等着看看会不会出问题
gmstzs 2010-07-14
  • 打赏
  • 举报
回复
我的感觉是有关系的,因为我有次也是和你一样的问题,程序里明明那么写的但是执行了就是不对。
我猜测PB在编译的时候会记录PBD的内容甚至日期。这样你运行EXE的时候如果他按照你新编译的路径或者方法去找PBD的内容,而这时候你的PBD是旧的 ,那么很有可能出现不正常的现象。不过如果运行有问题绝对是代码里的。PB有些东西的用法和事实现方式和我们理解的有差距,所以通过这些错误我发现我对PB理解更深了,而且至今没有发现因为PB得BUG导致我程序不能运行的地方
yh10231033 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 wag_enu 的回复:]
Regenerate 一下 w_sfc_904a 试试。。。
[/Quote]
好高兴看到你的回复啊,Regenerate,是没有任何问题的
wag_enu 2010-07-14
  • 打赏
  • 举报
回复
Regenerate 一下 w_sfc_904a 试试。。。
yh10231033 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 gmstzs 的回复:]
我感觉像是你的程序里PBD不一致
比如你有5个PBD 而你最后一次只更新了3个 其他2个是原来了,这个很容易出问题。
你确定你所有程序都是一致的最新的?
[/Quote]

我的程序里,有10多个pbd,我每次都是不完全编译,哪个修改了,就把哪个更新下,客户端是自动更新的,但客户端大多是车间,库房,电脑比较差,更新太多,他们会有意见的,而我的pbd,之间不会互相调用,除了app所在的那个pbd会调用其它的pbd,而调用也只是简单的open,没其它东西了。
pbd不是一致的,这个也有关系吗?
gmstzs 2010-07-14
  • 打赏
  • 举报
回复
我感觉像是你的程序里PBD不一致
比如你有5个PBD 而你最后一次只更新了3个 其他2个是原来了,这个很容易出问题。
你确定你所有程序都是一致的最新的?
yh10231033 2010-07-14
  • 打赏
  • 举报
回复
举个例子,open(),可以打开一个窗口,openuserobject ()可以打开一个用户自定义的对象,
现在,我自定义一个tabpage对象,用openuserobject()可以打开,但是,用open()一打开,恭喜pb ,又崩溃了,而且try...catch是一点用也没有。。。。。直接被pb的崩溃给无视了,

还有pb的app的事件:systemerror,同样在pb崩溃的时候也直接被无视了,而更让人抓狂的是,pb的程序在关闭的时候,还会出现一个内存不能读,的错误对话框,点确定,窗口关了又重新出现怎么都关不了,那怕在close事件里写上 halt,halt close 都无济于事
yh10231033 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wyl20031722 的回复:]
这样试试,if isvalid(dw_2) then
...
else
Sleep(1)
cb_1.postevnet(clicked!)
end if
如果发现dw_2非法,重新调用此代码一次。
[/Quote]

dw_2.是在窗口上摆着的,用来输入数据的,我觉得,这个pb出现的null object 肯定有问题,也许是pb自己的漏洞,pb的漏洞也不少了,
WYL20031722 2010-07-14
  • 打赏
  • 举报
回复
这样试试,if isvalid(dw_2) then
...
else
Sleep(1)
cb_1.postevnet(clicked!)
end if
如果发现dw_2非法,重新调用此代码一次。
yh10231033 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wyl20031722 的回复:]
可能发生的事一定会发生,知道有问题就一定要改
[/Quote]
老大,我现在就是想知道是什么原因导致它发生的,一个在窗口中明明白白的放着的数据窗口,会说是null object ?
WYL20031722 2010-07-14
  • 打赏
  • 举报
回复
可能发生的事一定会发生,知道有问题就一定要改
yh10231033 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wyl20031722 的回复:]
会不会是数据库中有锁啊,导致dw_2在取数据的时候在等待别人将锁释放。
[/Quote]

Null object reference at line 162 in clicked event of object cb_3 of w_sfc_904a
数据库锁住了,会出现这样的null错误吗?
加载更多回复(9)

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧