Страницы: 1
RSS
Сводная таблица OLEDB, Заполнение сводной таблицы данными из sql server compact
 
Подскажите пожалуйста как получить данные из sql server compact 3.5 и засунуть их в сводную таблицу?

Пока научился только доставать данные в recordset:
Код
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cmd As New ADODB.Command

Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset

conn.ConnectionString = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5; Data Source= c:\test\db.sdf;Persist Security Info=False"
conn.Open


cmd.ActiveConnection = conn
cmd.CommandText = "SELECT * FROM HISTORY"
Set rs = cmd.Execute

...

conn.Close
Заполнять сводную таблицу через ODBC я умею, а через OLEDB не получается...
Код
With ThisWorkbook.PivotCaches(1)
    If .CommandText = "SQL Запрос" Then
        .Connection = "ODBC строка подключения"
        .Refresh
    Else
        .EnableRefresh = True
        .CommandType = xlCmdSql
        .SavePassword = True
        .Connection = "ODBC строка подключения"
        .CommandText = "SQL Запрос"
        .RobustConnect = xlAlways
        .EnableRefresh = True
    End If
  
End With
 
см. Поиск
делали Как поставить заполненый Recordset в источник сводной таблицы
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Доброе время суток
Да точно так же. Только вот вы для ODBC подключения описание то даёте не правильное ; )
Для OLEDB будет
Код
.Connection = "OLEDB;Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5; Data Source= c:\test\db.sdf;Persist Security Info=False"

И лучше .Connection ставить первым в череде оформления получения внешних данных из баз данных.

Успехов.

Цитата
JeyCi написал:
Как поставить заполненый Recordset в источник сводной таблицы
А зачем так делать в данном случае? Чтобы хранить кэш данных для сводной в книге Excel (например, чтобы можно было на любом компьютере без возможности подключится к источнику данных модифицировать сводную)?
 
Андрей VG Спасибо, ваш пост очень мне помог сдвинуться с мертвой точки. Правда достичь поставленной цели все еще не получается.

Цитата
А зачем так делать в данном случае?
Я неправильно выразил свою мысль в первом посте. Мне нужно просто нужно заполнить данными существующую сводную таблицу.
 
Цитата
Андрей VG написал: А зачем так делать в данном случае?
это был пример ТС той ветки - я тоже не совсем понимала такую логику без возможности обновления (но там же по ветке были и линки на др. примеры)... и за неимением сервера (или файла римера другого формата) не могла проверить альтернативные варианты, а xl-файл всегда подключаю через odbc с возможностью обновления
Изменено: JeyCi - 29.10.2015 09:26:09
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
idShura написал:
Мне нужно просто нужно заполнить данными существующую сводную таблицу.
А это всё зависит от того как был создан кэш для сводной. Если его источник SourceType = xlExternal, то в принципе его можно переключать с одного источника данных на другой. Главное чтобы названия полей и их тип в источниках были сопоставимыми.
Во вложении пример этого подхода. Распаковать в папку с:\1.
Файл switchConn.xlsb - на листе "PivotByADO" кнопки, переключающие источник данных с Excel на базу Access. На листе "PivotByRange" точно такая же сводная, но по диапазону данных с соседнего листа "База". При попытке подключить туда внешние данные возникает ошибка, связанная с тем, что у этой сводной другой тип кэша. То есть, если у вас сводная по диапазону, другой сводной, то вы не сможете подключить внешние данные с вашей базы.

Успехов.
Изменено: Андрей VG - 29.10.2015 09:36:07
 
JeyCi, да я же без каких-либо претензий написал, если это так прозвучало - прошу извинить.
Просто вы принимали участие в той теме, и лучше понимаете, что было в том обсуждении, вот и спросил из каких соображений был такой подход, связанный с подключением Recordset, а не смене источника данных.
 
Цитата
Андрей VG написал: вот и спросил из каких соображений был такой подход, связанный с подключением Recordset
я сама удивилась ещё тогда  :) ... там по теме всё и изложено (и линки на нормальные варианты и другой код, если всё-таки надо кому-то)  
Изменено: JeyCi - 29.10.2015 10:05:41
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Страницы: 1
Наверх