以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]无法在 System.Double 和 System.String 上执行“Like”操作。  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=133691)

--  作者:seal51
--  发布时间:2019/4/18 10:17:00
--  [求助]无法在 System.Double 和 System.String 上执行“Like”操作。
无法在 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


--  作者:有点甜
--  发布时间: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
--  发布时间:2019/4/18 11:08:00
--  
非常感谢老师!
--  作者:seal51
--  发布时间: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

--  作者:有点甜
--  发布时间: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
--  发布时间:2019/4/19 10:46:00
--  
编译错误:“e”是"private\'\',因此它在此上下文中不可访问
错误代码: Dim val As String=e.Form.Controls(st).value

--  作者:有点甜
--  发布时间:2019/4/19 10:53:00
--  

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

 

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