我正在尝试运行此SQL语句,然后将结果导出到excel电子表格。我已经浏览了互联网并找到了这个,这对其他用户来说似乎很有用。
它运行但是要求我输入参数值"链接到" selecteduser"在代码的第4行,消息框显示在代码从此处开始的位置:DoCmd.TransferSpreadsheet。如果单击“确定”,则会创建Excel工作表,但除了数据库中表中所选列的标题外,没有任何内容。如果我将有效数据放入文本框并按确定,则会创建excel电子表格并显示正确的数据。
我知道ComboBox中的选定数据已经存储,因为如果我执行一个消息框,它会显示组合框中的选定数据。
任何想法?很明显,数据没有通过某个地方,但我无法看到。
Private Sub Command12_Click()
Dim strSQL As String
Dim strQry As String
Dim selecteduser As String
Dim db As DAO.Database
Dim Qdf As QueryDef
selecteduser = Me.Combo6.Column(0)
strSQL = "SELECT tblPra.praNo, tblFolder.folder, tblFolder.fullTitle FROM tblPra INNER JOIN (tblFolder INNER JOIN tblRelationship ON tblFolder.folderID = tblRelationship.folderID) ON tblPra.praID = tblRelationship.praID WHERE (((tblPra.praNo)=selecteduser));"
strQry = "tempuser"
Set db = CurrentDb
Set Qdf = db.CreateQueryDef(strQry, strSQL)
On Error Resume Next
DoCmd.DeleteObject acQuery, "strQry"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, _
strQry, "C:\Users\prc93\Desktop\test.xls", True
DoCmd.DeleteObject acQuery, strQry
End Sub
答案 0 :(得分:1)
查询中的selecteduser
需要在引号之外。因为它是一个字符串,它需要在单引号中,如'selecteduser'
。现在,如果您使用msgbox查询,您应该会看到selecteduser
等于您的column (0)
。你确定selecteduser
需要是一个字符串而不是一个数字,例如long
?
Private Sub Command12_Click()
Dim strSQL As String
Dim strQry As String
Dim selecteduser As String
Dim db As DAO.Database
Dim Qdf As QueryDef
selecteduser = Me.Combo6.Column(0)
strSQL = "SELECT tblPra.praNo, tblFolder.folder, tblFolder.fullTitle FROM " &_
"tblPra INNER JOIN (tblFolder INNER JOIN tblRelationship ON " &_
"tblFolder.folderID = tblRelationship.folderID) ON " &_
"tblPra.praID = tblRelationship.praID " &_
"WHERE (((tblPra.praNo)='" & selecteduser & "'));"
strQry = "tempuser"
Set db = CurrentDb
Set Qdf = db.CreateQueryDef(strQry, strSQL)
On Error Resume Next
DoCmd.DeleteObject acQuery, "strQry"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, _
strQry, "C:\Users\prc93\Desktop\test.xls", True
DoCmd.DeleteObject acQuery, strQry
End Sub