我正在处理一个宏,用户输入一个用于查询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 :(得分:0)
您需要告诉我们您正在使用的Access版本,因为它会改变一些事情。
另外,为什么甚至提到连接字符串?我没有看到你说你在使用VB.NET。我所看到的只是MS Access& Excel - Office应用程序。
当Access将某些东西导出到Excel时,它几乎可以模仿它看起来像在数据表中查看数据一样。
如果 使用Access,请查看我编写的代码作为起点:
outputFileName = CurrentProject.Path & "\Reports\YourReportName.xlsx"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "YourName", outputFileName, True
如果您使用的是另一个前端,则需要在问题中告诉我们。否则,我们该如何帮助你呢?通过猜测?这是一个不能得到答案的好方法。
答案 1 :(得分: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