以文本方式查看主题

-  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号下午以后的备份数据库打开时,就出现错误。

 

这种情况如何解决呢?