以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  模糊查询表达式错误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=83251)

--  作者:mayazql
--  发布时间:2016/4/5 12:57:00
--  模糊查询表达式错误
语句如下:
Dim Filter As String
Dim PRID As String = e.Form.Controls("PrId").value
Dim PRNAME As String = e.Form.Controls("PrMName").value
Dim PRMODEL As String = e.Form.Controls("PrModel").value
Dim PRPRJO As String = e.Form.Controls("PrPrjno").value
Dim PRUSER As String = e.Form.Controls("PrUser").value
PRNAME =  "\'%" & PRNAME & "%\'"
PRMODEL = "\'%" & PRMODEL & "%\'"
PRUSER = "\'%" & PRUSER & "%\'"
Filter = "申请单号 =" & PRID & "And 物料名称 like " & PRNAME & "And 规格图号 like " & PRMODEL & "And 申请人 like " & PRUSER & "And 工程号 =" & PRPRJO
DataTables("采购申请查询_table1").LoadFilter = Filter
DataTables("采购申请查询_table1").Load()

错误信息如下:
.NET Framework 版本:2.0.50727.8670
Foxtable 版本:2016.3.27.1
错误所在事件:加载[采购申请查询_Table1]失败!
详细错误信息:
语法错误 (操作符丢失) 在查询表达式 \'(申请单号 =PR000001And 物料名称 like \'%%\'And 规格图号 like \'%%\'And 申请人 like \'%%\'And 工程号 =)\' 中。

麻烦帮忙看下正确的语句应该怎么样写,谢谢!

--  作者:大红袍
--  发布时间:2016/4/5 15:01:00
--  
Filter = "申请单号 = \'" & PRID & "\' And 物料名称 like " & PRNAME & "And 规格图号 like " & PRMODEL & "And 申请人 like " & PRUSER & "And 工程号 = \'" & PRPRJO & "\'"
--  作者:大红袍
--  发布时间:2016/4/5 15:02:00
--  

 如果你要做查询,用这种方式才对。

 

http://www.foxtable.com/help/topics/1058.htm

 


--  作者:mayazql
--  发布时间:2016/4/6 8:48:00
--  
谢谢,主要是要模糊查询,帮助例子不能模糊查询,而且要多个参数都能模糊查询。谢谢
--  作者:大红袍
--  发布时间:2016/4/6 9:04:00
--  
以下是引用mayazql在2016/4/6 8:48:00的发言:
谢谢,主要是要模糊查询,帮助例子不能模糊查询,而且要多个参数都能模糊查询。谢谢

 

你把 等于 = 改成 like \'%内容%\' 就是模糊查询了。

 

http://www.foxtable.com/help/topics/1647.htm

 


--  作者:mayazql
--  发布时间:2016/4/6 9:14:00
--  
谢谢,我再试下
--  作者:mayazql
--  发布时间:2016/4/6 10:34:00
--  
可以了,谢谢帮助
下面是OK的代码

Dim Filter As String
With e.Form.Controls("CmBPrid")
    If .Value IsNot Nothing Then
        Filter = "申请单号 = \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("TBUser")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "convert(申请人, \'System.String\') like \'%" & .Value & "%\'"
     End If
End With

With e.Form.Controls("CmBProj")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "工程号 = \'" & .Value & "\'"
    End If
End With

With e.Form.Controls("TbMN")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "convert(物料名称, \'System.String\') like \'%" & .Value & "%\'"
     End If
End With

With e.Form.Controls("TBMd")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
       Filter =  Filter & "convert(规格图号, \'System.String\') like \'%" & .Value & "%\'"
     End If
End With

If Filter > "" Then
    Tables("采购申请子表").Filter = Filter
End If

--  作者:大红袍
--  发布时间:2016/4/6 10:36:00
--  
convert(规格图号, \'System.String\') 这些不用写,如果你的列是字符列,直接写列名就可以了的。