2017-07-12 4 views
-1

に変数を置換します。私はそれが動作数でstrConsを交換した場合は、どのように私はほとんどが午前のOpenRecordsetクエリ

3061 Too few parameters. Expected 1.

:私は以下のようにこれを行うと、私はこの実行時エラーを取得します。なぜ運がないのか調べようとした。

を使用でき

Set rs = CurrentDb.OpenRecordset("SELECT Member.HomeEmail FROM Member INNER JOIN MemberRole ON Member.MemberID = MemberRole.MemberID WHERE (((MemberRole.AreaID)= strCons) AND ((MemberRole.RoleID)=1) AND ((MemberRole.FinishDate) Is Null)) ORDER BY Member.Surname")

strEmailTD = rs.Fields(0).Value rs.Close

+1

あなたは、クエリだけでなく、その名前にstrCons' 'の値を代入する必要があります。今はデータベースに何も意味を持たないテキストです。しかし、それを置き換えるだけでは、SQLインジェクションに脆弱になるので、悪い考えです。したがって、パラメータ化されたクエリを使用する必要があります。 –

+0

[Microsoft Accessの更新クエリでパラメータをプログラムで渡すことはできますか?](https://stackoverflow.com/questions/16568461/is-it-possible-to-pass-parameters-programmatically-in-a) -microsoft-access-update) –

答えて

0

Set rs = CurrentDb.OpenRecordset("SELECT Member.HomeEmail FROM Member INNER JOIN MemberRole ON Member.MemberID = MemberRole.MemberID WHERE (((MemberRole.AreaID)=" & strCons & ") AND ((MemberRole.RoleID)=1) AND ((MemberRole.FinishDate) Is Null)) ORDER BY Member.Surname") 
関連する問題