Дополнительно: Требует высокой квалификации в программировании, взаимодействия и программирования в многопользовательской среде.
Эта статья касается только в проекте Microsoft Access (.adp).
Для версии Microsoft Access 2000 в этой статье см.
235359.
Обзор
В этой статье показано, как использовать формы Microsoft Access для задания условий запроса в проекте Microsoft Access.
Дополнительные сведения
В базе данных Microsoft Access (.mdb) или в Microsoft Office Access 2007 ACCDB-запрос по форме прием можно использовать для создания «форма запроса» для ввода критериев. Форма запроса содержит пустые текстовые поля или раскрывающиеся списки, каждый из которых представляет поле в таблице Access, необходимо выполнить запрос. Сделать записи только в полях, для которых требуется задать условия поиска.
Также можно реализовать приеме в проекте Microsoft Access. В проекте Microsoft Access хранимая процедура служит для поиска записи, которые требуется просмотреть, а затем создать дополнительные формы для отображения выходных данных хранимой процедуры следующим образом.
Создание хранимой процедуры
Выполните следующие действия, чтобы создать хранимую процедуру, которая будет использоваться для возврата данных формы.
-
Откройте доступ образца проекта Access NorthwindCS.adp. По умолчанию этот файл устанавливается в < диск >: \ < Microsoft Access выбирает папку >.
-
В Microsoft Office Access 2003 или Microsoft Access 2002 нажмите кнопку запрос в меню Вставка .
В Microsoft Office Access 2007 откройте вкладку Создать . -
В Access 2003 или Access 2002 нажмите кнопку Ввод сохраненной процедуры в диалоговом окне Новый запрос и нажмите кнопку ОК.
В Access 2007 щелкните Хранимая процедурав другой группе. -
Введите следующие инструкции Transact-SQL в окне хранимую процедуру:
Create Procedure "QBFProc"
@CustomerID varchar(10), @EmployeeID int, @OrderDate datetime
As
Declare @SQLSTRING varchar(1000)
Declare @SelectList varchar(1000)
SET NOCOUNT ON
SELECT @SelectList = 'SELECT * FROM Orders'
--Check to see if CustomerID search criteria is NULL.
--If it contains a value, Begin to construct a WHERE clause.
IF @CustomerID Is NOT NULL
BEGIN
SELECT @SQLString = 'WHERE CustomerID = ''' + @CustomerID + ''''
END
--Check to see if EmployeeID search criteria is NULL.
--If it contains a value, add additional information to the WHERE clause.
IF @EmployeeID Is NOT NULL
BEGIN
IF @SQLSTRING Is NOT NULL
BEGIN
SELECT @SQLSTRING = @SQLSTRING + ' AND EmployeeID = ' + Convert(varchar(100), @EmployeeID)
END
ELSE
BEGIN
SELECT @SQLSTRING = 'WHERE EmployeeID = ' + Convert(varchar(100), @EmployeeID)
END
END
--Check to see if OrderDate search criteria is NULL.
--If it contains a value, add additional information to the WHERE clause.
IF @OrderDate Is NOT NULL
BEGIN
IF @SQLSTRING Is NOT NULL
BEGIN
SELECT @SQLSTRING = @SQLSTRING + ' AND OrderDate = ''' + Convert(varchar(20), @OrderDate) + ''''
END
ELSE
BEGIN
SELECT @SQLSTRING = 'WHERE OrderDate = ''' + Convert(varchar(20), @OrderDate) + ''''
END
END
--Concatenate the SELECT and the WHERE clause together
--unless all three parameters are null in which case return
--@SelectList by itself without criteria.
IF @CustomerID IS NULL AND @EmployeeID IS NULL AND @OrderDate IS NULL
BEGIN
SELECT @SelectList = @SelectList
END
ELSE
BEGIN
SELECT @SelectList = @SelectList + ' ' + @SQLSTRING
END
--Execute the SQL statement.
EXECUTE(@SELECTLIST) -
Сохранить хранимую процедуру с именем по умолчанию QBFProc, а затем закройте процедуру.
Создание запроса по форме
Выполните следующие действия, чтобы создать форму QBF_Form, которая будет использоваться для выбора условия поиска, используемые хранимой процедурой.
-
Создайте новую форму, не основанную на таблице или запросе и назовите его QBF_Form.
-
В Access 2003 или Access 2002 убедитесь, что кнопка Мастера не нажата в панели элементов. В Access 2007 убедитесь, что кнопка Использовать мастеране нажата в группе элементы управления . Затем добавьте три поля со списком формы назначения следующие свойства:
Combo Box:
Name: cboCusID
Row Source Type: Table/View/StoredProc
Row Source: SELECT CustomerID FROM Customers
Combo Box:
Name: cboEmpID
Row Source Type: Table/View/StoredProc
Row Source: SELECT EmployeeID, LastName FROM Employees
Column Count: 2
Column Widths: 0;1
Bound Column: 1
Combo Box:
Name: cboOrder
Row Source Type: Table/View/StoredProc
Row Source: SELECT OrderDate FROM Orders -
Добавьте кнопку в форму с назначения следующие свойства:
Name: cmdOpenFinal
Caption: Open Form
On Click: [Event Procedure] -
Нажмите кнопку Построить (...) справа от [Процедура обработки событий], а затем настроить процедуру следующим:
Private Sub cmdOpenFinal_Click()
DoCmd.OpenForm "frmFinal", acFormDS
End Sub -
Сохраните и закройте форму, чтобы гарантировать сохранение формы как QBF_Form.
Создание формы для отображения результатов
Выполните следующие действия, чтобы создать форму frmFinal, которая отображает результаты хранимой процедуры на основе критериев, которые введены в QBF_Form.
-
В Access 2003 или Access 2002 нажмите кнопку запросы в списке объекты окна базы данных и нажмите кнопку QBFProc хранимой процедуры так, чтобы он получил фокус.
В Access 2007 выберите формы группы в области переходов и выберите команду QBFProc хранимую процедуру таким образом, чтобы он получил фокус. -
В Access 2003 или Access 2002 выберите команду Автоформа в меню Вставка .
В Access 2007 откройте вкладку Создать и нажмите кнопку
Формы в группе формы . -
При появлении запроса на ввод параметра, нажмите кнопку Отмена.
-
Сохраните форму, созданную в виде frmFinal.
-
Задайте свойство InputParameters этой формы:
@CustomerID varchar(10) = Forms!QBF_Form!cboCusID, @EmployeeID int =
Forms!QBF_Form!cboEmpID, @OrderDate datetime = Forms!QBF_Form!cboOrder -
Сохраните и закройте форму frmFinal.
Чтобы использовать только что созданный образец, откройте форму QBF_Form и выберите значения в одном или во всех полях со списком. Нажмите кнопки, чтобы открыть форму frmFinal, который будет отображать все совпадающие записи, удовлетворяющие критериям, выбранной в форме QBF_Form.
Ссылки
Дополнительные сведения о Осуществляют в базе данных Microsoft Access щелкните следующий номер статьи базы знаний Майкрософт:
209645 ACC2000: как использовать метод запроса по форме (запрос)
Дополнительные сведения о языке Transact-SQL (TSQL) и создание хранимых процедур с входными параметрами посетите следующий веб-узел корпорации Майкрософт: