2014-08-29 5 views
0

Я могу успешно создать сводную таблицу в Excel VBA 2010 со следующим кодом, где данные поступают из базы данных доступа MS,Обновление сводной таблицы, созданной в Excel VBA (ADODB Connection)

Dim con As New ADODB.Connection

Dim rs As New ADODB.Recordset

con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=H:\SQL.accdb"

rs.Open "SELECT * FROM Table1", con, adOpenStatic, adLockReadOnly

Set piv = ActiveWorkbook.PivotCaches.Create(xlExternal)

Set piv.Recordset = rs

piv.CreatePivotTable TableDestination:=Range("A1"), TableName:="P2"

con.Close

Set rs = Nothing

Set con = Nothing

Но я, когда я изменить SQL код, то записей поворота не может быть обновлена. Фактически сводную таблицу нужно удалить и создать. Есть ли способ создать сводную таблицу таким образом и обновить данные без удаления сводной таблицы.

ответ

1

Вышеупомянутый ответ был не совсем тем, что я искал, так как разные пользователи запрашивали бы из базы данных и будут также использовать параметры, что может вызвать проблемы, когда несколько пользователей запрашивают одновременно. Но я нашел способ обойти мою проблему.

Код, который я поставил выше в своем вопросе, я могу использовать, чтобы изначально создать свой стержень и потянуть все данные.Я затем создать отдельную подпрограмму, которая может обновить сводную таблицу, которая выглядит следующим образом,

Dim con As New ADODB.Connection

Dim rs As New ADODB.Recordset

con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=H:\SQL.accdb"

rs.Open "SELECT * FROM Table1", con, adOpenStatic, adLockReadOnly

With Sheets(1).PivotTables("P2").PivotCache

Set .Recordset = rs 
    .Refresh 

End With

Set rs = Nothing

con.Close

Set con = Nothing

0

Быстрое исправление, в зависимости от того, как вы обычно обновляете код SQL, выглядит следующим образом.

  • В ДОСТУПЕ создайте запрос, используя режим SQL в SELECT * FROM Table1 и сохранить его как Query1

  • В EXCEL, изменять свой код SELECT * FROM Query1

Таким образом, Excel будет обрабатывать Query1 как Таблица для всех практических целей, и вы можете сделать Query1 в Access настолько сложным, насколько хотелось бы, Excel все равно потянет все содержимое, сохранив код повторно.

Смежные вопросы