Проблема Pivotcache с использованием набора записей ado в excel - PullRequest
1 голос
/ 05 мая 2010

У меня проблема с ошибкой во время выполнения 1004 в последней строке. Я ввожу запрос доступа в Excel 2007. Я знаю, что набор записей в порядке, так как я вижу поля и данные. Я не уверен, что picotcache был создан в строке set ptCache. Я вижу приложение, но индекс равен 0. Код ниже ...

Private Sub cmdPivotTables_Click()

    Dim rs As ADODB.Recordset
    Dim i As Integer
    Dim appExcel As Excel.Application
    Dim wkbTo As Excel.Workbook
    Dim wksTo As Excel.Worksheet
    Dim str As String
    Dim strSQL As String
    Dim rng As Excel.Range
    Dim rs As DAO.Recordset
    Dim db As DAO.Database
    Dim ptCache As Excel.PivotCache

    Set db = CurrentDb()

    'to handle case where excel is not open
    On Error GoTo errhandler:
    Set appExcel = GetObject(, "Excel.Application")
    'returns to default excel error handling
    On Error GoTo 0
    appExcel.Visible = True
    str = FilePathReports & "Reports SCU\SCCUExcelReports.xlsx"
    'tests if the workbook is open (using workbookopen functiion)
    If WorkbookIsOpen("SCCUExcelReports.xlsx", appExcel) Then
        Set wkbTo = appExcel.Workbooks("SCCUExcelReports.xlsx")
        wkbTo.Save
        'To ensure correct Ratios&Charts is used
        wkbTo.Close
    End If
    Set wkbTo = GetObject(str)
    wkbTo.Application.Visible = True
    wkbTo.Parent.Windows("SCCUExcelReports.xlsx").Visible = True

    Set rs = New ADODB.Recordset
    strSQL = "SELECT viewBalanceSheetType.AccountTypeCode AS Type, viewBalanceSheetType.AccountGroupName AS AccountGroup, " _
                & "viewBalanceSheetType.AccountSubGroupName As SubGroup, qryAmountIncludingAdjustment.BranchCode AS Branch, " _
                & "viewBalanceSheetType.AccountNumber, viewBalanceSheetType.AccountName, " _
                & "qryAmountIncludingAdjustment.Amount, qryAmountIncludingAdjustment.MonthEndDate " _
            & "FROM viewBalanceSheetType INNER JOIN qryAmountIncludingAdjustment ON " _
                & "viewBalanceSheetType.AccountID = qryAmountIncludingAdjustment.AccountID " _
            & "WHERE (qryAmountIncludingAdjustment.MonthEndDate = GetCurrent()) " _
            & "ORDER BY viewBalanceSheetType.AccountTypeSortOrder, viewBalanceSheetType.AccountGroupSortOrder, " _
                & "viewBalanceSheetType.AccountNumber;"
    rs.Open strSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic

'    Set rs = db.OpenRecordset("qryExcelReportsTrialBalancePT", dbOpenForwardOnly)

**'**********problem here
    Set ptCache = wkbTo.PivotCaches.Create(SourceType:=XlPivotTableSourceType.xlExternal)
    Set wkbTo.PivotCaches("ptCache").Recordset = rs**

Ответы [ 2 ]

0 голосов
/ 13 марта 2012

Я знаю, что это старый, но просто мысль. Я заметил, что вы объявили две rs переменные (одна с использованием ADODB и одна с использованием DAO) в одной подпрограмме. Честно говоря, я удивлен, что компилятор не уловил это за вас, но я бы предложил попробовать один или другой, но не оба (и поскольку вы инициализируете rs как ADODB.RecordSet, вам, вероятно, следует прокомментировать out rs = DAO.RecordSet).

0 голосов
/ 05 мая 2010

Ваш Pivot Cache не называется "ptCache", это, вероятно, "PivotCache1" или что-то в этом роде. Любой из них сработает, предпочтение будет отдано первому.

Set ptCache.Recordset = rs

Set wkbTo.PivotCaches(1).Recordset = rs
...