如题.
程序运行中报错:application terminated Error:
NULL Object reference at line 3 in clicked event of object cb_1 of w_1
我在cb_1的clicked 事件中调用了一个存储过程,然后就报错了。
Functions name:of_buildorderno
String ls_OrderNO
Boolean lb_AutoCommit
lb_AutoCommit=SQLCA.AutoCommit
SQLCA.AutoCommit=True
DECLARE P_BuildOrderNO PROCEDURE FOR BuildOrderNO
@OrderNO= :ls_OrderNO OUTPUT;
EXECUTE P_BuildOrderNO;
IF SQLCA.SQLCode<>0 THEN
MessageBox("存储过程BuildOrderNO执行错误",SQlCA.SQLErrText)
END IF
FETCH P_BuildOrderNO INTO :ls_OrderNO;
IF SQLCA.SQLCode<>0 THEN
MessageBox("存储过程BuildOrderNO执行错误",SQlCA.SQLErrText)
END IF
CLOSE P_BuildOrderNO;
SQLCA.AutoCommit=lb_AutoCommit
COMMIT;
Return ls_OrderNO
然后再cb_1控件的clicked 事件 中写了这句话
String Is_OrderNO
Long Il_Row
Is_OrderNO=uo_sql.of_buildorderno()
Il_Row=dw_1.InsertRow(0)
dw_1.object.Orderno[Il_Row]=Is_OrderNO
运行后就报那样的错误 。
请问各路高手如何解决呀。
高分求解阿。
------解决方案--------------------
在Is_OrderNO=uo_sql.of_buildorderno()
之前 uo_sql = create XXXXXX 了吗?
------解决方案--------------------
uo_sql = create uo_sql
uo_sql 自定义对象吧?
使用其内部的函数前,得先 create .
------解决方案--------------------
3楼说的有道理,错误的意思是不存在引用对象,就是不存在这个对象,所以需要create一个对象出来。像java里面的new方法一样。
------解决方案--------------------
创建对象,
二楼说的对,你先要创建对象
------解决方案--------------------
- C# code
uo_sql luo_sql //申明一个uo_sql类型的对象luo_sql = create uo_sql //创建
------解决方案--------------------
首先,搜索uo_sql在哪里定义的
然后
在适当的地方,保证你这个按钮click执行到Is_OrderNO=uo_sql.of_buildorderno()
之前的地方
写 uo_sql=create xxxx//xxxx就是定义uo_sql的那个类型,比如
datastore uo_sql
uo_sql=create datastore
然后在适当的地方:保证此处代码执行后再也执行不到调用这个对象的代码,uo_sql.xxx(),并且在窗口关闭前能执行到的地方写destroy uo_sql
也就是你自己create出来的东西要自己负责destroy
不过我更建议你找到定义uo_sql的那个用户自定义对象,如果是从不可视对象继承的把autoinstantiate钩上,就不用create destroy 了,定义了就能用
------解决方案--------------------
把这段拷贝到cb_1控件的clicked 事件 中
String Is_OrderNO
Long Il_Row
uo_sql luo_sql
luo_sql = create uo_sql
Is_OrderNO=luo_sql.of_buildorderno()
Il_Row=dw_1.InsertRow(0)
dw_1.object.Orderno[Il_Row]=Is_OrderNO