以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  这样的筛选如何设置?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=8546)

--  作者:lihe60
--  发布时间:2010/11/9 8:11:00
--  这样的筛选如何设置?

在文本框中输入“一  二”,就是筛选出包括“一”、“二”的行?


--  作者:狐狸爸爸
--  发布时间:2010/11/9 8:29:00
--  
用Split将输入的值拆分为一个数组,然后根据此数组合成筛选表达式。
--  作者:lihe60
--  发布时间:2010/11/9 8:40:00
--  
以下是引用狐狸爸爸在2010-11-9 8:29:00的发言:
用Split将输入的值拆分为一个数组,然后根据此数组合成筛选表达式。

我也偿试过,最终以失败告终。


--  作者:狐狸爸爸
--  发布时间:2010/11/9 8:53:00
--  

失败?

贴出你写的代码,我帮你看看。


--  作者:czy
--  发布时间:2010/11/9 9:01:00
--  

大概是这样吧

 

If e.Form.Controls("TextBox1").Value <> "" Then
    Dim Vals() As String = e.Form.Controls("TextBox1").Value.Split(" ")
    Dim Filter As String
    For Val As Integer = 0 To Vals.Length - 1
        Filter = Filter & "|[某列] Like \'*" & Vals(Val) & "*\'"
    Next
    CurrentTable.Filter = Filter.Trim("|").Replace("|"," Or")
End If


--  作者:lihe60
--  发布时间:2010/11/9 9:14:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目5.table


--  作者:lihe60
--  发布时间:2010/11/9 9:23:00
--  
以下是引用lihe60在2010-11-9 9:14:00的发言:
 下载信息  [文件大小:300.0 KB  下载次数:1]
图片点击可在新窗口打开查看点击浏览该文件:管理项目5.table

Values = Multi.split("0")应改为Values = Multi.split(" ")

有两个缺点:

1、两组字符之间只能有一个空格

2、每组字符要指定对应的列

第一个可以克服,第二个问题每组字符不能指定对应列

 


--  作者:czy
--  发布时间:2010/11/9 9:37:00
--  

两列数据,这样就可以

 

Dim Vals() As String = e.Form.Controls("TextBox1").Text.Split(" ")
Dim Filter As String
Select Case Vals.Length
    Case 1
        Tables("窗口1_Table1").Filter = "[第一列] Like \'*" & Vals(0) & "*\'"
    Case 2
        Tables("窗口1_Table1").Filter = "[第一列] Like \'*" & Vals(0) & "*\' And [第二列] Like \'*" & Vals(1) & "*\'"
    Case Else
        Tables("窗口1_Table1").Filter = ""
End Select

 


--  作者:lihe60
--  发布时间:2010/11/9 11:26:00
--  

Dim cmd As New SQLCommand
Dim Count AS Integer
cmd.CommandText = "select count(*) FROM {表A}"
Count= cmd.ExecuteNonQuery()
messagebox.show(count)

输出的结果为0,为什么不是表A的实际行数?


--  作者:czy
--  发布时间:2010/11/9 11:46:00
--  

为什么用ExecuteNonQuery()而不是ExecuteScalar()呢?

 

Dim Count AS Integer
Dim cmd As New SQLCommand
cmd.CommandText = "Select Count(*) FROM {表A}"
Count = cmd.ExecuteScalar()
Output.Show(Count)