Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi_Прак_2010.DOC
Скачиваний:
33
Добавлен:
10.11.2018
Размер:
2.31 Mб
Скачать

4.3. Создание запроса с групповыми вычислениями

Создание запроса с групповыми вычислениями осуществляется следующим образом.

1. Создать или выбрать форму для реализации запроса (создание - кнопка New Form на панели инструментов, 4-я слева на панели инструментов, выбор – кнопка Veiw Form, 2-я слева на панели инструментов). В свойствах формы в поле Name можно задать имя, например, Query3Form.

2. Расположить на форме компоненты Query (панель BDE), DataSource (панель Data Access), DBGrid (панель Data Controls).

3. Установить для Query в свойстве DataBaseName значение псевдонима, для DataSource – в свойстве DataSet значение Query1, для DBGrid – в свойстве DataSource значение DataSource1.

4. Для Query щелкнуть в свойствах в строке SQL по кнопке , в открывшемся окне набрать SQL-запрос.

Пример запроса, который выбирает поля Tovar и Zena из таблицы Tovar и суммирует поле Kolvo из таблицы Prihod (сумма по полю количество (Kolvo) получает имя Sum_Kolvo). В запросе записи группируются по полям Tovar, Zena (конструкция GROUP BY T.Tovar, T.Zena). Конструкция WHERE содержит условие связывания двух таблиц (таблицы связаны по полю Tovar) .

SELECT T.Tovar, T.Zena, SUM(P.Kolvo) As Sum_Kolvo

FROM Tovary T, Prihod P

WHERE T.Tovar = P.Tovar

GROUP BY T.Tovar, T.Zena

Щелкнуть по кнопке ОК.

5. Чтобы выполнить запрос, необходимо установить для Query в свойстве Active значение True.

6. Сохранить произведенные изменения (File, Save All).

7. Проверить вызов запроса и его работу (F9), вернуться в редактор (Ctrl+F2).

4.4. Создание параметрического запроса

Создание параметрического запроса осуществляется следующим образом.

1. Создать или выбрать форму для реализации запроса (создание - кнопка New Form на панели инструментов, 4-я слева на панели инструментов, выбор – кнопка Veiw Form, 2-я слева на панели инструментов). В свойствах формы в поле Name можно задать имя, например, Query4Form.

2. Расположить на форме компоненты Query (панель BDE), DataSource (панель Data Access), DBGrid (панель Data Controls).

3. Установить для Query в свойстве DataBaseName значение псевдонима, для DataSource – в свойстве DataSet значение Query1, для DBGrid – в свойстве DataSource значение DataSource1.

4. Для Query щелкнуть в свойствах в строке SQL по кнопке , в открывшемся окне набрать SQL-запрос. Параметрами в этом запросе являются имена, перед которыми стоят двоеточия «:». В параметрических запросах параметры заменяют значения, которые могут изменяться в процессе выполнения. Имена параметров произвольны и могут не совпадать с именами полей, которым они ставятся в соответствие. В данном запросе имена параметров совпадают с именами полей (запрос выбирает записи по заданным названию товара Tovar и дате прихода DatPrih).

SELECT * FROM Prihod

WHERE Tovar = :Tovar AND DatPrih = :DatPrih

Закрыть окно, щелкнув по кнопке ОК.

5. В Инспекторе Объектов выбрать свойство Params и щелкнуть по кнопке в строке этого свойства. В появившемся окне будут показаны имена всех параметров, введенных в тексте параметрического SQL-запроса. Каждому параметру из списка необходимо поставить в соответствие определенный тип и стартовое значение. Стартовое значение задавать необязательно. В строке ParamType для поля Tovar задать ptInputOutput, раскрыть список Value и в строке Type задать OleStr (String) (текстовое поле), в строке ParamType для поля DatPrih задать ptInputOutput и в строке Type задать Date (поле типа дата).

6. Всякий раз, когда необходимо изменить значения параметров запроса, программа должна закрыть Query, присвоить значения параметрам и повторно открыть его. Это реализует процедура, которая запускается при щелчке по соответствующей кнопке. Создадим панель, на ней два окна для ввода товара и даты и кнопку вызова процедуры, которая будет запускать параметрический запрос.

7. Поместить в форму панель (компонента Panel на панели Standard). Сделать такой размер панели, чтобы на ней поместились две надписи, два окна и кнопка. Для панели в свойстве Caption стереть название.

8. Создать на панели две надписи (кнопка Label на панели Standard). Для надписей в свойстве Caption задать названия полей (например, Товар и Дата прихода).

9. Создать на панели два текстовых поля (кнопка Edit на панели Standard). Для полей в свойстве Text стереть названия.

10. Создать на панели кнопку (кнопка Button на панели Standard). В свойстве Caption задать Выдать.

11. Двойной щелчок по кнопке открывает окно процедуры обработки события. Создать следующий обработчик события OnClick кнопки Выдать.

procedure …

var

Tmp_DatPrih : TdateTime;

Begin

Try

Tmp_DatPrih := StrToDate(Edit2.Text);

With Query1 do

Begin

Close;

ParamByName(‘DatPrih’).Value := Tmp_DatPrih;

ParamByName(‘Tovar’).Value :=Edit1.Text;

Open;

End; //with

Except

ShowMessage(‘Неверная дата’);

Edit2.SetFocus;

Exit;

End; //try

End;

Щелкнуть по кнопке ОК.

В данной процедуре вначале производится проверка введенного пользователем значения даты на соответствие формату даты, а затем присвоение значений параметрам и открытие набора данных.

12. Сохранить произведенные изменения и проверить работу запроса. В текстовые поля ввести значения (например, название товара и дату прихода). Для выполнения запроса щелкнуть по кнопке Выдать.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]