PARAMETERS 宣言の使用例

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

この例では、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