以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]不知哪不对  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=102829)

--  作者:石四
--  发布时间:2017/6/26 16:08:00
--  [求助]不知哪不对

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT [_Identify],请购编号,名称规格,单位,编号,报销 FRO M {物资入库} Where [报销] = False "
dt = cmd.ExecuteReader(True)

If MsgBox("确认提交保存?",65,"提示") = 1 Then
    Dim a As Table = Tables("费用管理_Table3")
    Dim b As Table = Tables("入账报销")
    Dim dr1 As DataRow
    For r As Integer = 0 To a.Rows.Count - 1
        b.AddNew
        b.Current("经办") = _username
        b.Current("物料编码") = a.Rows(r)("物料编码")
        b.Current("名称规格") = a.Rows(r)("名称规格")
        ......
        b.Current("备注") = a.Rows(r)("备注")
        b.Current("入库ID") = a.Rows(r)("入库ID")
       
        If a.Rows(r)("入库ID") IsNot Nothing Then
            dr1 = dt.Find("[编号] = \'" & a.Rows(r)("入库ID") & "\' ")
            dr1("报销") = True
        End If
    Next
    dt.Save()
    For r As Integer = a.rows.Count - 1 To 0 Step -1
        a.Current.Delete
    Next
    DataTables("入账报销").Save()
End If


--  作者:石四
--  发布时间:2017/6/26 16:11:00
--  

 这段:

If a.Rows(r)("入库ID") IsNot Nothing Then
            dr1 = dt.Find("[编号] = \'" & a.Rows(r)("入库ID") & "\' ")
            dr1("报销") = True
        End If

 

现在的结果是a.Rows(r)("入库ID") 为空值时也执行dr1 = dt.Find("[编号] = \'" & a.Rows(r)("入库ID") & "\' ")
            dr1("报销") = True

没有达到预期的效果.

正确的代码应该怎样写?


--  作者:有点色
--  发布时间:2017/6/26 17:52:00
--  

 不应该吧?加上代码测试,看弹出什么。

 

msgbox("zzz" & a.Rows(r)("入库ID") & "zzz" & vbcrlf & (a.Rows(r)("入库ID") IsNot Nothing) & vbcrlf & (a.Rows(r)("入库ID") = Nothing))


--  作者:石四
--  发布时间:2017/6/27 15:08:00
--  
以下是引用有点色在2017/6/26 17:52:00的发言:

 不应该吧?加上代码测试,看弹出什么。

 

msgbox("zzz" & a.Rows(r)("入库ID") & "zzz" & vbcrlf & (a.Rows(r)("入库ID") IsNot Nothing) & vbcrlf & (a.Rows(r)("入库ID") = Nothing))

"入库ID"列空值结果:zzzzzz

                          True

                          True

"入库ID"列值为170401-06时弹出:zzz170401-06zzz

                                             True

                                             False


--  作者:石四
--  发布时间:2017/6/27 15:12:00
--  
这个"入库ID"列挂了个下拉窗口,是这个原因导致有隐性值?怎么破?
--  作者:石四
--  发布时间:2017/6/27 16:05:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170627160227.png
图片点击可在新窗口打开查看


--  作者:有点色
--  发布时间:2017/6/27 16:16:00
--  

代码改成

 

If a.Rows(r)("入库ID") <> Nothing Then


--  作者:石四
--  发布时间:2017/6/27 16:21:00
--  

OK!正确代码:

If a.Rows(r)("入库ID") <> "" Then
            dr1 = dt.Find("[编号] = \'" & a.Rows(r)("入库ID") & "\' ")
            dr1("报销") = True
        End If