以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何使Datatables.Load只执行一次?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=191717)

--  作者:scofields
--  发布时间:2024/5/4 23:11:00
--  如何使Datatables.Load只执行一次?
如题,以下这段代码,如果审核到没有数据时,就会直接显示“未将对象引用设置到对象的实例。”,除了要在无数据时不弹出错误,还要控制DataTables.Load只加载一次,如何实现?
If User.Group<>"财务管理" Then
MessageBox.show("无权限审核","资金审核",MessageBoxButtons.OK,MessageBoxIcon.Warning)
Else

DataTables("T_资金表").LoadFilter = "资金状态 = \'入账中\'"
DataTables("T_资金表").Load
Tables("T_资金表").Current("资金状态") = "已审核"
Tables("T_资金表").Current.Save()
End If

--  作者:有点蓝
--  发布时间:2024/5/5 20:50:00
--  
先看看:http://www.foxtable.com/webhelp/topics/0445.htm,理解一下什么是“完美”的代码

其次DataTables.Load调用一次肯定只会加载一次,不可能有多次,除非执行了多次

最后这个代码逻辑很有问题,重新加载后,current是会变的,已经不是之前的当前行了,加载后再设置当前行是有问题的。应该先设置行状态,再重新加载
If User.Group<>"财务管理" Then
MessageBox.show("无权限审核","资金审核",MessageBoxButtons.OK,MessageBoxIcon.Warning)
Else
if Tables("T_资金表").Current isnot nothing then
Tables("T_资金表").Current("资金状态") = "已审核"
Tables("T_资金表").Save()
DataTables("T_资金表").LoadFilter = "资金状态 = \'入账中\'"
DataTables("T_资金表").Load
end if
end if