次の例では、役職名をユーザーに入力してもらい、入力された役職名をクエリの抽出条件として使用します。
この例では、EnumFields プロシージャを呼び出しています。EnumFields プロシージャの内容は SELECT ステートメント、FROM 句の使用例の中にあります。
Sub ParametersX()
Dim dbs As Database, qdf As QueryDef
Dim rst As Recordset
Dim strSql As String, strParm As String
Dim strMessage As String
Dim intCommand As Integer
' この下の行を、使用しているコンピュータ上の
' Northwind のパスに変更してください。
Set dbs = OpenDatabase("NorthWind.mdb")
' parameters 句を定義します。
strParm = "PARAMETERS [Employee Title] CHAR; "
' parameters 句のある SQL ステートメントを定義します。
strSql = strParm & "SELECT LastName, FirstName, " _
& "EmployeeID " _
& "FROM Employees " _
& "WHERE Title =[Employee Title];"
' SQL ステートメントに基づいて
' QueryDef オブジェクトを作成します。
Set qdf = dbs.CreateQueryDef _
("Find Employees", strSql)
Do While True
strMessage = "Find Employees by Job " _
& "title:" & Chr(13) _
& " Choose Job Title:" & Chr(13) _
& " 1 - Sales Manager" & Chr(13) _
& " 2 - Sales Representative" & Chr(13) _
& " 3 - Inside Sales Coordinator"
intCommand = Val(InputBox(strMessage))
Select Case intCommand
Case 1
qdf("Employee Title") = _
"Sales Manager"
Case 2
qdf("Employee Title") = _
"Sales Representative"
Case 3
qdf("Employee Title") = _
"Inside Sales Coordinator"
Case Else
Exit Do
End Select
' 一時的なスナップショット タイプの
' Recordset を作成します。
Set rst = qdf.OpenRecordset(dbOpenSnapshot)
' Recordset を作成します。
rst.MoveLast
' EnumFields を呼び出し、Recordset の内容を
' 出力します。Recordset オブジェクトと
' 必要なフィールド幅を渡します。
EnumFields rst, 12
Loop
' ここではデモとして QueryDef を削除します。
dbs.QueryDefs.Delete "Find Employees"
dbs.Close
End Sub