|
Pivot Table и параметризация запроса получения данных из SQL
|
|||
---|---|---|---|
#18+
Есть сводные таблицы в 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? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 14:10 |
|
Pivot Table и параметризация запроса получения данных из SQL
|
|||
---|---|---|---|
#18+
anyany, а если из экселя передавать параметры в хранимку, кот-я дропает при наличии и заново создает на сервере таблицу-источник пивота? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 14:46 |
|
Pivot Table и параметризация запроса получения данных из SQL
|
|||
---|---|---|---|
#18+
гр к, Подробнее алгоритм - как предлагаешь реализовать ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 15:02 |
|
Pivot Table и параметризация запроса получения данных из SQL
|
|||
---|---|---|---|
#18+
гр к, Можно сделать параметризированный Query на лист. Лист скрыть. А PivotTable уже делать к данным возращенным параметризированным Query, причем PivotTable возмет все данные от Query. Вопрос в размере такого файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 15:09 |
|
Pivot Table и параметризация запроса получения данных из SQL
|
|||
---|---|---|---|
#18+
anyanyгр к, Подробнее алгоритм - как предлагаешь реализовать 1) Обычным образом создаешь сводную таблицу на основе внешних данных, источник - таблица на сервере. DSN, к примеру Код: vbnet 1. 2. 3. 4. 5. 6.
2) Хранимой процедурой дропаешь таблицу "Northwind"."dbo"."Order Details Extended", и потом создаешь заново, учитывая параметры ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 15:21 |
|
Pivot Table и параметризация запроса получения данных из SQL
|
|||
---|---|---|---|
#18+
Нащет п.1 - справедливо для Эксель 2007, в 2010 вроде немножко другая посл-ть действий. Но смысл по-моему, понятен. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 15:48 |
|
Pivot Table и параметризация запроса получения данных из SQL
|
|||
---|---|---|---|
#18+
гр к, Как то получилось для 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 - поправлю, и обратно запаковать ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 16:29 |
|
Pivot Table и параметризация запроса получения данных из SQL
|
|||
---|---|---|---|
#18+
Обнаружились первые траблы: слетает привязка Param1, Param2 к листам:ячейкам - поэтому при обновлении, сохранении Excel просто безмолвно падает ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 17:22 |
|
Pivot Table и параметризация запроса получения данных из SQL
|
|||
---|---|---|---|
#18+
anyany, а может проще сделать программно ADO шный запрос на сервер с нужными параметрами, получить рекордсет и его присвоить кешу сводной, затем обновить сводную. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 21:52 |
|
Pivot Table и параметризация запроса получения данных из SQL
|
|||
---|---|---|---|
#18+
B.Key, Файлов Excel - 5 шт, в них в среднем по 62 PivotTable, данные отчёты используют ~30 users. Как писалось выше: "Можно сделать параметризированный Query на лист. Лист скрыть. А PivotTable уже делать к данным возращенным параметризированным Query, причем PivotTable возмет все данные от Query. Вопрос в размере такого файла. " - надо проверять ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2014, 08:49 |
|
|
start [/forum/topic.php?fid=61&gotonew=1&tid=2173899]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 138ms |
0 / 0 |