Использование в программах команды Select. Использование переменных при формировании запросов.
При создании приложений для выборки данных широко используется команда select. В отличие от интерактивного режима, при программировании вы можете использовать переменные и пользовательские функции. Кроме того, в программах вы можете использовать более сложные выборки, включая вложенные запросы, кванторы существования и объединение запросов.
Использование переменных при формировании запросов
При формировании выборки в программах вы можете использовать переменные для определения условий выборки и задания имени таблицы, в которую записываются результаты выборки.
Рассмотрим пример создания запроса, в котором определяется итоговая сумма по каждому заказу. За основу возьмем аналогичный запрос, созданный ранее в интерактивном режиме. В него добавим возможность задания интервала, за который будет осуществляться выборка, а также имени результирующей таблицы.
- Откройте новое окно редактирования программы. Для этого в меню File (Файл) выберите команду New (Новый).
- В открывшемся диалоговом окне выберите опцию Program (Программа) и нажмите кнопку New file (Новый файл).
- Откройте окно созданного ранее запроса, содержащего выборку из таблиц ordsalem и Ordsaied с итоговой суммой по каждому заказу.
- Нажмите кнопку Show the SQL Window (Показать окно SQL) на панели инструментов Query Designer (Конструктор запроса) или в меню Query (Запрос) выберите команду View SQL (Показать SQL).
- В окне просмотра выделите команду select и сохраните ее во временном буфере Windows.
- Скопируйте содержимое буфера Windows в окно редактирования программы.
- Укажите перед командой select начальную и конечную даты, определяющие промежуток времени, а также значение переменной, которая задает имя результирующей таблицы:
dBeg=CTOD("01.04.03") && начальная дата dEnd=CTOD("30.0<3.03") && конечная дата cOutput="Ords" && имя результирующей таблицы
- Добавьте в конструкцию select условие задания периода времени, используя переменные dBeg и dEnd:
SELECT Ordsalem.icdorder AS заказ,; SUM(Ordsaled.nQuant*Ordsaled.nUnitPrice) AS стоимость; FROM sales!ordsalem INNER JOIN sales!ordsaled; ON Ordsalem.icdorder = Ordsaled.icdorder; WHERE Ordsalem.dDoc BETWEEN dBeg AND dEnd; GROUP BY Ordsalem.icdorder; INTO TABLE &cOutput
- Сохраните программу под именем Ords.prg и проверьте синтаксис.
- Выполните программу, в результате чего в таблицу ords будет записана итоговая сумма по заказам (рис 18.8). В дальнейшем вы можете использовать эту таблицу для просмотра, печати отчета или построения графика.
Рис 18.8. Программа и полученная в результате ее выполнения таблица Ords