Поделиться через


Объявление ARAMETERS (Microsoft Access SQL)

Область применения: Access 2013, Office 2013

Используется для описания имен и типов данных параметров в запросе с параметрами.

Синтаксис

PARAMETERS name datatype [, name datatype [, ...]]

Объявление PARAMETERS включает следующие элементы:

Часть

Описание

name

Имя параметра. Присваивается свойству Name объекта Parameter и используется для его идентификации в коллекции Parameters. Параметр name можно вывести в диалоговом окне во время обработки запроса приложением. Текст, содержащий пробелы или знаки пунктуации, необходимо заключить в квадратные скобки ([ ]). Например, [Низкая цена] и [Начать отчет с какого месяца?] являются допустимыми аргументами имени .

datatype

Один из основных типов данных Microsoft Access SQL или их синонимов.

Примечания

Объявление PARAMETERS можно использовать для создания регулярно выполняемых запросов с параметрами. Запрос с параметрами позволяет автоматически вносить изменения в условия запроса. При использовании запросов с параметрами программа должна запрашивать параметры при каждом выполнении запроса.

Использование объявления PARAMETERS не является обязательным. Если оно используется, объявление PARAMETERS должно предшествовать всем остальным инструкциям, в том числе SELECT.

Если параметров в объявлении несколько, их необходимо разделять запятыми. В приведенном ниже примере использованы два параметра.

PARAMETERS [Low price] Currency, [Beginning date] DateTime;

В предложении WHERE или HAVING нельзя использовать datatype, но можно использовать name. В следующем примере ожидается ввод двух параметров, которые затем используются в качестве условий отбора записей в таблице Orders:

PARAMETERS [Low price] Currency, 
[Beginning date] DateTime; 
SELECT OrderID, OrderAmount
FROM Orders 
WHERE OrderAmount > [Low price] 
AND OrderDate >= [Beginning date];

Пример

В этом примере пользователю нужно указать должность, которая затем используется в качестве условия запроса.

В этом примере выполняется вызов процедуры EnumFields, который вы можете найти в примере для инструкции SELECT.

    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 
         
        ' Modify this line to include the path to Northwind 
        ' on your computer. 
        Set dbs = OpenDatabase("NorthWind.mdb") 
         
        ' Define the parameters clause. 
        strParm = "PARAMETERS [Employee Title] CHAR; " 
     
        ' Define an SQL statement with the parameters 
        ' clause. 
        strSql = strParm & "SELECT LastName, FirstName, " _ 
            & "EmployeeID " _ 
            & "FROM Employees " _ 
            & "WHERE Title =[Employee Title];" 
         
        ' Create a QueryDef object based on the  
        ' SQL statement. 
        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 
             
            ' Create a temporary snapshot-type Recordset. 
            Set rst = qdf.OpenRecordset(dbOpenSnapshot) 
     
            ' Populate the Recordset. 
            rst.MoveLast 
                 
            ' Call EnumFields to print the contents of the  
            ' Recordset. Pass the Recordset object and desired 
            ' field width. 
            EnumFields rst, 12 
     
        Loop 
         
        ' Delete the QueryDef because this is a 
        ' demonstration. 
        dbs.QueryDefs.Delete "Find Employees" 
         
        dbs.Close 
     
    End Sub