当前位置: 代码迷 >> PB >> 报错null object解决思路
  详细解决方案

报错null object解决思路

热度:9   发布时间:2016-04-29 08:19:53.0
报错null object
environment e_env
string stafile
if(getenvironment(e_env)<>1) then
  messagebox("","don't work")
halt
end if
stafile = "train.ini"
sqlca.dbms = profilestring(stafile,"database","dbms","")
sqlca.database = profilestring(stafile,"database","database","")
sqlca.userid = profilestring(stafile,"database","userid","")
sqlca.dbpass = profilestring(stafile,"database","databasepassword","")
sqlca.logid = profilestring(stafile,"database","logid","")
sqlca.logpass = profilestring(stafile,"database","logpassword","")
sqlca.servername = profilestring(stafile,"database","servername","")
sqlca.dbparm = profilestring(stafile,"database","dbparm","")

connect using sqlca;

if sqlca.sqlcode<>0 then
MessageBox("无法连接数据库",sqlca.sqlerrtext)
return
else 
messagebox("","数据库连接成功")

end if 
int i
w_main.dw_1.settransobject(sqlca)
i = w_main.dw_1.retrieve()
if i>0 then
w_main.dw_1.scrolltorow(1)
else 
messagebox("","数据库中没有记录")
end if
w_main.dw_1.object.datawindow.readonly = 'yes'
w_main.cb_save.enabled = false




open(w_main)

代码如上,主窗口里放一个数据窗口控件dw_1连接数据窗口d_student_free
d_student_feel连接表stu_student
程序运行后连接数据库可以成功但是报错
null object reference at line 27 in open event of object studentinfo

------解决方案--------------------
應該先在你的Application中連接數據庫:
// Profile cp_mes
SQLCA.DBMS = "OLE DB"
SQLCA.LogPass ="2222"
SQLCA.LogId = "***"
SQLCA.AutoCommit = true
SQLCA.DBParm = "PROVIDER='SQLOLEDB',DATASOURCE='cp-mes'"



Connect using SQLCA;

IF SQLCA.SQLCode = -1 THEN 
MessageBox("警告", "數據庫連結失敗!")
ELSE
open(w_login_main)
END IF

然後再窗口的open事件中添加:dw.settransobject(sqlca)
  相关解决方案