hur.cn - 华软网

 热门搜索

头疼死了!弄了一下午也没有解决掉的问题!请高手赐教!!!

  作者:未知    来源:网络    更新时间:2018/11/9
我在cb_close中编写了以下程序,作用是在关闭窗口之前,首先判断用户是否对数据窗口的记录做了修改,但按下"关闭"后出现:
error:null object reference at line 5 in clicked event of object cb_close of w_add_information
并没有出现messagebox对话框.
 而第5行正好是: mcount=dw_add.modifiedcount()

  我找不到原因,希望大家帮帮助看看!!谢谢..

//定义两个变量
integer mcount
integer updateornot
//判断数据窗口中是否有未修改的记录
 mcount=dw_add.modifiedcount()
   //没有未修改的,则关闭窗口
 if mcount=0 then 
close(w_add_information)
elseif mcount>0 then
//询问是否保存修改
updateornot=messagebox('保存修改','您修改了数据窗口中的数据,现在您保存修改吗?',question!,yesnocancel!)
if updateornot=1 then 
//保存修改
if update(w_add_information.dw_add,true,false)=1 then 
w_add_information.dw_add.resetupdate()
commit ;
else 
rollback;
messagebox('毛病!!!','保存数据失利!!')
end if 
close(w_add_information)
elseif updateornot=2 then 
rollback;
close(w_add_information)
end if 
end if 

------华软网友回答------
呵呵,那是啊,在所有的
close(w_add_information)
后面加上
return
------华软网友回复------
加了照旧不行啊..!!!
------华软网友回复------
它报对象不存留!是否是数据窗口没有dataobject啊?
------华软网友回复------
line 5?那再在这个:
mcount=dw_add.modifiedcount()
前面增加
dw_add.AcceptText()
试试
------华软网友回复------
你的dw_add是否是放在tab页里面的啊,如果是那要加上tab页的调用
tab.tabpage.dw_add
------华软网友回复------
把EVENT放到CLOSE QUERY中去
------华软网友回复------
这个小CASE有那么头痛吗?

-------------------------
CLOSE QUERY:

dw_1.acceptText ()
if dw_1.modifiedCount () > 0 OR dw_1.deletedCount () > 0 then
CHOOSE CASE messageBox ('提醒', '数据已经修改,是否要保存?', exclamation!, yesNoCancel!, 1) 
CASE 1
if dw_1.update () = 1 then 
commit using sqlca;
return 0
else
rollback using sqlca;
return 1
end if
CASE 2
return 0
CASE 3
return 1
END CHOOSE
end if

------华软网友回复------
你可能将事件放错了,DW_Add已经被事件给关闭了,你应该这样分析一下:
IF IsValid(dw_add) Then //如果当前数据窗口另有效
   IF dw_add.Modifiedcount() + dw_add.DeletedCount > 0 Then
//这里写入你的提醒代码
End if
End if
------华软网友回复------
空对象,即没有dw_add这个对象,确认一下。
------华软网友回复------
支持 k1933的方法!应该判断一下的

------华软网友回复------
这个问题还没有解决吗?
------华软网友回复------
同上      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。