次の例では、役職名をユーザーに入力してもらい、入力された役職名をクエリの抽出条件として使用します。
この例では、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