Foxtable(狐表)用户栏目专家坐堂 → [求助]关键字查询


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

主题:[求助]关键字查询

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


加好友 发短信
等级:幼狐 帖子:131 积分:910 威望:0 精华:0 注册:2019/5/19 21:50:00
[求助]关键字查询  发帖心情 Post By: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变量在一个封闭块中,请问什么地方错了?

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


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

1、这段代码没问题;

 

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

 

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

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


加好友 发短信
等级:幼狐 帖子:131 积分:910 威望:0 精华:0 注册:2019/5/19 21:50:00
  发帖心情 Post By:2019/6/4 11:30:00 [只看该作者]

谢谢,老师,但是我的sql语句任然无法执行,动态加载部分有问题吗?


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


加好友 发短信
等级:幼狐 帖子:131 积分:910 威望:0 精华:0 注册:2019/5/19 21:50:00
  发帖心情 Post By:2019/6/4 11:34:00 [只看该作者]

提示:列“货品名称”不属于表 采购系统_tb1.2.1。
但是我之前是可以正常运行的,就是加上了多关键字查询

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


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

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

 

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

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:131 积分:910 威望:0 精华:0 注册:2019/5/19 21:50:00
  发帖心情 Post By:2019/6/4 12:37:00 [只看该作者]

我看了sql语句,是单引号多出来了吗,但是我使用trim函数,无法将 ‘ 删除掉

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


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


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

 

贴出你所写完整代码

 

 


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


加好友 发短信
等级:幼狐 帖子:131 积分:910 威望:0 精华:0 注册:2019/5/19 21:50:00
  发帖心情 Post By: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() '生成该统计表


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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)

 


 回到顶部
总数 17 1 2 下一页