以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]关键字查询 (http://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函数,无法将 ‘ 删除掉 |
-- 作者:有点甜 -- 发布时间: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)
|