以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  模糊搜索问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=64755)

--  作者:swagger
--  发布时间:2015/2/28 22:47:00
--  模糊搜索问题
怎么在打开窗口时不显示表的数据(filter false?),搜索关键字才会显示对应的一行数据? 就如搜索引擎一样。显示方式除了table还有什么方式?listview?
--  作者:swagger
--  发布时间:2015/2/28 23:53:00
--  

找到好几种代码,略举一二

 

1.

Dim tb1 As String= "表名"

Dim txt As String = e.Form.Controls("TextBox1").Text

Dim zs As String

If txt = "" Then    Return

txt = "\'%" & txt & "%\'"

zs = "列名1 Like " & txt  & " Or 列名2 Like " & txt & " Or 列名3 Like " & txt & " Or 列名... Like " & txt  ....

Tables(tb1).Filter=zs

 

 

Tables(tb1).AutoSizeCols

 

 

 

 


--  作者:swagger
--  发布时间:2015/3/1 0:05:00
--  
以下是引用swagger在2015/2/28 22:47:00的发言:
怎么在打开窗口时不显示表的数据(filter false?),搜索关键字才会显示对应的一行数据? 就如搜索引擎一样。显示方式除了table还有什么方式?listview?

方式有:

1.table方式显示 (不显示绑定字段控件)

2.绑定字段控件显示(不显示table,如果纯窗口形式仅显示字段控件,那么就没必要filter false了)

(1)同窗口显示(可修改可禁止修改)

(2)弹出窗口显示(可修改可禁止修改)

3.table和绑定字段控件同时显示

4. listview方式显示正在研究

5. 其它方式请老师们补充

[此贴子已经被作者于2015/3/1 0:10:52编辑过]

--  作者:黄训良
--  发布时间:2015/3/1 0:07:00
--  
Dim tb1 As String= "表名" Dim txt As String = e.Form.Controls("TextBox1").Text Dim zs As String If txt = "" Then zs = “1+1= 3” else txt = "\'%" & txt & "%\'" zs = "列名1 Like " & txt & " Or 列名2 Like " & txt & " Or 列名3 Like " & txt & " Or 列名... Like " & txt .... Tables(tb1).Filter=zs
[此贴子已经被作者于2015/3/1 0:08:20编辑过]

--  作者:有点甜
--  发布时间:2015/3/1 9:34:00
--  
Dim filter As String = "1=2"
For Each dc As Col In CurrentTable.Cols
    filter &= " or convert(" & dc.Name & ",\'System.String\') like \'%" & e.Form.Controls("TextBox1").Text & "%\'"
Next
CurrentTable.Filter = filter

--  作者:swagger
--  发布时间:2015/3/1 15:58:00
--  
以下是引用有点甜在2015/3/1 9:34:00的发言:
Dim filter As String = "1=2"
For Each dc As Col In CurrentTable.Cols
    filter &= " or convert(" & dc.Name & ",\'System.String\') like \'%" & e.Form.Controls("TextBox1").Text & "%\'"
Next
CurrentTable.Filter = filter

谢谢甜老师,这个更好,可以搜索数字类型,之前那个之能搜索字符类型


--  作者:swagger
--  发布时间:2015/3/2 0:07:00
--  
以下是引用有点甜在2015/3/1 9:34:00的发言:
Dim filter As String = "1=2"
For Each dc As Col In CurrentTable.Cols
    filter &= " or convert(" & dc.Name & ",\'System.String\') like \'%" & e.Form.Controls("TextBox1").Text & "%\'"
Next
CurrentTable.Filter = filter

但有个问题是,如果窗口afterLoad 用Tables("订单_table1").Filter = "false" ,

 

表格副本currentchanged:

Dim dr As DataRow = e.Table.Current.DataRow
 Dim wz As Integer = Tables("订单").FindRow(dr)
 If wz >=0 Then
      Tables("订单").Position = wz
 End  If

 

 

就会出现未将对象引用设置到对象的实例,这个要怎么改?

[此贴子已经被作者于2015/3/2 0:10:40编辑过]

--  作者:swagger
--  发布时间:2015/3/2 0:21:00
--  
以下是引用swagger在2015/3/2 0:07:00的发言:

但有个问题是,如果窗口afterLoad 用Tables("订单_table1").Filter = "false" ,

 

表格副本currentchanged:

Dim dr As DataRow = e.Table.Current.DataRow
 Dim wz As Integer = Tables("订单").FindRow(dr)
 If wz >=0 Then
      Tables("订单").Position = wz
 End  If

 

 

就会出现未将对象引用设置到对象的实例,这个要怎么改?

[此贴子已经被作者于2015/3/2 0:10:40编辑过]

刚才看过,其实是窗口afterLoad 和表格副本currentchanged 引起的, 和搜索代码无关。


--  作者:swagger
--  发布时间:2015/3/2 2:04:00
--  
以下是引用swagger在2015/3/2 0:21:00的发言:

刚才看过,其实是窗口afterLoad 和表格副本currentchanged 引起的, 和搜索代码无关。

已经解决了,

(1)Tables("订单_table1").Filter = "false"

(2)

If Tables("订单_table1").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