Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Экспорт данных из динамического запроса в Excel / Печатную форму  [new]
Prosha
Member

Откуда:
Сообщений: 10
Доброго дня. эксперты!

Необходим совет по реализации следующей задачи: существует динамически составляемый запрос по расчету сдельной заработной платы (в зависимости от количества предоставляемых за отчетный период услуг и количества клиентов, количество столбцов динамически изменяется). В итоговом запросе есть несколько фиксированных первых столбцов, остальные столбцы прибавляются циклически, группами по 4 столбца. Необходимо вывести весь отчет в какой-либо удобный печатный вид. Для реализации подобных задач у нас обычно используются 2 инструмента:
- репорт *.rpt вместе с dll, вызывающей процедуру, которые выводят все это дело в печатную форму;
- программа dispatch, которая на основе dts-пакета и шаблона xls формирует конкретный репорт.
В данном случае оба этих способа не могут быть применены, так как при их использовании необходимо фиксированное количество столбцов.
Есть идея добавить в итоговый запрос первую строку, содержащую имена столбцов, а сам запрос приделать к этой строке с помощью union. Потом написать программу, выполняющую процедуру и просто вставляющую результат в таблицу с определенной строки. Однако у такого способа есть ряд недостатков: он изрядно осложнит сборку динамического запроса "по кускам" в теле процедуры; станет невозможным выставить в определенном поле сумму по каждому человеку, это надо будет делать руками; невозможно будет сделать красивую разметку полей.
Быть может есть более изощренный и красивый способ реализации этой задачи?

С уважением,

Россолов Петр.
18 окт 11, 11:54    [11457780]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из динамического запроса в Excel / Печатную форму  [new]
AHDP
Member

Откуда:
Сообщений: 1226
Если вас устраивает Excel, то вызывайте составление динамического запроса напрямую из VBA.
Циклом пройдитетесь по полям рекордсета для вывода имён.
Двумя циклами выведите данные.
18 окт 11, 12:13    [11458013]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из динамического запроса в Excel / Печатную форму  [new]
Prosha
Member

Откуда:
Сообщений: 10
AHDP,

Этот вариант не подходит по причине того, что нам надо сохранять эти данные в отдельном файле за период времени, у процедуры, возвращающей динамически изменяющийся результат запроса, есть 2 входных параметра (дата начала, дата конца периода), а при предложенном способе раализации это возможно только при написании отдельного интерфейса в Excel для ввода дат, если я правильно понимаю.
18 окт 11, 12:25    [11458162]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из динамического запроса в Excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
Prosha
Быть может есть более изощренный и красивый способ реализации этой задачи?

Использовать ReportingService для генерации-печати нужного отчета
18 окт 11, 12:28    [11458192]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из динамического запроса в Excel / Печатную форму  [new]
Prosha
Member

Откуда:
Сообщений: 10
2 Glory,

Я лично никогда не использовал ReportingService для реализации отчетов в SQL и не знаю его возможностей, Вы уверенны, что его средствами реально решить поставленную задачу?
18 окт 11, 13:00    [11458572]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из динамического запроса в Excel / Печатную форму  [new]
aleks2
Guest
1. Задвинуть идею переменного числа столбцов в задницу.
2. И сделать просто.
3. MS Word mail merge.
18 окт 11, 13:27    [11458834]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из динамического запроса в Excel / Печатную форму  [new]
AHDP
Member

Откуда:
Сообщений: 1226
Prosha
AHDP,

Этот вариант не подходит по причине того, что нам надо сохранять эти данные в отдельном файле за период времени, у процедуры, возвращающей динамически изменяющийся результат запроса, есть 2 входных параметра (дата начала, дата конца периода), а при предложенном способе раализации это возможно только при написании отдельного интерфейса в Excel для ввода дат, если я правильно понимаю.


Вызывать через шедулер. Даты формировать автоматически на основе текущей даты.
18 окт 11, 13:38    [11458934]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из динамического запроса в Excel / Печатную форму  [new]
Prosha
Member

Откуда:
Сообщений: 10
aleks2,

к сожалению, задвинуть динамические поля не получится.

Появилась идея поставить счетчик добавляемых блоков и в последний столбец селектить строку с Excel-формулой для суммирования всех столбцов с суммами в рублях. И просто все "тупо" вставлять в Excel. Но внутренний голос подсказывает, что это изврат, поэтому попробую реализовать через VBA, по схеме, предложенной AHDP.

Если будут еще идеи/предложения буду очень признателен.

Спасибо.
18 окт 11, 13:43    [11459001]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из динамического запроса в Excel / Печатную форму  [new]
voidpiligrim
Member

Откуда: Череповец
Сообщений: 32
Я использую скаченный скрипт. По нажатию кнопки из базы на лист в эксель копируются данные. Запрос формируется в ячейке эксель.
В приложении файл с примером.

К сообщению приложен файл (SQL test.xlsb - 29Kb) cкачать
18 окт 11, 23:01    [11463059]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из динамического запроса в Excel / Печатную форму  [new]
philips
Member

Откуда:
Сообщений: 365

oidpiligrim,
Я использую скаченный скрипт. По нажатию кнопки из базы на лист в эксель копируются данные. Запрос формируется в ячейке эксель.
В приложении файл с примером.

К сообщению приложен файл (SQL test.xlsb - 29Kb) cкачать


Все хорошо. А теперь для тупого
как это вставить в нужную ячейку и вообще как посмотреть код скрипта
16 июл 12, 19:23    [12874372]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из динамического запроса в Excel / Печатную форму  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
три часа мучился , в итоге случайно обратил внимание в одном из хелпов на знак "?" и проблема решился без VB.

пока не поставишь ? не активируется кнопка параметры, а там три варианта которые мне нужны были, я думаю тебе они тоже подойдут.

К сообщению приложен файл. Размер - 143Kb
17 июл 12, 14:41    [12878013]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из динамического запроса в Excel / Печатную форму  [new]
philips
Member

Откуда:
Сообщений: 365
ТАРАКАН
три часа мучился , в итоге случайно обратил внимание в одном из хелпов на знак "?" и проблема решился без VB.

пока не поставишь ? не активируется кнопка параметры, а там три варианта которые мне нужны были, я думаю тебе они тоже подойдут.


Стоит добавить что подключение должно быть из запроса (MS Query) , а не файла подключения (из него никогда не откроется окно Параметры )
18 июл 12, 10:06    [12881761]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить