- •Выборка данных
- •Оператор select
- •Выражения sql
- •Выражение from
- •Операции left join, right join
- •Операция inner join
- •Выражение in
- •Предикаты all, distinct, distinctrow, top
- •Объявление with owneraccess option
- •Выражение where
- •Операция Like
- •Операция In
- •Операция Between...And
- •Подзапрос
- •Выражение order by
- •Выражение group by
- •Выражение having
- •Оператор union
- •Оператор transform
- •Выражение procedure
- •Объявление parameters
- •Изменение данных
- •Оператор update
- •Оператор insert into
- •Оператор delete
- •Изменение структуры
- •Оператор select...Into
- •Оператор create table3
- •Выражение constraint4
- •Оператор alter table5
- •Оператор create index6
- •Оператор drop7
- •Агрегатные функции
- •Функция Count
- •Функция Avg
- •Функция Sum
- •Функции Var и VarP
- •Функции StDev и StDevP
- •Функции Min, Max
- •Функции First, Last
Выражение procedure
Определяет имя и, при необходимости, параметры запроса. Формат:
PROCEDURE name [param1 datatype[, param2 datatype[, ...]]
Оператор PROCEDURE имеет следующие части:
Часть |
Описание |
name |
Имя процедуры |
param1, param2 |
Одно или несколько названий полей или параметров. Например, PROCEDURE Sales_By_Country [Beginning Date] DateTime, [Ending Date] DateTime; См. PARAMETERS |
datatype |
Один из основных типов данных Microsoft Jet или синоним |
Процудура SQL состоит из выражения PROCEDURE, определяющего имя процедуры, не обязательного списка определения параметров и одного оператора SQL. Если выражение включает несколько определений полей (пары param-datatype), они разделяются запятыми. За выражением должен следовать оператор SQL (SELECT, UPDATE и т.п.).
Введенное в SQL-режиме конструктора запросов выражение PROCEDURE, удаляется при переключении в другой режим, при этом результат запроса не меняется. Если были определены параметры, то выражение PROCEDURE заменяется выражением PARAMETERS.
В следующем примере вводится имя запроса CategoryList (используется функция SQLTRANSFORMOutput):
Sub ProcedureX()
Dim dbs As Database, rst As Recordset
Dim qdf As QueryDef, strSql As String
' Modify this line to include the path to Northwind on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
strSql = "PROCEDURE CategoryList; " _ & "SELECT DISTINCTROW CategoryName, " _ & "CategoryID FROM Categories ORDER BY CategoryName;"
' Create a named QueryDef based on the SQL statement.
Set qdf = dbs.CreateQueryDef("NewQry", strSql)
' Create a temporary snapshot-type Recordset.
Set rst = qdf.OpenRecordset(dbOpenSnapshot)
rst.MoveLast ' Populate the Recordset.
' Call EnumFields to print the contents of the Recordset.
' Pass the Recordset object and desired field width.
EnumFields rst, 15
' Delete the QueryDef because this is a demonstration.
dbs.QueryDefs.Delete "NewQry"
dbs.Close
End Sub
Объявление parameters
Объявляет имя и тип параметра в параметрическом запросе. Формат
PARAMETERS name datatype [, name datatype [, ...]]
Объявление PARAMETERS имеет следующие части:
Часть |
Описание |
name |
Имя параметра. Присваивается свойству Name объекта Parameter и используется для идентификации в наборе Parameters. Отображается в диалоге запроса параметра при выполнении запроса. Имена, содержащие пробелы или знаки пунктуации, нужно заключать в квадратные скобки. |
datatype |
Один из основных типов данных Microsoft Jet или синоним |
Обявление параметров позволяет менять условия запроса, т.к. они запрашиваются при его выполнении. Объявление не обязательно, но если есть, должно предшествовать другим операторам. Если оно включает более одного параметра, они разделяются запятыми. Следующее объявление включает два параметра:
PARAMETERS [Low price] Currency, [Beginning date] DateTime;
Объявленные имена можно использовать в выражениях WHERE и HAVING:
PARAMETERS [Low price] Currency, [Beginning date] DateTime;
SELECT OrderID, OrderAmount FROM Orders WHERE OrderAmount > [Low price] AND OrderDate >= [Beginning date];
Параметры запрашиваются при каждом выполнении запроса, что позволяет пользователю ввести нужные значения. Объявление PARAMETERS эквивалентно определению параметров в ячейках Criteria конструктора запросов.
Для выполнения следующего примера нужно создать новый запрос в базе Northwind и ввести в режиме SQL
PARAMETERS [Enter a Last Name:] Text;
SELECT * FROM Employees WHERE LastName = [Enter a Last Name:];
Запрос будет запрашивать у пользователя Last Name. Аналогично, запрос
PARAMETERS [Enter a Category ID:] Value;
SELECT CategoryID, ProductName, Count([Order Details].OrderID) AS Tally FROM Products INNER JOIN [Order Details] ON Products.ProductID = [Order Details].ProductID GROUP BY CategoryID, ProductName HAVING CategoryID = [Enter a Category ID:];
будет запрашивать Category ID.
Tabelle 1 Типы данных
Поле таблицы |
Параметр запроса |
VBA |
DAO-константа |
Microsoft Jet |
Yes/No |
Yes/No |
Boolean |
dbBoolean |
BOOLEAN, BIT, LOGICAL, LOGICAL1, YESNO |
Number (Byte) |
Byte |
Byte |
dbByte |
BYTE, INTEGER1 |
Number(Integer)1 |
Integer |
Integer |
dbInteger |
SHORT, INTEGER2, SMALLINT |
Number (Long Integer) |
Long Integer |
Long |
dbLong |
LONG, INT, INTEGER, INTEGER4 |
Auto(Long Integer) |
Long Integer |
Long |
dbLong |
COUNTER, AUTOINCREMENT |
Number(Single) |
Single |
Single |
dbSingle |
SINGLE, FLOAT4, IEEESINGLE, REAL |
Number(Double) |
Double |
Double |
dbDouble |
DOUBLE, FLOAT, FLOAT8, IEEEDOUBLE, NUMBER, NUMERIC |
Currency |
Currency |
Currency |
dbCurrency |
CURRENCY, MONEY |
Date/Time |
Date/Time |
Date |
dbDate |
DATETIME, DATE, TIME, TIMESTAMP |
Replikations-ID |
Replication ID |
|
dbGUID |
GUID |
Text |
Text |
String |
dbText |
TEXT, ALPHANUMERIC, CHAR, CHARACTER, STRING, VARCHAR |
Memo |
Memo |
String |
dbMemo |
LONGTEXT, LONGCHAR, MEMO, NOTE |
Hyperlink |
Memo |
String |
dbMemo |
LONGTEXT, LONGCHAR, MEMO, NOTE |
OLE-Objekt |
OLE Object |
String |
dbLongBinary |
LONGBINARY, GENERAL, OLEOBJECT |
|
Binary |
|
|
BINARY, VARBINARY2 |
|
Value |
Variant |
|
VALUE |
