使用VBA连接Access到Excel,将不会从Access输出任何记录

时间:2014-09-02 22:37:06

标签: vba excel-vba access-vba excel

我想使用VBA连接到我的Access表。我希望能够输入采购订单编号,并将查询中的值引用到Access表中。我想将该查询的结果打印到我的Excel工作表。这就是我到目前为止......任何想法?

Sub CommandButton1_Click()
Dim myValue As Variant
myValue = InputBox("Enter Purchase Order Number:")
Range("A1").Value = myValue

Call ADO_Conn(myValue)
End Sub


Sub ADO_Conn(myValue)
Dim conn As New Connection
Dim rstAnswer As New ADODB.Recordset
Dim connected As Boolean
Dim RootPath, DBPath As String
Dim tempString As String

 connected = False

RootPath = "Z:\BSD Internship Program\FY14 Intern Files\John Jameson\Vouchers"
DBPath = RootPath & "Acquisition Support Datamart Build 9.11-03.accdb"
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source= Z:\BSD Internship     Program\FY14 Intern Files\John Jameson\Vouchers\Acquisition Support Datamart 9.1103.accdb;"

connected = True

rstAnswer.Open "SELECT VW_PUB_PURCHASE_ORDER.PO_NO FROM VW_PUB_PURCHASE_ORDER " & _
"WHERE VW_PUB_PURCHASE_ORDER.PO_NO = ' " & myValue & " ';", conn, adOpenKeyset,       adLockOptimistic

Do Until rstAnswer.EOF
tempString = CStr(rstAnswer!VW_PUB_PURCHASE_ORDER)
Application.ActiveWorkbook.Worksheets("Sheet1").Range("A5").Value = tempString
rstAnswer.MoveNext
Loop

rstAnswer.Close
conn.Close
connected = False
End Sub

1 个答案:

答案 0 :(得分:0)

关于初始查询的一些事项:

rstAnswer.Open "SELECT VW_PUB_PURCHASE_ORDER.PO_NO FROM VW_PUB_PURCHASE_ORDER " & _
"WHERE VW_PUB_PURCHASE_ORDER.PO_NO = ' " & myValue & " ';", conn, adOpenKeyset, adLockOptimistic

您在此查询中仅搜索PO_NO,因此这是唯一将返回的值。如果你想要的不仅仅是那些数据(我假设你可能),那么你想要这个:

rstAnswer.Open "SELECT * FROM VW_PUB_PURCHASE_ORDER " & _
"WHERE VW_PUB_PURCHASE_ORDER.PO_NO = ' " & myValue & " ';", conn, adOpenKeyset, adLockOptimistic

...星号表示"全部"。

另外,这一点让我担心:

' " & myValue & " '

您要在搜索字词中添加前导和尾随空白。这可能是也可能不是你想要的,但我认为你不想要这个。你可能想要:

'" & myValue & "'

如果您的PO_NO是数值,则需要省略撇号:

" & myValue & "

最后,我不认为你想要循环。 SELECT查询将返回所有结果,而不需要您迭代行。也许你应该尝试摆脱你的"做"循环并使用它代替:

Worksheets("Sheet1").Range("A5").CopyFromRecordset rstAnswer

然后,您的查询值将被放入指定表格&的动态范围内。细胞

我没有对代码进行测试,所以我可能没有抓到所有内容,但是那些代码跳出来了。

希望有所帮助!

内特