2017-03-03 128 views
1

我想通過VBA執行預定義的查詢訪問並將其打印到調試輸出中。查詢設計的名稱位於名爲report的變量中。如何在VBA/Access中查詢設計的查詢結果debug.print

我期待,它將工作與:

debug.print db.Execute report 

但每次VBA它autocorrects到:

debug.print db.Execute; report 

如果我理解正確的話,該;代表一個新的生產線,因此使得對我而言沒有意義。但在這兩種情況下,無論是否有新行,我都會遇到錯誤。我認爲簡單的問題是,這不是正確的語法。

我可以找到很多關於如何調試打印在VBA中創建爲一個字符串的查詢的信息,但我找不到任何提示如何通過查詢設計輸出在Access中預定義的查詢。

回答

0

看起來問題在於它只能用db.Execute調用更新,而不是查詢。 沒有一個好的解決方案來打印整個表格debug.print查詢,但使用RecordSet在下面的代碼是可能的方式。

Dim rs As DAO.RecordSet 
Set rs = db.OpenRecordset(Bericht) 

Do Until rs.EOF = True 
    Debug.Print rs("Matrikelnummer"), rs("Bewertung"), rs("Termin (Datum)"), rs("Maximale Bewertung"), rs("Bestehensgrenze"), rs("Versuch"), rs("Äquivalenzleistung") 
    rs.MoveNext 
Loop 

rs.Close 
Set rs = Nothing 
3

嘗試之一:

'// You need the parentheses because the result has to be evaluated before it can be passed to the .Print() method 
Debug.Print db.Execute(result) 

Dim myResult As String 
myResult = db.Execute(result) 

Debug.Print myResult 

在VBA可以將參數傳遞給一個過程/方法不使用括號,只要結果是不是被感分配給任何東西。

'// Not assigning anything 
MyExampleFunction arg1, arg2, arg3 

'// assigning the result, which needs to be evaluated before it can be passed to a variable. 
MyResult = MyExampleFunction(arg1, arg2, arg3) 

以同樣的方式,當你調用Debug.Print它假定db.Executeresult實際上是獨立的參數(它沒有辦法知道你想result要傳遞給db.Execute第一,因爲有沒有在你的語法是對的方式說明)。所以你必須使用圓括號讓它知道。

+0

在兩種情況下,我都收到錯誤「Function or variable expanded」。錯誤點在。執行 – Florian

+0

它接縫,因爲數據庫不存在,但兩行後沒有debug.print它的工作沒有任何問題 – Florian

+0

我需要看到所有的代碼來嘗試猜測爲什麼,但它也將失去這個問題的範圍在於詢問別的東西(這是關於出現在你的陳述中的「;」)。我建議單獨發佈有關該問題的新問題並提供所需的所有代碼 –