2017-08-18 22 views
-3

SQLを使用してテーブルからデータを取得し、Accessの直接ウィンドウに表示したいと考えています。VBAでSelect SQLステートメントの結果を取得するには

私はVBAに新しいですし、私は最初のレコードからフィールドの値を印刷するには、それ

Dim strSQL As String 
Dim cdb As DAO.Database 
Dim result As Variant 

strSQL = "SELECT x, from y WHERE z;" 

Set cdb = CurrentDb 

Debug.Print strSQL 

result = Call cdb.Execute(strSQL) 

Debug.Print result 
+0

「実行」はこれを行う正しい方法ではありません。 'Recordset'オブジェクトを使用してデータセットを返す必要があります。また、select文で 'x'の後にカンマを削除してください。 https://msdn.microsoft.com/en-us/library/bb243789(v=office.12).aspx – braX

+0

'Execute'は' Recordset'オブジェクトを返しますので、 'results = connection.Execute(sql ) 'を返し、返されたレコードを反復処理します。このサイトの何千もの場所で簡単に手に入るヘルプやサンプルがたくさんあります。あなたは*検索*を試しましたか? –

+0

実行していない(sql)、 'Dim result AS DAO.Recordset'、' Set result = CurrentDb.OpenRecordset(strSQL) ' – June7

答えて

2

を行うための方法を見つけるように見えることはできません。

Dim strSQL As String 
Dim result As DAO.Recordset 
strSQL = "SELECT x FROM y WHERE z;" 
Set result = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset) 
result.MoveLast 
result.MoveFirst 
Debug.Print result!x 

あなたは、各レコードから値を印刷するように、各レコードに移動するためにループ構造を使用する場合:このサイトhttp://allenbrowne.com/tips.html

Do While Not result.EOF 
    Debug.Print result!x 
    result.MoveNext 
Loop 

レビュー - 「図書館で例」のセクションを見てください約半ばダウン。ちょうど1行(1レコードのみが返されることになるだろうと仮定)で結果を生成する

1

、あなたが使用することができます。

Debug.Print CurrentDb.OpenRecordset("SELECT x FROM y WHERE z").Fields(0).Value 

あなたはまた、SQLではないのDLookup関数を使用することができますが必要になります

Debug.Print DLookUp("x", "y", "z") 
関連する問題