Foxtable(狐表)用户栏目专家坐堂 → 模糊搜索问题


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

主题:模糊搜索问题

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
模糊搜索问题  发帖心情 Post By:2015/2/28 22:47:00 [只看该作者]

怎么在打开窗口时不显示表的数据(filter false?),搜索关键字才会显示对应的一行数据? 就如搜索引擎一样。显示方式除了table还有什么方式?listview?

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1100 积分:8985 威望:0 精华:0 注册:2014/3/15 14:36:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By: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


 回到顶部