powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Pivot Table и параметризация запроса получения данных из SQL
10 сообщений из 10, страница 1 из 1
Pivot Table и параметризация запроса получения данных из SQL
    #38714140
anyany
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть сводные таблицы в MS Excel 2010. В сводных таблицах данные часовые, суточные, месячные. Данные для сводной таблицы получаем из SQL.
Предпосылки проблемы - файл очень сильно разрастается - данные с мохнатого года и загружать его по сетке с сервера для удалённых пользователей - проблематично, и в основном данные нужны скажем за последний год.
Так как в подавляющем большинстве данные нужны за предыдущий день, сутки - файл хранится на сервере и обновление вменено 1-му Пользователю с правами записи данного файла на сервере и обладающего правами доступа к данным на SQL.
У других пользователей нет прав на запись файла, и у большинства нет доступа (прав) к SQL.

Поэтому - для PivotTable использовать параметризированный запрос к SQL - где параметры будут храниться на листе книги.

Пробуем сначала для Query:
в Microsoft Query создаём параметризированный запрос:
SELECT "tb1".Дата, "tb1".Часы, "tb1".Данные1, "tb1".Данные2, "tb1".Данные3, "tb1".Данные4, "tb1".Данные5
FROM DBhours.dbo."tb1" "tb1"
WHERE ("tb1".ДатаВремя Between ? And ?)
ORDER BY "tb1".Дата Desc, "tb1".Часы

DSN=myMSSQL;UID=MYuid;Trusted_Connection=Yes;APP=Microsoft Office 2010;WSID=myWSID;DATABASE=DBhours;LANGUAGE=русский;Regional=Yes

в Microsoft Query определяем:
? - Param1: dateTime
? - Param2: dateTime
Помещаем данные на лист и определяем Таблица, Параметры:
"Значение параметра берётся из ячейки" и "Автоматически обновлять при изменении ячейки".
Param1 - в ячейке A1 =А2-360
Param2 - в ячейке A2 =ТДата()

При изменении значений в А1, А2 - всё работает, данных не много -> размер файла не большой.

Создаём Сводную Таблицу (PivotTable)
Использовать внешний источник данных - выбираем подключение (то которое создали в Microsoft Query)
"Выбранный тип подключения нельзя использовать для создания сводной таблицы"

Как решить проблему с PivotTable - что бы в неё попадала только часть данных из таблиц в SQL?
...
Рейтинг: 0 / 0
Pivot Table и параметризация запроса получения данных из SQL
    #38714207
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anyany, а если из экселя передавать параметры в хранимку, кот-я дропает при наличии и заново создает на сервере таблицу-источник пивота?
...
Рейтинг: 0 / 0
Pivot Table и параметризация запроса получения данных из SQL
    #38714230
anyany
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гр к,
Подробнее алгоритм - как предлагаешь реализовать
...
Рейтинг: 0 / 0
Pivot Table и параметризация запроса получения данных из SQL
    #38714239
anyany
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гр к,

Можно сделать параметризированный Query на лист. Лист скрыть. А PivotTable уже делать к данным возращенным параметризированным Query, причем PivotTable возмет все данные от Query. Вопрос в размере такого файла.
...
Рейтинг: 0 / 0
Pivot Table и параметризация запроса получения данных из SQL
    #38714249
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anyanyгр к,
Подробнее алгоритм - как предлагаешь реализовать
1) Обычным образом создаешь сводную таблицу на основе внешних данных, источник - таблица на сервере.
DSN, к примеру
Код: vbnet
1.
2.
3.
4.
5.
6.
'-- Подключение 
'OLEDB;Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=Northwind;Data Source=localhost;Use 'Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ERPILEV_AG;Use Encryption for Data=False;Tag with 'column collation when possible=False
'-- Текст команды
'"Northwind"."dbo"."Order Details Extended"
'-- Тип команды
'3


2) Хранимой процедурой дропаешь таблицу "Northwind"."dbo"."Order Details Extended", и потом создаешь заново, учитывая параметры
...
Рейтинг: 0 / 0
Pivot Table и параметризация запроса получения данных из SQL
    #38714277
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нащет п.1 - справедливо для Эксель 2007, в 2010 вроде немножко другая посл-ть действий.
Но смысл по-моему, понятен.
...
Рейтинг: 0 / 0
Pivot Table и параметризация запроса получения данных из SQL
    #38714342
anyany
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гр к,

Как то получилось для PivotTable - не разобрался правда, как это получилось.

Свойства подключения для PivotTable

Строка подключения
DRIVER=SQL Server;SERVER=myMSSQL2005;UID=myUID;Trusted_Connection=Yes;APP=Microsoft Office 2003;WSID=myWSID;DATABASE=myDBHours

тип Команды: SQL (не возможно изменить)
текст команды:
SELECT "tb1".Дата, "tb1".Часы, "tb1".Данные1, "tb1".Данные2, "tb1".Данные3, "tb1".Данные4, "tb1".Данные5
FROM DBhours.dbo."tb1" "tb1"
WHERE ("tb1".ДатаВремя Between ? And ?)
ORDER BY "tb1".Дата Desc, "tb1".Часы

определены:
? - Param1: dateTime
? - Param2: dateTime

Свойства подключения, Определения, Параметры:
"Значение параметра берётся из ячейки" и "Автоматически обновлять при изменении ячейки".
Param1 - в ячейке A1 =А2-360
Param2 - в ячейке A2 =ТДата()

только после изменения A1, A2 - делаем обновить PivotTable. И готово в списке "tb1".Дата за заданный промежуток

Осталось разобраться и повторить для других
На крайний случай переименуем xls в zip, распакуем, в x1\connections.xml - поправлю, и обратно запаковать
...
Рейтинг: 0 / 0
Pivot Table и параметризация запроса получения данных из SQL
    #38714437
anyany
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обнаружились первые траблы:

слетает привязка Param1, Param2 к листам:ячейкам - поэтому при обновлении, сохранении Excel просто безмолвно падает
...
Рейтинг: 0 / 0
Pivot Table и параметризация запроса получения данных из SQL
    #38714555
B.Key
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anyany,
а может проще сделать программно ADO шный запрос на сервер с нужными параметрами, получить рекордсет и его присвоить кешу сводной, затем обновить сводную.
...
Рейтинг: 0 / 0
Pivot Table и параметризация запроса получения данных из SQL
    #38714672
anyany
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
B.Key,

Файлов Excel - 5 шт, в них в среднем по 62 PivotTable, данные отчёты используют ~30 users.

Как писалось выше:
"Можно сделать параметризированный Query на лист. Лист скрыть. А PivotTable уже делать к данным возращенным параметризированным Query, причем PivotTable возмет все данные от Query. Вопрос в размере такого файла. " - надо проверять
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Pivot Table и параметризация запроса получения данных из SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]