Foxtable(狐表)用户栏目专家坐堂 → 求助 一段关于筛选的代码


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

主题:求助 一段关于筛选的代码

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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/9/9 16:01:00 [显示全部帖子]

代码没有看出问题,做个例子上来吧。


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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/9/9 17:07:00 [显示全部帖子]

Dim a As String
Dim b As String
Dim c As String
Dim d As Integer
If CurrentTable.Filter = "" Then
    a = ""
Else
    a = CurrentTable.Filter
End If
d = a.LastIndexOf("#")
If d>0 Then
    If a = "" Then
        b = a
        c = a
    ElseIf a.Length = d+1 Then
        b = a & " " & "And"
        c = a
    ElseIf a.length > d+1 Then
        b = a.Remove(d+1) & " " & "And"
        c =a.Remove(d+1)
    End If
Else
    b=""
    c=""
End If
Dim bm As String = e.Sender.Value
If bm = "全部" Then
    CurrentTable.Filter = "" & c & ""
Else
   CurrentTable.Filter = "" & b & " [部门] = '" & bm & "'"
End If
Dim cb As WinForm.ComboBox = e.Form.Controls("ComboBox2")
Dim dr As DataRow
dr = DataTables("员工信息").find("部门 = '" & bm & "'")
If dr IsNot Nothing Then
    cb.ComboList = "全部|" & DataTables("员工信息").GetComboListString("姓名","[部门] = '" & bm & "'") & ""
Else
    cb.ComboList = "全部|" & DataTables("员工信息").GetComboListString("姓名","[职务] <> '总经理'") & ""
End If

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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/9/9 17:55:00 [显示全部帖子]

真正的问题出在Combox2的SelectedIndexChanged事件,你加一行代码就知道怎么回事:

 

Dim a As String
Dim b As String
Dim c As String
Dim d As Integer
If CurrentTable.Filter = "" Then
    a = ""
Else
    a = CurrentTable.Filter
End If
d = a.LastIndexOf("部")
If d>0 Then
    If a = "" Then
        b = a
        c = a
    ElseIf a.Length = d+2 Then
        b = a & " " & "And"
        c = a
    ElseIf a.length > d+2 Then
        b = a.Remove(d+2) & " " & "And"
        c =a.Remove(d+2)
    End If
Else
    b=""
    c=""
End If
Dim bb As String = e.Sender.Value
messagebox.show(c & "|" & b & " [执行人] = '" & bb & "'")
If bb = "全部" Then
    CurrentTable.Filter = "" & c & ""
Else
    CurrentTable.Filter = "" & b & " [执行人] = '" & bb & "'"
End If


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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/9/10 9:22:00 [显示全部帖子]

你Combox1的SelectedIndexChanged事件代码中,下面红色为止多了一个空格。

CurrentTable.Filter = "" & b & " [部门] = '" & bm & " '"

 

可以导致你Combox2的SelectedIndexChanged运行中判断错误,去掉了一个单引号'


 回到顶部