ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: autumnalRain

[求助] 请高手指点VBA+SQL中where子句使用两个条件变量如何书写

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-5 11:29 | 显示全部楼层
lsm_fa 发表于 2015-12-18 10:56
我的已经测出试成功,可以动态变动查询内容,如果有想要的话,回个话

注意上面引号的用法就可以了

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-30 13:40 | 显示全部楼层
本帖最后由 autumnalRain 于 2016-1-30 13:55 编辑

***********************************************************************************************************************
SQL语句中注意:文本变量(和文本常量)要用单引号,数字类型的不能加单引号,日期类型的需要两边加#:
***********************************************************************************************************************

SQL = "select 凭证号,名称,规格,单位,数量,单价,金额,项目名称 from [项目名称$] where [凭证号]='" & SVoucher & "' And [项目名称]= '" & SProject & "'"
Sql = "select 凭证号,名称,规格,单位,数量,单价,金额,项目名称 from [项目名称$] where [凭证号]=""" & SVoucher & """ And [项目名称]= """ & SProject & """"

sql = "Select * from  table1  Where  日期 between #" & ld_1 & "# and #" & ld _2 & "# "

-------------------------------------------------------------------------------------------------------------------------------------------
第二句中""相当于一个单引号作用

TA的精华主题

TA的得分主题

发表于 2016-1-30 19:13 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-15 19:34 | 显示全部楼层
本帖最后由 autumnalRain 于 2016-2-15 20:05 编辑

扩展例子:注意下面例子中字符型变量和日期型变量的表示方法
"Select f1,f3,f6,f7 from [收支记录$a4:g]  where f2='" & [f1] & "' and f1 between #" & [b2] & "# and #" & [d2] & "#"
[f1],[b2],[d2]为活动工作表的作为条件的单元格;注意此处如何表示的:

[f1]是字符串型变量, f2='" & [f1] & "'

[b2],[d2]为日期变量, f1 between #" & [b2] & "# and #" & [d2] & "#"

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-15 19:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
扩展例子:
要求将查询结果按照每35行分一次列,写到[个人捐款汇总$]中,查询条件为活动工作表的科目[F1]日期介于[B2]和[D2]间
赵刚老师的代码解决了一直以来的疑惑,在此转到本贴,当做学习笔记!
  1. Sub ADO法()
  2.     Dim cnn As Object, rs As Object, SQL$, i&
  3.     Set cnn = CreateObject("ADODB.Connection")
  4.     cnn.Open "Provider = Microsoft.Jet.Oledb.4.0;Extended Properties ='Excel 8.0;hdr=no';Data Source =" & ThisWorkbook.FullName
  5.     SQL = "Select f1,f3,f6,f7 from [收支记录$a4:g]  where f2='" & [f1] & "' and f1 between #" & [b2] & "# and #" & [d2] & "#"
  6.     Set rs = cnn.Execute(SQL)
  7.     [a1].CurrentRegion.Offset(3).ClearContents
  8.     While Not rs.EOF
  9.          Cells(4, i + 1).CopyFromRecordset rs, 35
  10.          i = i + 4
  11.     Wend
  12.     rs.Close
  13.     cnn.Close
  14.     Set rs = Nothing
  15.     Set cnn = Nothing
  16. End Sub
复制代码


把查询结果每35行分一次列.rar

76.83 KB, 下载次数: 133

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-15 19:57 | 显示全部楼层
"Select f1,f3,f6,f7 from [收支记录$a4:g]  where f2='" & [f1] & "' and f1 between #" & [b2] & "# and #" & [d2] & "#"
[f1],[b2],[d2]为活动工作表的作为条件的单元格;注意此处如何表示的:

[f1]是字符串型变量, f2='" & [f1] & "'

[b2],[d2]为日期变量, f1 between #" & [b2] & "# and #" & [d2] & "#"

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-7-13 08:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
autumnalRain 发表于 2016-1-30 13:40
**************************************************************************************************** ...

select A.客户,A.合同编号,A.客品号,A.客色号,B.入库品号,B.入库花型色号,B.入库匹号,B.幅宽,B.毛长,B.净长,B.吊辫,B.净重,B.毛重 from [录合同计划$] A right join [入库$] B on A.匹号 = B.入库匹号 where 入库匹号 = '700378' or 入库匹号 ='700007'
如果我where后面入库匹号等于n多个不确定的数,各个数之间是or的关系,该怎么设置呢

TA的精华主题

TA的得分主题

发表于 2016-7-13 09:00 | 显示全部楼层
蓝风贝6329 发表于 2016-7-13 08:01
select A.客户,A.合同编号,A.客品号,A.客色号,B.入库品号,B.入库花型色号,B.入库匹号,B.幅宽,B.毛长,B.净 ...

select A.客户,A.合同编号,A.客品号,A.客色号,B.入库品号,B.入库花型色号,B.入库匹号,B.幅宽,B.毛长,B.净长,B.吊辫,B.净重,B.毛重 from [录合同计划$] A right join [入库$] B on A.匹号 = B.入库匹号 where 入库匹号 in('700378' ,'700007')

另:最好用左连接。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-4-11 13:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习了,留个记号

TA的精华主题

TA的得分主题

发表于 2018-4-20 11:41 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-5 11:20 , Processed in 0.045907 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表