简体   繁体   English

使用Excel工作表中的输入从vba运行Access SQL查询

[英]Using inputs from Excel worksheet to run Access SQL query from vba

I have tables that are created each month to reflect that month's records. 我有每月创建的表以反映该月的记录。 I have created vba code that runs a query in excel on multiple months to show changes, new adds, etc. However, I would like the user to be able to choose the two months they would like to compare from an excel drop down box. 我已经创建了vba代码,可以在excel中运行多个月的查询以显示更改,新添加等。但是,我希望用户能够从excel下拉框中选择要比较的两个月。 I am struggling to create dynamic SQL that can do this. 我正在努力创建可以做到这一点的动态SQL。 Below is my attempted code 以下是我尝试的代码

`Private Sub ADO_New()

Dim DBFullName As String
Dim Cnct As String, Src As String
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
Dim Col As Integer
Dim vCurrentMonth As Variant
Dim vPriorMonth As Variant
Dim wSummary As Worksheet

Set wSummary = Worksheets("Summary")
vCurrentMonth = wSummary.Range("Current_Month").Value
vPriorMonth = wSummary.Range("Prior_Month").Value

Worksheets("New").Cells.ClearContents
DBFullName = ThisWorkbook.Path & "\Guardian_CensusDB.accdb"


Set Connection = New ADODB.Connection
Cnct = "Provider=Microsoft.ACE.OLEDB.12.0;"
Cnct = Cnct & "Data Source=" & DBFullName & ";"
Connection.Open ConnectionString:=Cnct

Set Recordset = New ADODB.Recordset

With Recordset


 Src = "SELECT * FROM [vCurrentMonth] LEFT JOIN [vPriorMonth] ON     
 [vCurrentMonth].[Plan Number] = [vPriorMonth].[Plan Number]" & _
       "WHERE ((([vPriorMonth].[Plan Number]) Is Null))"



.Open Source:=Src, ActiveConnection:=Connection

For Col = 0 To Recordset.Fields.Count - 1
Sheets("New").Range("A1").Offset(0, Col).Value = _
Recordset.Fields(Col).Name
Next

Sheets("New").Range("A1").Offset(1, 0).CopyFromRecordset Recordset

End With


Set Recordset = Nothing

Connection.Close
Set Connection = Nothing



End Sub`

You need to concatenate the variables into your string: 您需要将变量连接到字符串中:

Src = "SELECT * FROM [" & vCurrentMonth & "] LEFT JOIN [" & vPriorMonth & "] ON     
 [" & vCurrentMonth & "].[Plan Number] = [" & vPriorMonth & "].[Plan Number]" & _
       "WHERE ((([" & vPriorMonth & "].[Plan Number]) Is Null))"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM