2014-02-19 192 views
0

我正在處理一個宏,用戶輸入一個用於查詢Access數據庫的搜索項。我的問題是如何將這些記錄返回到單獨的行中的Excel?查詢Access數據庫並將所有記錄返回給Excel

例如,數據庫包含家庭地址信息。如果用戶搜索郵政編碼,則選定的記錄將進入行1,2,3等,以獲得與查詢中返回的儘可能多的家庭地址。

下面是一些示例代碼 - 我缺少的部分清楚標記。

我感謝任何幫助!

Sub DatabaseQuery() 

Dim cn As New ADODB.Connection 
Dim rs As New ADODB.Recordset 
Dim stDB As String, stSQL As String, stProvider As String 
Dim SearchTerm As String 

stDB = "Data Source= C:\Database.accdb" ' Change accordingly 
stProvider = "Microsoft.ACE.OLEDB.12.0" 

With cn 
    .ConnectionString = stDB 
    .Provider = stProvider 
    .Open 
End With 

SearchTerm = Range("A1").Value ' Change accordingly 

stSQL = "SELECT Field1, Field2, Field3 " & _ 
    "FROM Table1 WHERE Field4= '" & SearchTerm & "'" 

rs.Open stSQL, cn, adOpenStatic 

' *** Put all the records in Sheet2! *** Help me! :) 

cn.Close 
Set rs = Nothing 
Set cn = Nothing 

End Sub 

回答

0

您需要告訴我們您使用的是哪個版本的Access,因爲它會改變一些事情。

此外,爲什麼還要提到連接字符串?我沒有看到你說你正在使用VB.NET。我看到的只是MS Access & Excel - Office應用程序。

當Access將某些東西導出到Excel中時,它幾乎可以模擬與查看DataSheet中的Data相同的外觀。

如果您使用Access,看看這個代碼,我寫了作爲一個起點:

outputFileName = CurrentProject.Path & "\Reports\YourReportName.xlsx" 
     DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "YourName", outputFileName, True 

如果您使用的是不同的前端,你需要告訴我們你的問題。否則,我們應該如何幫助你?通過猜測?這是一個不能得到答案的好方法。

+0

我正在使用MS Excel 2010和MS Access 2010.上面的大部分代碼都是從SO上的其他帖子採用的,它運行良好。話雖如此,我誠實地承認,我並不真正瞭解這意味着什麼。您編寫的代碼當然很有用,但我需要將代碼複製到同一工作簿中 - 不要創建新報告。 – blahblahblah

+0

請查看:[link](http://social.msdn.microsoft.com/Forums/office/en-US/e9a3203a-450a-4f22-807d-c71c451ed94d/is-it-possible-in-ms-access -to-export-results-of-five-queries-to-one-excel-workbook-via-vba?forum = accessdev)...它有大約3-4種不同的答案。所有這些都會幫助你。 –

+0

這似乎是做'工作表'(「Sheet2」)。範圍(「A1」)。CopyFromRecordset rs' – blahblahblah

0

我已經瞭解到有多種方法可以做到這一點。以下對我有用。

Sub DatabaseQuery() 

Dim cn As New ADODB.Connection 
Dim rs As New ADODB.Recordset 
Dim stDB As String, stSQL As String, stProvider As String 
Dim SearchTerm As String 

stDB = "Data Source= C:\Database.accdb" ' Change accordingly 
stProvider = "Microsoft.ACE.OLEDB.12.0" 

With cn 
    .ConnectionString = stDB 
    .Provider = stProvider 
    .Open 
End With 

SearchTerm = Range("A1").Value ' Change accordingly 

stSQL = "SELECT Field1, Field2, Field3 " & _ 
    "FROM Table1 WHERE Field4= '" & SearchTerm & "'" 

rs.Open stSQL, cn, adOpenStatic 

Sheets("Sheet2").Range("A1").CopyFromRecordset rs 

cn.Close 
Set rs = Nothing 
Set cn = Nothing 

End Sub 
相關問題