有时查询数据不完整-使用VBA将结果拉入Excel
我在Access DB('10)中设置了一个查询。我的用户将参数输入Excel工具(“10”),该工具使用VBA将查询结果拉入Excel工具 问题:有时(我猜是1/50次)它会提取不完整的数据,我不明白为什么 使我困惑的是前后矛盾。我最好的猜测是有什么原因导致最后一段代码提前激活并关闭连接。但我不确定为什么它会偶尔这样做 代码: 我稍微更新了代码以包含一些错误捕获。这个问题一直存在 我是个大白痴 我让一个用户在工具出错时给我发了一份副本,试图深入研究这个问题,并意识到虽然不是所有的数据都在填充,但它是在过程的后期发生的。事实上,所有的原始数据都进入了这个工具。我的道歉--我是个大白痴有时查询数据不完整-使用VBA将结果拉入Excel,excel,ms-access,vba,Excel,Ms Access,Vba,我在Access DB('10)中设置了一个查询。我的用户将参数输入Excel工具(“10”),该工具使用VBA将查询结果拉入Excel工具 问题:有时(我猜是1/50次)它会提取不完整的数据,我不明白为什么 使我困惑的是前后矛盾。我最好的猜测是有什么原因导致最后一段代码提前激活并关闭连接。但我不确定为什么它会偶尔这样做 代码: 我稍微更新了代码以包含一些错误捕获。这个问题一直存在 我是个大白痴 我让一个用户在工具出错时给我发了一份副本,试图深入研究这个问题,并意识到虽然不是所有的数据都在填充,
我让一个用户在工具出错时给我发了一份副本,试图深入研究这个问题,并意识到虽然不是所有的数据都在填充,但它是在过程的后期发生的。事实上,所有的原始数据都进入了这个工具。很抱歉-\u-您的错误处理设置有多好?我在上面的代码中添加了一些基本的错误捕获。您的错误处理设置有多好?我在上面的代码中添加了一些基本的错误捕获。
Sub ParameterQuery_Awesome()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
On Error GoTo Whoa
'Step 1: Declare your variables
Dim MyDatabase As DAO.Database
Dim MyQueryDef As DAO.QueryDef
Dim MyRecordset As DAO.Recordset
'Step 2: Identify the database and query
Set MyDatabase = DBEngine.OpenDatabase _
("\\folders\Awesome.accdb")
Set MyQueryDef = MyDatabase.QueryDefs("AwesomeQuery")
'Step 3: Define the Parameters
With MyQueryDef
.Parameters("[Enter Parameter:]") = [Parameter].Value
End With
'Step 4: Open the query
Set MyRecordset = MyQueryDef.OpenRecordset
'Step 5: Clear previous contents
[DataInputRange].ClearContents
'Step 6: Copy the recordset to Excel
[DataInput].CopyFromRecordset MyRecordset
'MsgBox "Your Query has been Run"
LetsContinue:
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
On Error Resume Next
MyRecordset.Close
MyQueryDef.Close
MyDatabase.Close
Set MyRecordset = Nothing
Set MyQueryDef = Nothing
Set MyDatabase = Nothing
On Error GoTo 0
Exit Sub
Whoa:
MsgBox "Oh noes!!1" & vbCrLf & _
"Error Description :" & Err.Description & vbCrLf & _
"Error at line :" & Erl & vbCrLf & _
"Error Number :" & Err.Number
Resume LetsContinue
End Sub