|
|
|
CommandText для Сводной Таблицы
|
|||
|---|---|---|---|
|
#18+
Всем привет! Подскажите, формирую отчет в Excel. На листе имеется сводная таблица. Есть объект PivotCache, из которого она получает данные. У него есть свойство Connection. Источник данных - таблица на MS SQL Server 2000. Есть свойство CommandText, куда прописываю запрос к БД. Если в свойстве Connection прописано соединение через OLEDB, то свойство CommandText задается нормально, если через ODBC, то при попытке присвоить св-ву CommandText запрос возникает ошибка. Мне нужно соединяться именно через ODBC и св-во CommandText формируется динамически. Подскажите, пожалуйста, в чем ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 14:59:48 |
|
||
|
CommandText для Сводной Таблицы
|
|||
|---|---|---|---|
|
#18+
Скорее всего, неправильно создаешь ODBC коннект. Показывай полностью макрос в обоих вариантах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 18:25:56 |
|
||
|
CommandText для Сводной Таблицы
|
|||
|---|---|---|---|
|
#18+
Подымаю тему еще раз, так как необходимость в данном отчете снова возникла. С ODBC коннектом все нормально, проверено, вот строка: "ODBC;DRIVER=SQL Server;SERVER=COMP;Uid=intel;Pwd=1;;;DATABASE=tempbase" Сам отчет содержит в себе 2 сводные таблицы, базирующиеся на внешнем источнике данных и 5-ти сводных таблицах, базирующихся на этих двух. Выборка представляет из себя результат выполнения хранимой процедуры на сервере. До поры до времени, пока в процедуре не было курсоров, подключение происходило через OLEDB, все было отлично. Процедура усложнилась, добавились курсоры и при формировании отчета возникала ошибка. Решил подключаться через ODBC. Так вот если в отчете оставить две таблицы, базирующиеся на внешнем ист. данных, то все отлично формируется. При добавлении сводной таблицы , базирующейся на одной из этих таблиц возникает ошибка. Ошибка возникает при присвоении свойства CommandText. В хэлпе вроде как написано, что при подключении через OLEDB надо вызывать Refresh, а при подключении через ODBC при присвоении CommandText автоматически происходит Refresh. Такое ощущени, что сводная таблица базирующаяся на сводной таблице не корректно обновляется. Может кто подскажет решение данной проблемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2008, 09:13:17 |
|
||
|
CommandText для Сводной Таблицы
|
|||
|---|---|---|---|
|
#18+
intelmanagerДо поры до времени, пока в процедуре не было курсоров, подключение происходило через OLEDB, все было отлично. Процедура усложнилась, добавились курсоры и при формировании отчета возникала ошибка.Поясни, при чем здесь курсоры? Внутренние дела ХП клиента не волнуют совершенно. А вот если итоговый резалтсет из ХП изменился тогда могут быть проблемы, до тех пор пока не объяснишь клиенту новую структуру резалтсета. intelmanagerРешил подключаться через ODBC.В идеальном мире, драйвера ODBC и OLE DB работают идеально. А если они оба работают так как предполагается по документации, то и клиенту (в данном случае Экселю) пофигу какой именно интерфейс ты будешь использовать. Но это в идеальном мире, а в реальном драйвера бывает глючат. Можно попробовать взять более новые драйвера... intelmanagerТак вот если в отчете оставить две таблицы, базирующиеся на внешнем ист. данных, то все отлично формируется. При добавлении сводной таблицы , базирующейся на одной из этих таблиц возникает ошибка. Ошибка возникает при присвоении свойства CommandText.Все игры начинаются с новенькой книги? Или ты правишь существующую книгу? intelmanager В хэлпе вроде как написано, что при подключении через OLEDB надо вызывать Refresh, а при подключении через ODBC при присвоении CommandText автоматически происходит Refresh.Нет, автоматических рефрешей нету. А вот подготовка запроса есть. Ты уверен, ты точно уверен что sql-команда синтаксически правильная и все имена таблиц и полей написаны без ошибок и у тебя есть права на чтение из этих таблиц/полей? intelmanagerТакое ощущени, что сводная таблица базирующаяся на сводной таблице не корректно обновляется. Может кто подскажет решение данной проблемы?Сводная таблица базируется не на сводной таблице, а на кешированом резалтсете. При создании первой сводной таблицы Эксель кеширует резалтсет-источник, вторая сводная таблица может быть построенна на новом резалтсете или использовать уже созданный (для экономии памяти и ускорения работы). Но в итоге, если у тебя есть несколько сводных таблиц построенных на одном общем кешированном резалтсете, а ты этот резалтсет меняешь - рушаться все сводные таблицы. Эксель попытается конечно их подправить, например убить из сводной таблицы поля построенные на исчезнувшем из резалтсета поле, но это ему не всегда удается (в реальном мире, глюки бывают). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2008, 18:06:00 |
|
||
|
CommandText для Сводной Таблицы
|
|||
|---|---|---|---|
|
#18+
Проблему решил. Решил разобраться с подключением через OLE DB. Дело в том, что когда запускал ХП в SQL Server Enterprise Manager, то ХП отлично отрабатывала. В свойствах сводной таблицы писал вызов этой же процедуры(exec ...), возникала ошибка. Однако до добавления курсоров в процедуру данный вызов отрабатывал без ошибок. Проблема была решена следующим образом: в ХП была добавлена строка SET NOCOUNT ON, и все отлично заработало. Вот такие пироги...Спасибо за отклик... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2008, 23:46:44 |
|
||
|
CommandText для Сводной Таблицы
|
|||
|---|---|---|---|
|
#18+
intelmanagerв ХП была добавлена строка SET NOCOUNT ONааа... ну да. О тривиальном то я и забыл :) Когда эта опция выключена, ХП возвращает на самом деле не один, а два резалтсета. А с множественными резалтсетами у Экселя некоторые напряги... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2008, 00:00:54 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=35154162&tid=2181366]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 342ms |

| 0 / 0 |
