Excel VBA SQL如何多表联合查询?

Excel VBA SQL如何多表联合查询?,第1张

我也是个新手,趁此机会学习了一下,技术不高,写的太长了,基本符合要求,除了那生产信息,销售信息的合并单元格外

select abcg.型号,阶段,生产日期,生产数,不良数,销售日期,销售数量 from (select abc.型号,阶段,日期,生产日期,生产数,不良数 from (select a.型号,阶段,日期 from [表A$] a left join (select 型号,生产日期 as 日期 from [表B$] UNION select 型号,销售日期 as 日期 from [表C$]) bc on a.型号=bc.型号) abc left join (select 型号,生产日期,SUM(生产数) AS 生产数,SUM(不良数) AS 不良数 from [表B$] group by 型号,生产日期) bg ON abc.型号=bg.型号 and abc.日期=bg.生产日期) abcg left join (select 型号,销售日期,SUM(销售数量) AS 销售数量 from [表C$] group by 型号,销售日期) cg on abcg.型号=cg.型号 and abcg.日期=cg.销售日期 order by abc.型号,abc.日期

刚少了个排序

呵呵,以前就帮人家解决过这个,请看下面的代码,有注释的!

Private Sub CommandButton5_Click()

Dim Conn As New ADODB.Connection'定义ADODB连接对象

Dim ConnStr As String '定义连接字符串

Dim xiao As String

xiao = ComData.Text

'对于SQL 2008,如果以IP方式访问服务器,必须要启动SQL Server Browser服务,如果是Express版本,要以“IP(计算机名)\实例名”方式访问

ConnStr = txtData.Text

Dim Records As New ADODB.Recordset '定义ADODB对象的记录集

Dim Sheet As Worksheet '定义工作表

Set Sheet = ThisWorkbook.Worksheets("Sheet2") '给变量Sheet赋值,注意:是工作簿中索引为1的那个表(通常一个新的工作簿Sheet1的索引为1)

'Sheet.Name = "Data" '把Sheet名称改为Data

Sheet.Cells.Clear '清空表中原有的数据

'连接状态是打开就不在进行Open *** 作

Conn.Open ConnStr

Dim SQLStr As String'要执行的SQL语句

SQLStr = "select * from Shift_Code where Club='" + xiao + "'" '可以执行更复杂的SQL语句

Records.Open SQLStr, Conn, adOpenStatic, adLockBatchOptimistic '读取SQL查询结果到Records记录集

'Records.Open

Dim i, j, TotalRows, TotalColumns As Integer

j = 0

TotalRows = Records.RecordCount

TotalColumns = Records.Fields.Count

'下面的循环把表头(即列名)写到Excel表的第一行

For i = 0 To TotalColumns - 1

Sheet2.Cells(1, i + 1) = Records.Fields(i).Name

Next

'下面的循环把查询结果写到Excel表中

Do While Not Records.EOF

For i = 0 To TotalColumns - 1

Sheet2.Cells(j + 2, i + 1) = Records.Fields(i).Value

Next

Records.MoveNext

j = j + 1

Loop

Records.Close '关闭记录集

Conn.Close '关闭连接

Set Records = Nothing '清空对象

Set Conn = Nothing '清空对象

End Sub

有什么不懂的话Hi我!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10022385.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存