以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助 一段关于筛选的代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=12628)

--  作者:zhan_n
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/9/9 16:01:00
--  

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


--  作者:zhan_n
--  发布时间:2011/9/9 16:40:00
--  
狐狸老爹,现在怎么不能把表单独另存出来啊?也不能导入其它项目中的表这样很不方便啊!
--  作者:狐狸爸爸
--  发布时间: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

--  作者:狐狸爸爸
--  发布时间: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
--  发布时间:2011/9/10 8:54:00
--  

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

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

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


--  作者:狐狸爸爸
--  发布时间:2011/9/10 9:22:00
--  

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

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

 

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


--  作者:zhan_n
--  发布时间:2011/9/10 9:31:00
--  

晕啊!

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

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

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