Динамические запросы к БД Орион Про с выводом в Ексель (MS Excel). Поиск по времени и фамилии.

В продолжение темы динамических запросов к БД Орион Про с выводом в excel и по просьбе одного из участников группы в Телеграм, пишу небольшую заметку.
Коллеге было необходимо составить отчет о проходах определенного сотрудника за определенный промежуток времени.
В простейшем случае запрос к БД Орион будет выгдядить так:

SELECT 
TimeVal
,pList.Name + ' ' + pList.FirstName + ' ' + pList.MidName
,Remark
 
FROM pLogData 
 
LEFT JOIN pList 
ON pList.ID = pLogData.HozOrgan
 
WHERE 
TimeVal BETWEEN 'начало интервала' AND 'конец интервала'
 
AND pList.Name LIKE '%Фамилия%'
AND pList.FirstName LIKE '%Имя%'
AND pList.MidName LIKE '%Отчество%'
 
AND pLogData.Event = 32 -- проход
 
ORDER BY
TimeVal

В дальнейшем через джойны можно обогатить отчет дополнительной информацией.
Принцип построения динамического отчета подробно рассмотрен в статье Динамические запросы к БД Орион… и останавливаться на этом я не буду.
Хочу обратить ваше внимание на реализацию поиска по времени (формат поля TimeVal — datetime) и ФИО (Name, FirstName, MidName это строки или varchar).
В Microsoft Query параметры передаются знаком «?». Поэтому наш запрос в MS Query должен выглядеть так:

SELECT 
TimeVal
,pList.Name + ' ' + pList.FirstName + ' ' + pList.MidName
,Remark
 
FROM pLogData 
 
LEFT JOIN pList 
ON pList.ID = pLogData.HozOrgan
 
WHERE 
TimeVal BETWEEN ? AND ?
 
AND pList.Name LIKE ?
AND pList.FirstName LIKE ?
AND pList.MidName LIKE ?
 
AND pLogData.Event = 32 -- проход
 
ORDER BY
TimeVal

Проделав все манипуляции по установлению связи с БД, подготовке запроса в MS Query и настройки его в Excel мы получим следующую картину:

Лист с отчетом
Лист с отчетом

Для того чтобы все это заработало необходимо сделать следующее:
До возврата данных в Excel из MS Query подготовить и правильно форматировать ячейки для указания временного интервала. Для этого необходимо в окне «Формат ячеек» на вкладке «Число» выбрать «(все форматы)» и руками в поле «Тип» указать нужный нам формат datetime.

ГГГГ-ММ-ДД чч:мм:сс

и нажать «ОК». Подобным образом должны быть отформатированы обе ячейки. Затем, обязательно указать в этих ячейках какой-нибудь временной интервал.

Формат ячейки времени
Формат ячейки времени

В случае не правильного формата ячеек или отсутствия в них значений, вы будете получать ошибку при указании ячейки для параметра запроса.
Для поиска строковых значений дополнительно делать ничего не нужно, однако крайне рекомендую вам обрамлять ваши фамилии, имена и отчества знаками процента [%] (см. рисунок выше) прямо в ячейках, т.к. включить их в запрос в Excel не получится. Если этого не делать, то запрос будет искать полное соответствие передаваемой строки.

Оцените пожалуйста статью:

ПечальноТак себеНе плохоХорошоОтличная статья! 3 оценок.
Загрузка...

Добавить комментарий