Sql 查询Access数据库并将所有记录返回Excel
我正在处理一个宏,用户通过该宏输入一个用于查询Access数据库的搜索词。我的问题是如何将这些记录以单独的行返回Excel 例如,数据库包含家庭地址信息。如果用户搜索邮政编码,所选记录将进入第1行、第2行、第3行等,查找查询中返回的家庭地址 下面是一些示例代码-我缺少的部分已清楚标记 谢谢你的帮助Sql 查询Access数据库并将所有记录返回Excel,sql,ms-access,excel,vba,Sql,Ms Access,Excel,Vba,我正在处理一个宏,用户通过该宏输入一个用于查询Access数据库的搜索词。我的问题是如何将这些记录以单独的行返回Excel 例如,数据库包含家庭地址信息。如果用户搜索邮政编码,所选记录将进入第1行、第2行、第3行等,查找查询中返回的家庭地址 下面是一些示例代码-我缺少的部分已清楚标记 谢谢你的帮助 Sub DatabaseQuery() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim stDB As String
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
您需要告诉我们您正在使用哪个版本的Access,因为它会改变一些事情 还有,为什么还要提到连接字符串?我没看到你说你在使用VB.NET。我只看到MS Access和Excel-Office应用程序 当Access将某些内容导出到Excel时,它几乎会模仿与查看数据表中数据时相同的外观 如果您正在使用Access,请查看我编写的以下代码作为起点:
outputFileName = CurrentProject.Path & "\Reports\YourReportName.xlsx"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "YourName", outputFileName, True
如果您使用的是不同的前端,您需要在问题中告诉我们。否则,我们该如何帮助你?凭猜测?这是一个不得到答案的好方法。我知道有不止一种方法可以做到这一点。以下内容对我来说确实有用
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
我正在使用MS Excel 2010和MS Access 2010。上面的大部分代码我都是从其他帖子中采用的,所以效果很好。话虽如此,我坦率地承认我真的不明白这意味着什么/正在发生什么。您编写的代码当然很有用,但我需要将代码复制到同一工作簿中,而不是创建新报告。请检查以下内容:。。。它有大约3-4个不同的答案。所有这些都会对您有所帮助。这似乎可以完成工作
工作表(“Sheet2”).Range(“A1”).CopyFromRecordset rs
如果它适合您,我很高兴您找到了另一种解决方案!干杯