以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关键字查询  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=135833)

--  作者:2474842866
--  发布时间:2019/6/4 10:18:00
--  [求助]关键字查询
这是希望在实现多个关键字查询,关键字是‘蛙服下裤’,‘7018T恤’这样的多个关键字,在sql语句中实现动态加载。
Dim cnm As WinForm.DropDownBox = e.Form.Controls("comname")\'定义组合框
Dim str As String = cnm.text \'定义组合框字符串内容
Dim ss As  String() = str.Split(",")
Dim f As  String
For Each t As  String  In ss
    f = f & " or 商品简称 like \'%" & t & "%\'"
Next
f=f.Remove(0,4)
Dim sql As String = "s*e*l*e*c*t 商品简称,规格名,审核时间,sum(数量) as 数量 from ThrMon where 审核时间 >= \'" & Date1 & " \'and 审核时间 <= \'" & Date2 & " \'  And 商品简称 like \'" & f & "\'group by 商品简称,规格名,审核时间 "


但是总是提示错误,t变量在一个封闭块中,请问什么地方错了?

--  作者:有点甜
--  发布时间:2019/6/4 11:15:00
--  

1、这段代码没问题;

 

2、应该是你在其他地方定义了变量t,那么你下面的代码,就要改成,如

 

For Each ttt As  String  In ss
    f = f & " or 商品简称 like \'%" & ttt & "%\'"
Next

--  作者:2474842866
--  发布时间:2019/6/4 11:30:00
--  
谢谢,老师,但是我的sql语句任然无法执行,动态加载部分有问题吗?


--  作者:2474842866
--  发布时间:2019/6/4 11:34:00
--  
提示:列“货品名称”不属于表 采购系统_tb1.2.1。
但是我之前是可以正常运行的,就是加上了多关键字查询

--  作者:有点甜
--  发布时间:2019/6/4 11:43:00
--  

msgbox(sql) 弹出你的sql语句,再在sql测试窗口测试你的sql语句

 

http://www.foxtable.com/webhelp/scr/1484.htm

 


--  作者:有点甜
--  发布时间:2019/6/4 12:02:00
--  
以下是引用2474842866在2019/6/4 11:34:00的发言:
提示:列“货品名称”不属于表 采购系统_tb1.2.1。
但是我之前是可以正常运行的,就是加上了多关键字查询

 

msgbox(sql) 弹出你的sql语句,再在sql测试窗口测试你的sql语句

 

http://www.foxtable.com/webhelp/scr/1484.htm

 


--  作者:2474842866
--  发布时间:2019/6/4 12:37:00
--  
我看了sql语句,是单引号多出来了吗,但是我使用trim函数,无法将 ‘ 删除掉

图片点击可在新窗口打开查看此主题相关图片如下:360截图20190604123452068.jpg
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2019/6/4 12:39:00
--  

 

贴出你所写完整代码

 

 


--  作者:2474842866
--  发布时间:2019/6/4 13:13:00
--  
Dim dt1 As WinForm.DateTimePicker = e.Form.Controls("dtp1") \'定义日期框及变量
Dim dt2 As WinForm.DateTimePicker = e.Form.Controls("dtp2")
Dim Date1 As  Date = dt1.text
Dim Date2 As  Date = dt2.text
Dim d1 As new Date(2018,12,1)
Dim d2 As new Date(2019,2,28)
If  Date1 < d1 Then
    Date1 = d2 \'若日期小于2018年12月1日,则将时间赋值date1
End If
If  Date1 > d2 Then
    Date1 = d2 \'若日期大于2019年2月28日,则将时间赋值date2
End If


Dim cnm As WinForm.DropDownBox = e.Form.Controls("comname")\'定义组合框
Dim str As String = cnm.text \'定义组合框字符串内容
Dim ss As  String() = str.Split(",")
Dim f As  String
For Each tt As  String  In ss
    tt = tt.Trim(" \'")
    f = f & " or 商品简称 like \'%" & tt & "%\'"
Next
f=f.Remove(0,14)
Dim sql As String = "s*e*l*e*c*t 商品简称,规格名,审核时间,sum(数量) as 数量 from ThrMon where 审核时间 >= \'" & Date1 & " \'and 审核时间 <= \'" & Date2 & " \'  And  商品简称 like " & f & "group by 商品简称,规格名,审核时间 "
msgbox(sql)
Dim grp As new CrossTableBuilder("",sql,"ThrMon")\'定义变量代表统计表
grp.hGroups.AddDef("商品简称","货品名称")\'添加商品简称分组列
grp.hGroups.AddDef("规格名","规格名称")\'添加规格名分组列
grp.VGroups.AddDef("审核时间",DateGroupEnum.Year,"{0}年")
grp.VGroups.AddDef("审核时间","{0}月")
grp.VGroups.AddDef("审核时间",DateGroupEnum.Day,"{0}日")
grp.Totals.AddDef("数量","数量")\'为分组列添加统计列
grp.VerticalTotal = True
grp.HorizontalTotal = True
Tables("采购系统_tb1.2.1").DataSource = grp.BuildDataSource() \'生成该统计表


--  作者:有点甜
--  发布时间:2019/6/4 13:28:00
--  

1、文本框输入值        蛙服下裤,7018T恤

 

2、修改代码

 

Dim cnm As WinForm.DropDownBox = e.Form.Controls("comname")\'定义组合框
Dim str As String = cnm.text \'定义组合框字符串内容
Dim ss As  String() = str.Split(",")
Dim f As  String
For Each tt As  String  In ss
    f = f & " or 商品简称 like \'%" & tt & "%\'"
Next
f="(" & f.Remove(0,3) & ")"
Dim sql As String = "s*e*l*e*c*t 商品简称,规格名,审核时间,sum(数量) as 数量 from ThrMon where 审核时间 >= \'" & Date1 & "\' and 审核时间 <= \'" & Date2 & "\'  And " & f & " group by 商品简称,规格名,审核时间 "
msgbox(sql)