Aggiornare una tabella pivot di Microsoft Excel #4

Dopo la soluzione dell’errore che si verificava nell’utilizzo della stored procedure USP_DMO_Excel_Pivot_RefreshTable già durante l’apertura del file Excel (post Aggiornare una tabella pivot di Microsoft Excel #3), alcuni di voi hanno segnato un’altra anomalia che si riscontra utilizzando la stored procedure (per aggiornare i dati esposti su una tabella pivot di un foglio MS Excel), in questo ambiente:

  • SO Windows 7 Professional x64 o Windows 2008 Server x64
  • SQL Server 2008 x64
  • Microsoft Excel 2007 SP2 (32 bit)
    • Tabella pivot su foglio di lavoro MS Execl connessa al DB SQL Server con ODBC 23 bit

L’esecuzione della stored procedure con il seguente frammento di codice T-SQL:

exec USP_DMO_Excel_Pivot_RefreshTable
  @FileName = 'c:\Temp\CmdTest.xlsx',
  @WorksheetIndex = 1,
  @PivotTableName = '',
  @Password = '',
  @WriteResPassword = '',
  @Debug = 1;

...produce l’errore riportato di seguito:

-2146827284 Microsoft Office Excel

Impossibile trovare la proprietà PivotTables per la classe Worksheet.

C:\Program Files (x86)\Microsoft Office\Office12\1040\XLMAIN11.CHM 0

Messaggio 50000, livello 16, stato 1, server PRODUZIONE, procedura USP_DMO_Excel_Pivot_RefreshTable, riga 369
Error whilst: Restituzione dell'oggetto WorkBooks , Impossibile trovare la proprietà PivotTables per la classe Worksheet.

 

Soluzione

Dopo aver installato l'aggiornamento Office 2007 Data Connectivity Components [link] ho ricreato la tabella pivot su cui desidero venga eseguito il refresh dei dati... selezionando però, come origine dati, il tipo Microsoft Office Data Connection e non un ODBC a 32 bit.

Dopo aver creato l'origine dati e selezionato la tabella sorgente del database SQL Server:

  • Nelle proprietà della connessione (scheda Utilizzo) ho tolto la spunta sull'opzione "Abilita aggiornamento in background".
  • Nelle proprietà della connessione (scheda Definizione) ho indicato di salvare la password nella stringa di connessione, che risulta costruita in questo modo:

Provider=SQLOLEDB.1;Password=<Pwd>;Persist Security Info=True;User ID=sa;Initial Catalog=<DataBase_Name>;Data Source=<Server_Name>;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=<Workstation_ID>;Use Encryption for Data=False;Tag with column collation when possible=False

Dopo aver modificato il tipo di connessione, l’esecuzione della stored procedure viene completata senza errori:

exec USP_DMO_Excel_Pivot_RefreshTable
  @FileName = 'c:\Temp\CmdTest.xlsx',
  @WorksheetIndex = 1,
  @PivotTableName = '',
  @Password = '',
  @WriteResPassword = '',
  @Debug = 1;

...con l’output:

Apertura della cartella di lavoro c:\Temp\CmdTest.xlsx avvenuta correttamente

Selezione WorkSheet 1 avvenuta correttamente
Attivazione WorkSheet 1 avvenuta correttamente
@PivotTablesCount = 1 su WorkSheet 1

Aggiornamento PivotTables = "Tabella_pivot1"

Column1   
-----------
          1
Column1   
-----------
          1

Aggiornamento PivotTables(1) avvenuto correttamente
@QueryTablesCount = 0 su WorkSheet 1

Salvataggio Workbook avvenuto correttamente
Uscita da Excel avvenuta correttamente

 

Il thread completo è disponibile a questo link: http://community.ugiss.org/forums/t/2787.aspx

Comments

No Comments