TCD сводная таблица доступа ADODB - PullRequest
0 голосов
/ 26 июня 2018

В модуле я объявил постоянные переменные

Public Const ADODB_PROVIDER = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;"
Public Const PATH_DB = "E:\BkUpData\Projets\Access\GarageHellMotors\facturation_be_test.accdb"

В другом модуле эта функция вызывается при событии загрузки рабочей книги

Public Function fWkBookCnxAdd()

Dim objWBConnect As WorkbookConnection

Set objWBConnect = ThisWorkbook.Connections.Add( _
Name:="tcd", Description:="", _
ConnectionString:=ADODB_PROVIDER & _
"Data Source=" & PATH_DB, _
CommandText:="SELECT * FROM qryFactureSumMonthYear", _
lCmdtype:=xlCmdSql)

End Function

См. L введите описание ссылки здесь

На вкладке я добавил commandButton с этим кодом ниже при нажатии даже

Private Sub cmdTcd_Click()

Dim oPivotCache As PivotCache
Dim oPtTable As PivotTable

ActiveSheet.Range("A3").CurrentRegion.Clear 

' Create a PivotTable cache
Set oPivotCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal,  _
SourceData:=ThisWorkbook.Connections(1))

Set oPtTable = oPivotCache.CreatePivotTable( _ 
TableDestination:=Range("A3"), _
TableName:="tcd") 

Но этот код ниже неверен, и я не знаю, где

Установить oPivotCache = ActiveWorkbook.PivotCaches.Add (SourceType: = xlExternal, _ SourceData: = ThisWorkbook.Connections (1))

, поэтому приведенная ниже команда генерирует ошибку времени выполнения «1004»Ошибка приложения или объекта

Set oPtTable = oPivotCache.CreatePivotTable (_ TableDestination: = Range ("A3"), _ TableName: = "tcd") '---> Ошибка 1004... Код

Заранее благодарим за помощь

1 Ответ

0 голосов
/ 26 июня 2018

Я нашел это решение ниже

В модуле

Public Const ADODB_PROVIDER = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;"
Public Const PATH_DB = "E:\Access\test.accdb"

Public Function fWkBookCnxDelAll()
Dim oWkBookCnx As WorkbookConnection

For Each oWkBookCnx In ThisWorkbook.Connections
    oWkBookCnx.Delete
Next oWkBookCnx
End Function

Public Function fWkBookCnxInitAll()    
Dim objWBConnect As WorkbookConnection

Set objWBConnect = ThisWorkbook.Connections.Add( _
Name:="tcd", Description:="", _
ConnectionString:=ADODB_PROVIDER & _
"Data Source=" & PATH_DB, _
CommandText:="SELECT * FROM qryFactureSumMonthYear", _
lCmdtype:=xlCmdSql)
End Function

При событии загрузки Thisworkbook код ниже

Private Sub Workbook_Open()
 fWkBookCnxDelAll
 fWkBookCnxInitAll    
End Sub

При нажатии кнопки командной строки событиялист, код ниже

Private Sub cmdAddTCD_Click()

Dim oCnx As WorkbookConnection
Dim oPc As PivotCache
Dim oPt As PivotTable

ActiveSheet.Range("G7").CurrentRegion.Clear '

' Create a PivotTable cache
Set oCnx = ThisWorkbook.Connections("tcd")
Set oPc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, _
SourceData:=oCnx)

' Create a tcd.
Set oPt = oPc.CreatePivotTable( _
TableDestination:=ActiveSheet.Range("G4"), _
TableName:="tcd")

With oPt
    .SmallGrid = False

    .AddFields _
    RowFields:="idfacture", _
    RowFields:="libelle", _
    ColumnFields:="PeriodemontYear"

    .AddDataField _
    Field:=oPt.PivotFields("montant") _
 End With
End Sub

Создан новый TCD

...