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


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

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

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


加好友 发短信
等级:婴狐 帖子:15 积分:168 威望:0 精华:0 注册:2011/3/29 11:50:00
求助 一段关于筛选的代码  发帖心情 Post By:2011/9/9 15:56:00 [只看该作者]

我在两个不同的表的两个不同窗口中都有部门选择的一个组合框,在“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+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 bb As String = e.Sender.Value
If bb = "全部" Then
    CurrentTable.Filter = "" & c & ""
Else
    CurrentTable.Filter = "" & b & " [部门] = '" & bb & "'"
End If

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:项目1.zip

 

 

 

上传了项目文件!在“日常工作报告”表中会有问题,“工作发放记录”和“出勤记录”就没有问题,请狐狸老爹帮忙看看!

 

就是在表“日常工作报告”主窗口的“部门”选择时会报错!另外两表的“部门”选择正常,代码一样!这是为什么呢?


 

[此贴子已经被作者于2011-9-9 16:51:19编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/9/9 16:01:00 [只看该作者]

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


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


加好友 发短信
等级:婴狐 帖子:15 积分:168 威望:0 精华:0 注册:2011/3/29 11:50:00
  发帖心情 Post By:2011/9/9 16:40:00 [只看该作者]

狐狸老爹,现在怎么不能把表单独另存出来啊?也不能导入其它项目中的表这样很不方便啊!

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望: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

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望: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


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


加好友 发短信
等级:婴狐 帖子:15 积分:168 威望:0 精华:0 注册:2011/3/29 11:50:00
  发帖心情 Post By:2011/9/10 8:54:00 [只看该作者]

谢谢狐狸老爹的及时帮助!

其它的两个表可以用又是怎么回事呢?代码一样的啊?

但问题出在哪我现在还是没有弄明白!


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/9/10 9:22:00 [只看该作者]

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

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

 

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


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


加好友 发短信
等级:婴狐 帖子:15 积分:168 威望:0 精华:0 注册:2011/3/29 11:50:00
  发帖心情 Post By:2011/9/10 9:31:00 [只看该作者]

晕啊!

直接复制过来的怎么还会这样呢!昨天我也是找了半天的问题!

刚重新复制一下过来就又可以了!呵呵!看来是无意之过啊!

还是要多谢狐狸老爹积极解答!

 


 回到顶部