2017-03-03 2 views
1

VBA経由でアクセスして定義済みのクエリを実行して、デバッグ出力に出力します。クエリ設計の名前は、reportという名前の変数にあります。VBA /アクセスのクエリデザインからクエリ結果をデバッグする方法

私はそれが仕事だろうと期待していた:

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

いずれかを試してみてください:VBAで

'// 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 

をあなたがいる限り、結果はビーイングされていないとして、括弧を使用せずにプロシージャ/メソッドに引数を渡すことができます何かに割り当てられています。同様に

'// 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) 

、あなたはそれがdb.Executeresultが実際に別々の引数であることを前提としていDebug.Printを呼び出したときに何もにあなたの構文でもありませんので(それはあなたがresultが最初db.Executeに渡されるしたいことを知る方法はありませんそれを述べなさい)。だからあなたはそれを知らせるために括弧を使用しなければならない。

+0

どちらの場合も「関数または変数がエクスパートされました」というエラーが表示されます。エラー番号は – Florian

+0

です.dbは存在しませんが、2行後にはdebug.printがなくても問題なく動作します。 – Florian

+0

私はすべてのコードを見て、それを推測する必要がありますが、この質問の範囲は何か他のことを求めている(これはあなたの声明に現れる ";"に関するものです)。その問題について新しい質問を別々に投稿し、必要なコードをすべて提供することをお勧めします –

関連する問題