ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-7-23 12:15 | 显示全部楼层 |阅读模式
本帖最后由 autumnalRain 于 2015-7-23 12:30 编辑

想要实现的结果是:where子句条件使用【打印清单】中的凭证号和项目名称两个变量,并将其记录写到【查询结果】表中.因为是循环,凭证号和项目名称是两个变量,该如何书写呢?
即下面代码行的 ' And "项目名称= '" & SProject & "'"如何写进SQL语句中?



Sub 查询结果()
   
Dim Rmax As Integer, i As Integer
Dim SVoucher, SProject
Rmax = Sheets("打印清单").Range("a1").CurrentRegion.Rows.Count ' MsgBox Rmax
   
For i = 2 To Rmax
    SVoucher = Sheets("打印清单").Cells(i, 1)
    SProject = Sheets("打印清单").Cells(i, 2)
    Sheets("查询结果").Cells.Clear
    Dim cnn As Object, SQL
    Set cnn = CreateObject("ADODB.Connection")
    cnn.Open "provider=microsoft.ACE.OLEDB.12.0;extended properties='Excel 12.0;hdr=yes';data source=" & ThisWorkbook.FullName
    SQL = "select 凭证号,名称,规格,单位,数量,单价,金额,项目名称 from [项目名称$] where 凭证号='" & SVoucher & "'" ' And "项目名称= '" & SProject & "'"
    Sheets("查询结果").[a2].CopyFromRecordset cnn.Execute(SQL)
    cnn.Close
    Set cnn = Nothing
      
   Next i
   
   
End Sub

批量打印程序_final.zip

97.09 KB, 下载次数: 79

TA的精华主题

TA的得分主题

发表于 2015-7-23 12:48 | 显示全部楼层
本帖最后由 zzhilling 于 2015-7-23 12:49 编辑

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

如果不行可能你列名称有问题
比如表格里面列名称有空格等等


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-7-23 13:09 | 显示全部楼层
Sql = "select 凭证号,名称,规格,单位,数量,单价,金额,项目名称 from [项目名称$] where [凭证号]=""" & SVoucher & """ And [项目名称]= """ & SProject & """"

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-23 13:20 | 显示全部楼层
本帖最后由 autumnalRain 于 2015-7-23 15:09 编辑
zzhilling 发表于 2015-7-23 12:48
SQL = "select 凭证号,名称,规格,单位,数量,单价,金额,项目名称 from [项目名称$] where [凭证号]='" & SVo ...


可以运行,请教下[]是必须的吗?如果不要AND后的条件,我测试过不要[]是可以的

批量打印程序_final.zip

97.89 KB, 下载次数: 66

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-23 14:48 | 显示全部楼层
kuaile5935 发表于 2015-7-23 13:09
Sql = "select 凭证号,名称,规格,单位,数量,单价,金额,项目名称 from [项目名称$] where [凭证号]=""" & SV ...

可以运行,[]书写规范帮助在哪里可以找到?

TA的精华主题

TA的得分主题

发表于 2015-7-23 14:59 | 显示全部楼层
autumnalRain 发表于 2015-7-23 14:48
可以运行,[]书写规范帮助在哪里可以找到?

我也是新手
我写的时候 字段都是带着[]的  就不会出错,有时也看别人省略[]的  
具体我也不清楚啊,不偷懒,多写点不会错的。
你要是找到了规范帮助的地方也告诉我声。

TA的精华主题

TA的得分主题

发表于 2015-7-27 16:12 | 显示全部楼层
sql 里面,如果使用关键字作列名,查询的时候必须带[]
你的语句问题我不知道,但[]是告诉系统,里面是列名或表格名

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-26 15:54 | 显示全部楼层
本帖最后由 autumnalRain 于 2015-10-26 16:05 编辑
zzhilling 发表于 2015-7-23 12:48
SQL = "select 凭证号,名称,规格,单位,数量,单价,金额,项目名称 from [项目名称$] where [凭证号]='" & SVo ...

SQL语句中注意:的文本变量(和文本常量)要用单引号,数字类型的不能加单引号:
Str = Str & " '" & Str经销商 & "'" & " as 经销商,"
where 名称<>'合计' and abs(数量)>0"

补充内容 (2016-1-30 13:01):
sql = "Select * from  table1  Where  日期 between #" & ld_1 & "# and #" & ld _2 & "# "
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2015-12-18 10:56 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-1-5 00:27 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-5 03:50 , Processed in 0.067487 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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