Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 10331|回复: 10

VBA中使用sql Select的问题

[复制链接]
发表于 2014-4-5 14:19 | 显示全部楼层 |阅读模式
要对多张表中数据进行多条件查询,写了sql语句,一直没运行成功,大侠帮忙看看吧

If (Left(exlname, 1) = "3") Then
                    Set cnn = CreateObject("adodb.connection")
                    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='excel 8.0;hdr=yes';Data Source=" & mypath & arr(k) & "\" & exlname
                    Sql = "select 返还金额 from [回购数据$] where 基金名称='高票息基金'and 交割日期=date(left(arr(k),4),mid(arr(k),5,2),right(arr(k),2))"
                    wb.Sheets(1).Cells(2, 5).CopyFromRecordset cnn.Execute(Sql)
                    cnn.Close
              End If

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-4-5 14:38 | 显示全部楼层
建议上传2个附件,另外如果有相应的错误提示请截图。
回复

使用道具 举报

 楼主| 发表于 2014-4-5 14:54 | 显示全部楼层
hwc2ycy 发表于 2014-4-5 14:38
建议上传2个附件,另外如果有相应的错误提示请截图。

没有错误提示,但就是取不出来数据
回复

使用道具 举报

 楼主| 发表于 2014-4-5 15:01 | 显示全部楼层
hwc2ycy 发表于 2014-4-5 14:38
建议上传2个附件,另外如果有相应的错误提示请截图。

单独写了一个sql的语句

好像因为文件是只读

好像因为文件是只读
回复

使用道具 举报

发表于 2014-4-5 15:02 | 显示全部楼层
写入的数据库也是EXCEL嘛?
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='excel 8.0;hdr=yes;imex=2';Data Source=" & mypath & arr(k) & "\" & exlname
试试。
回复

使用道具 举报

 楼主| 发表于 2014-4-5 16:04 | 显示全部楼层
hwc2ycy 发表于 2014-4-5 15:02
写入的数据库也是EXCEL嘛?
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='excel 8.0 ...

版主,还是不行
我让sql选出来的赋值给a,用msgbox返回啊
If (Left(exlname, 1) = "3") Then
                         Dim a As Integer
                         cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='excel 8.0;hdr=yes;imex=2';Data Source=" & mypath & arr(k) & "\" & exlname
                         Sql = "select 返还金额 from [回购数据$] where 基金名称='聚利基金'"
                         a = Sql
                         wb.Sheets(1).Cells(2, 5).CopyFromRecordset cnn.Execute(Sql)
                         cnn.Close
                         MsgBox (a)
             End If


1.jpg
2.jpg
回复

使用道具 举报

发表于 2014-4-5 16:23 | 显示全部楼层
apricot119 发表于 2014-4-5 16:04
版主,还是不行
我让sql选出来的赋值给a,用msgbox返回啊
If (Left(exlname, 1) = "3") Then

你直接传附件我来测吧,这样比较快。


回复

使用道具 举报

 楼主| 发表于 2014-4-5 19:41 | 显示全部楼层
hwc2ycy 发表于 2014-4-5 16:23
你直接传附件我来测吧,这样比较快。

多谢版主,解决了,是我excel没有引用ADODB,但是现在又有一个问题:
我需要取出文件夹名称(20140403)中的年、月、日(我用left,mid,right取字符),然后跟工作簿里交割日期这列日期匹配
年、月、日都取出来了,但是如何组成日期格式,我用CDate(),不成功,好像因为CDate要精确到秒?
不知道版主有什么高见?
回复

使用道具 举报

发表于 2014-4-5 19:53 | 显示全部楼层
apricot119 发表于 2014-4-5 19:41
多谢版主,解决了,是我excel没有引用ADODB,但是现在又有一个问题:
我需要取出文件夹名称(20140403) ...

,没有引用ADODB。

你要么把分享出来的年月日用DateSerial函数转换成日期
还可以cdate(format("20040101","0000/00/00"))这样转。


回复

使用道具 举报

 楼主| 发表于 2014-4-5 20:36 | 显示全部楼层
hwc2ycy 发表于 2014-4-5 19:53
,没有引用ADODB。

你要么把分享出来的年月日用DateSerial函数转换成日期

多谢版主,dateserial成功了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-8 09:53 , Processed in 0.198442 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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