Foxtable(狐表)用户栏目专家坐堂 → 模糊查找报错


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

主题:模糊查找报错

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


加好友 发短信
等级:婴狐 帖子:8 积分:295 威望:0 精华:0 注册:2013/8/14 16:18:00
模糊查找报错  发帖心情 Post By:2013/12/28 15:50:00 [只看该作者]

以下代码当输入字符不匹配时出错

Dim txt As String = e.Form.Controls("TextBox1").Text
Dim tbl As Table = Tables("客户主窗口_Table1")
If txt = "" Then
    tbl.Filter = ""
Else
    txt = "'%" & txt & "%'"
    tbl.Filter = "客户编号 Like " & txt & " Or 客户名称 Like " & txt & " Or 联系人 Like " & txt & " Or 地址 Like " & txt
End If


图片点击可在新窗口打开查看此主题相关图片如下:未标题-1.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/12/28 15:51:00 [只看该作者]

狐表的筛选,匹配符应该使用 * 号不是 %号 

txt = "'*" & txt & "*'"

这样应该没问题了,如何还有问题,请把文件例子发上来

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


加好友 发短信
等级:婴狐 帖子:8 积分:295 威望:0 精华:0 注册:2013/8/14 16:18:00
  发帖心情 Post By:2013/12/28 15:52:00 [只看该作者]

改成*号也是一样的结果


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/12/28 15:56:00 [只看该作者]

%号也是可以的,我刚才误判了.

你检查一下你Currentchanged的代码.

是否使用了当前行, 你筛选完毕没有结果的话,当前行为空,你再引用当前行肯定会报错的.

需要添加空行判断

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


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

和筛选无关,你修改这个表CurretChanged事件代码:

 

if  e.Table.Current IsNot Nothing Then
     '原来的CurrentCanged事件代码
End if


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


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

因为筛选后,如果没有符合条件的行,e.Table.Current 或者 Tables("表名").Current肯定要出错。
使用Current是必须判断的,切记。

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


加好友 发短信
等级:婴狐 帖子:8 积分:295 威望:0 精华:0 注册:2013/8/14 16:18:00
  发帖心情 Post By:2013/12/28 16:00:00 [只看该作者]

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


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/12/28 16:01:00 [只看该作者]

if  e.Table.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

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


加好友 发短信
等级:婴狐 帖子:8 积分:295 威望:0 精华:0 注册:2013/8/14 16:18:00
  发帖心情 Post By:2013/12/28 16:04:00 [只看该作者]

谢谢,解决了,速度很快

 回到顶部