Foxtable(狐表)用户栏目专家坐堂 → [求助]筛选错误提示


  共有2197人关注过本帖树形打印复制链接

主题:[求助]筛选错误提示

帅哥哟,离线,有人找我吗?
dj68301367
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:358 积分:2707 威望:0 精华:0 注册:2015/4/12 12:13:00
[求助]筛选错误提示  发帖心情 Post By: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

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/24 16:48:00 [只看该作者]

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

 

If e.Table.Current Is Nothing Then Return


 回到顶部
帅哥哟,离线,有人找我吗?
dj68301367
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:358 积分:2707 威望:0 精华:0 注册:2015/4/12 12:13:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:358 积分:2707 威望:0 精华:0 注册:2015/4/12 12:13:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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



 回到顶部