以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 关于窗口dropdownclosed事件代码的疑问 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=76277)
|
-- 作者:狐来江湖
-- 发布时间:2015/10/26 10:14:00
-- 关于窗口dropdownclosed事件代码的疑问
我在窗口的dropdownclosed中设置了如下的代码:
If e.Selected Then \'如果选择了值 Dim tbl As Table = Tables("rkdrop_Table1") Dim bh As String = tbl.Current("hh") \'将要做订单的商品的货号 Dim sdr As DataRow = DataTables("sp").Find("hh = \'" & bh & "\'") \'该商品在sp表中的对应记录 Dim fws As String = sdr("jyfwsx") \'sp对应记录的jyfwsx Dim fwq As String = DataTables("bqyzz").DataRows(0)("jyfwlb") \'本企业的经营范围 Dim gdr As DataRow = Tables("cgdmxb").Current.DataRow. GetParentRow("cgddb") \'采购订单明细表的对应父行 Dim ghm As String = gdr("ghs") \'cgddb中的对应行的ghs列 Dim hdr As DataRow = DataTables("ghszz").Find("ghsmc = \'" & ghm & "\'") Dim fwg As String = hdr("jyfwlb") If tbl.Current IsNot Nothing Then If tbl.Current("kz") = True Then MessageBox.Show("该商品批准证明文件资质已过期,暂停采购计划!","提示", MessageBoxButtons.Ok, MessageBoxIcon.warning) e.Form.DropDownBox.Value = "" Tables("cgddb.cgdmxb").Current("hh") = "" Tables("cgddb.cgdmxb").Current("pm") = "" Tables("cgddb.cgdmxb").Current("sccj") = "" Tables("cgddb.cgdmxb").Current("gg") = "" Tables("cgddb.cgdmxb").Current("dw") = "" ElseIf fwq.contains( fws ) = False OrElse fwg.contains(fws) = False Then MessageBox.show("购销双方或单方不具备经营该商品的范围条件!") e.Form.DropDownBox.Value = "" Tables("cgddb.cgdmxb").Current("hh") = "" Tables("cgddb.cgdmxb").Current("pm") = "" Tables("cgddb.cgdmxb").Current("sccj") = "" Tables("cgddb.cgdmxb").Current("gg") = "" Tables("cgddb.cgdmxb").Current("dw") = "" Else e.Form.DropDownBox.Value = tbl.Current("pmzjm") Tables("cgddb.cgdmxb").Current("hh") = tbl.Current("hh") Tables("cgddb.cgdmxb").Current("pm") = tbl.Current("pm") Tables("cgddb.cgdmxb").Current("sccj") = tbl.Current("sccj") Tables("cgddb.cgdmxb").Current("gg") = tbl.Current("gg") Tables("cgddb.cgdmxb").Current("dw") = tbl.Current("dw") End If e.Form.DropDownBox.CloseDropDown() End If End If
前边试验时是好用的,但是这两天不知道怎么回事,提示错误:
未将对象引用设置到对象的实例。
求解答!
|
-- 作者:狐来江湖
-- 发布时间:2015/10/26 10:19:00
--
上述代码的简单的意思就是
在做订单时,需要判断
1、这个商品的批准文件有没有过期;
2、这个商品在不在购销双方的经营范围内;
如果条件1不满足,也就是批准文件已过期,取消执行
如果条件1满足但是条件2中有一个不满足,取消执行
条件1和条件2都满足,则执行。
|
-- 作者:Hyphen
-- 发布时间:2015/10/26 10:33:00
--
Dim bh As String = tbl.Current("hh") \'将要做订单的商品的货号 Dim sdr As DataRow = DataTables("sp").Find("hh = \'" & bh & "\'") \'该商品在sp表中的对应记录 Dim fws As String = sdr("jyfwsx") \'sp对应记录的jyfwsx Dim fwq As String = DataTables("bqyzz").DataRows(0)("jyfwlb") \'本企业的经营范围 Dim gdr As DataRow = Tables("cgdmxb").Current.DataRow. GetParentRow("cgddb") \'采购订单明细表的对应父行 Dim ghm As String = gdr("ghs") \'cgddb中的对应行的ghs列 Dim hdr As DataRow = DataTables("ghszz").Find("ghsmc = \'" & ghm & "\'")
这些使用的返回值未必都有值,使用前都应该判断一下是否空值或空对象
|
-- 作者:狐来江湖
-- 发布时间:2015/10/26 10:42:00
--
前两天,我还用过,没出问题。而且,这些值我都设置过了,应该问题没出在这里。
|
-- 作者:狐来江湖
-- 发布时间:2015/10/26 11:08:00
--
求助
|
-- 作者:大红袍
-- 发布时间:2015/10/26 11:16:00
--
都要,加上判断,有可能用到的数据不存在,比如
If tbl.Current Is Nothing Then
msgbox("表没有数据")
End If
If sdr Is Nothing Then
msgbox("没有查找到数据")
End If
|
-- 作者:狐来江湖
-- 发布时间:2015/10/26 13:50:00
--
大红袍老师:
我加上了判断空值代码之后,还是显示相同的错误提示,不知道是为什么?
这之前我用过几次还是好用的,没出现这种情况。
而且上述值都是设置过了,不为空。
就是近两天才出现的。
郁闷中。。。。。。
|
-- 作者:狐来江湖
-- 发布时间:2015/10/26 13:58:00
--
是不是狐表出现bug了啊?
|
-- 作者:大红袍
-- 发布时间:2015/10/26 14:03:00
--
呃,全部都要加上啊。
DataTables("bqyzz").DataRows(0)
Tables("cgdmxb").Current
hdr
等等...只要有可能是找不到数据的,都要加上判断,如果没有数据,就退出return
|
-- 作者:狐来江湖
-- 发布时间:2015/10/27 7:09:00
--
大红袍老师:
dropdownclosed代码应该没问题。
我测试了一下,使用数据库的备份,检查了一下,1019号的上午备份数据库,使用起来,一切正常。
1019号下午以后的备份数据库打开时,就出现错误。
这种情况如何解决呢?
|