Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Variant как источник данных сводной таблицы
 
Цитата
sokol92 написал:
Свойству Recordset в строке 23 должна быть присвоена ссылка на объект типа Recordset.
sokol92 спасибо за ответ, но это и так понятно. Я не очень разбираюсь в VBA и хотел узнать, есть ли какая-нибудь возможность указать двумерный массив в качестве источника данных в сводной таблице, например преобразовать двумерный массив в Recordset или еще каким-нибудь другим способом.
Variant как источник данных сводной таблицы
 
Подскажите, можно ли в качестве источника данных сводной таблицы использовать тип данных Variant?

Что я хочу сделать:
1. Получить данные из базы данных
2. Преобразовать набор данных в Variant (чтобы можно было изменить данные)
3. Изменить данные
4. Измененный набор указать в качестве источника данных в сводной таблице
Код
Private Sub CommandButton1_Click()
    

Dim CN   As ADODB.Connection
Dim rst  As ADODB.Recordset
Dim vDat As Variant

Set CN = CreateObject("ADODB.Connection")
CN.ConnectionString = "Driver={Oracle in OraClient11g_home1};Dbq=DBNAME;Uid=User;Pwd=Pass;"

CN.Open

sqlStr1 = "select * from mytable where id < 20 "

Set rst = CN.Execute(sqlStr1)
vDat = rst.GetRows

CN.Close

vDat(1, 4) = "12345"


Set ActiveSheet.PivotTables(1).PivotCache.Recordset = vDat 'Тут я застрял
ActiveSheet.PivotTables(1).PivotCache.Refresh

End Sub
Как объединить результаты двух sql запросов к разным БД?
 
U_M0KRH, Результат 1 запроса является условием ко 2-му запросу. Если я правильно понимаю, то первый запрос мне нужно поместить в recodset, а затем обработать в цикле этот recodset и создать запрос2
Изменено: idShura - 20 Мар 2017 13:21:30
Как объединить результаты двух sql запросов к разным БД?
 
Есть две базы данных, нужно выполнить запрос1 к БД1, затем полученные данные подставить в запрос2 к БД2 и результат запроса вывести в сводную таблицу. Нужно это все реализовать средствами VBA в Excel.

Заполнять данными сводную таблицу я научился, а вот с остальным нужна помощь.
Сводная таблица OLEDB, Заполнение сводной таблицы данными из sql server compact
 
Андрей VG Спасибо, ваш пост очень мне помог сдвинуться с мертвой точки. Правда достичь поставленной цели все еще не получается.

Цитата
А зачем так делать в данном случае?
Я неправильно выразил свою мысль в первом посте. Мне нужно просто нужно заполнить данными существующую сводную таблицу.
Сводная таблица 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
Страницы: 1
Наверх