以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]筛选错误提示  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=75016)

--  作者:dj68301367
--  发布时间:2015/9/24 16:17:00
--  [求助]筛选错误提示
Dim Filter As String
With e.Form.Controls("Txt料号")
    If .Value IsNot Nothing Then
        Filter = "物料编码 like \'%" & .Value & "%\'"
    End If
End With

With e.Form.Controls("Txt名称")
    If .Value IsNot Nothing Then
        If filter> ""
            Filter =Filter & "and 物料名称 like \'%" & .Value & "%\'"
        Else
            Filter ="物料名称 like \'%" & .Value & "%\'"
        End If
    End If
End With

With e.Form.Controls("Txt规格")
    If .Value IsNot Nothing Then
        If filter> ""
            Filter =Filter & "and 物料规格 like \'%" & .Value & "%\'"
        Else
            Filter ="物料规格 like \'%" & .Value & "%\'"
        End If
    End If
End With

msgbox(filter)
If filter Is Nothing Then
    Tables("库存总表_TabKC").ApplyFilter = False
ElseIf Filter > "" Then
    Tables("库存总表_TabKC").Filter = Filter
End If

前面提示的查找条件没有问题,如果查找列中有我要找的内容。也不会出现错误提示。
但如果没有的话,就会出现错误提示了

错误提示如下。
未将对象引用设置到对象的实例。


--  作者:大红袍
--  发布时间:2015/9/24 16:48:00
--  

应该currentChanged事件有问题。加上判断,如

 

If e.Table.Current Is Nothing Then Return


--  作者:dj68301367
--  发布时间:2015/9/26 9:07:00
--  
If e.Table.Current IsNot Nothing Then
    Dim dr As DataRow = e.Table.Current.DataRow
    Dim wz As Integer = Tables("库存总表").FindRow(dr)
    If wz >=0 Then
        Tables("库存总表").Position = wz
    End If
End If

Tables("库存总表_Tab正常领料1").Filter = "物料编码 = \'" & CurrentTable.Current("物料编码") & "\'"
Tables("库存总表_Tab其它领料").Filter = "物料编码 = \'" & CurrentTable.Current("物料编码") & "\'"
Tables("库存总表_Tab入仓单").Filter = "物料编码 = \'" & CurrentTable.Current("物料编码") & "\'"
Tables("库存总表_Tab退货").Filter = "物料编码 = \'" & CurrentTable.Current("物料编码") & "\'"
Tables("库存总表_Tab物料").Filter = "物料_物料编码 = \'" & CurrentTable.Current("物料编码") & "\'"
Tables("库存总表_Tab超领料").Filter = "物料编码 = \'" & CurrentTable.Current("物料编码") & "\'"



--  作者:dj68301367
--  发布时间:2015/9/26 9:08:00
--  
改成这样?
If e.Table.Current IsNot Nothing Then
    Dim dr As DataRow = e.Table.Current.DataRow
    Dim wz As Integer = Tables("库存总表").FindRow(dr)
    If wz >=0 Then
        Tables("库存总表").Position = wz
    End If
ElseIf Is Nothing Then
    Return
    
End If

--  作者:狐狸爸爸
--  发布时间:2015/9/28 8:15:00
--  
你的错误很多,有判断,但是判断条件之外,还是有用Current,这样的判断就没有意义了。
还有,代码之中,最好用e.Table,不要用CurrentTable,当前Table和触发时间的Table,并不总是同一个Table,你看看帮助的表事件代码,都是用e参数的,从来不会有CurrentTable


f e.Table.Current IsNot Nothing Then
    Dim dr As DataRow = e.Table.Current.DataRow
    Dim wz As Integer = Tables("库存总表").FindRow(dr)
    If wz >=0 Then
        Tables("库存总表").Position = wz
    End If
    Tables("库存总表_Tab正常领料1").Filter = "物料编码 = \'" & e.Table.Current("物料编码") & "\'"
    Tables("库存总表_Tab其它领料").Filter = "物料编码 = \'" & e.Table.Current("物料编码") & "\'"
    Tables("库存总表_Tab入仓单").Filter = "物料编码 = \'" & e.Table.Current("物料编码") & "\'"
    Tables("库存总表_Tab退货").Filter = "物料编码 = \'" & e.Table.Current("物料编码") & "\'"
    Tables("库存总表_Tab物料").Filter = "物料_物料编码 = \'" & e.Table.Current("物料编码") & "\'"
    Tables("库存总表_Tab超领料").Filter = "物料编码 = \'" & e.Table.Current("物料编码") & "\'"
End If