2017-09-21 17 views
-1

"FROM ... WHERE = '変数'"構造の変数に基づいてテーブルを返すSQLパススルークエリがあります。私はパススルークエリをVBAコードで使用し、フォームから変数を取得したいと思います。再開時:フォームに変数を入力し、パススルークエリでVBAコードを実行し、結果を同じフォームに戻します。それ、どうやったら出来るの?QueryDefを使用してパススルークエリからデータを取得するにはどうすればよいですか?

答えて

0
Dim rst  As DAO.Recordset 

With CurrentDb.QueryDefs("qryPass") 
    .SQL = "select * from dbo.tblCustomers where City = '" & Me!City & "'" 
    .ReturnsRecords = True 
    Set rst = .OpenRecordset 
End With 

上記のフォームは、現在のフォームのテキストボックスCityを使用します。 SQLインジェクションを防ぐために、あなたはこれを使用することができます

.SQL = "select * from dbo.tblCustomers where City = " & qu(me!City) 

そして、あなたが持つ表現の前後に引用符配置する汎用ルーチンがあります。

Function qu(vText As Variant) As String 

    qu = Chr$(34) & vText & Chr$(34) 

    qu = Replace(qu, ";", "") 
    qu = Replace(qu, "(", "") 
    qu = Replace(qu, ")", "") 
    qu = Replace(qu, "=", "") 

End Function 
+0

この方法は、アルバート作品を。ありがとう! –

関連する問題