Foxtable(狐表)用户栏目专家坐堂 → [求助]无法在 System.Double 和 System.String 上执行“Like”操作。


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

主题:[求助]无法在 System.Double 和 System.String 上执行“Like”操作。

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


加好友 发短信
等级:八尾狐 帖子:1837 积分:12990 威望:0 精华:0 注册:2013/6/10 9:23:00
[求助]无法在 System.Double 和 System.String 上执行“Like”操作。  发帖心情 Post By:2019/4/18 10:17:00 [只看该作者]

无法在 System.Double 和 System.String 上执行“Like”操作。

Dim txt As String = e.Form.Controls("产品查询").Text
Dim tbl As Table = Tables("产品列表")
If txt = "" Then
tbl.Filter = ""
Else
txt = "'%" & txt.replace("%", "[%]") & "%'"
tbl.Filter = "产品ID Like " & txt & " Or 缺省供应商 Like " & txt & " Or 销售产品ID Like " & txt & " Or 类别 Like " & txt & " Or 品牌 Like " & txt & "  Or 产品图号 Like " & txt & " Or 产品型号 Like " & txt & " Or 参考代号 Like " & txt & " Or 产品图号 Like " & txt & " Or 产品名称 Like " & txt & " Or 产品材料 Like " & txt & " Or 产品规格 Like " & txt & " Or 外径 Like " & txt  & " Or 内径 Like " & txt & " Or 高度 Like " & txt & " Or 备注 Like " & txt
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/18 10:52:00 [只看该作者]

如果是数值列,改成红色

 

tbl.Filter = "产品ID Like " & txt & " Or 缺省供应商 Like " & txt & " Or 销售产品ID Like " & txt & " Or 类别 Like " & txt & " Or 品牌 Like " & txt & "  Or 产品图号 Like " & txt & " Or 产品型号 Like " & txt & " Or 参考代号 Like " & txt & " Or 产品图号 Like " & txt & " Or 产品名称 Like " & txt & " Or 产品材料 Like " & txt & " Or 产品规格 Like " & txt & " Or convert(外径, 'System.String') Like " & txt  & " Or 内径 Like " & txt & " Or 高度 Like " & txt & " Or 备注 Like " & txt


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


加好友 发短信
等级:八尾狐 帖子:1837 积分:12990 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2019/4/18 11:08:00 [只看该作者]

非常感谢老师!

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


加好友 发短信
等级:八尾狐 帖子:1837 积分:12990 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2019/4/19 9:27:00 [只看该作者]

下面的代码,外径,内径, 高度为数值列, 如何更改代码呢?
Dim filter As String
Dim sts() As String = {"产品ID","产品类别","产品名称","产品图号","世源图号","产品材料","产品规格","外径","内径","高度","产品尺寸"}
For Each st As String In sts
    Dim  val As String = e.Form.Controls(st).value
    If val > "" Then
        val = val.Replace("*","[*]")
        If filter = "" Then
            filter = st & " like '*" & val & "*'"
        Else
            filter = filter & " and " & st & " like '*" & val & "*'"
        End If
    End If
Next


Tables("产品表").Filter = filter

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/19 9:53:00 [只看该作者]

Dim filter As String = "1=1"
Dim sts() As String = {"产品ID","产品类别","产品名称","产品图号","世源图号","产品材料","产品规格","外径","内径","高度","产品尺寸"}
For Each st As String In sts
    Dim  val As String = e.Form.Controls(st).value
    If val > "" Then
        val = val.Replace("*","[*]")
        If Tables("产品表").cols(st).IsString Then
            filter = filter & " and " & st & " like '*" & val & "*'"
        Else
            filter = filter & " and convert(" & st & ",'System.String') like '*" & val & "*'"
        End If
    End If
Next

Tables("产品表").Filter = filter


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


加好友 发短信
等级:八尾狐 帖子:1837 积分:12990 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2019/4/19 10:46:00 [只看该作者]

编译错误:“e”是"private'',因此它在此上下文中不可访问
错误代码: Dim val As String=e.Form.Controls(st).value

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/19 10:53:00 [只看该作者]

1、代码写到你窗口的事件去;

 

2、如果还报错,重新打开项目后测试。


 回到顶部