Salve a tutti ragazzi,
ho scoperto per caso questo forum cercando in rete una soluzione relativa al mio problema, e già leggendo qualche vecchio post ho avuto delle idee, ma non sono riuscito comunque a risolvere, per questo mi sono deciso a scrivere.
Ho un problema che forse considererete banale, e che in parte è già stato risolto da conversazioni precedenti, ossia, l'esportazione dei dati di una query su un file excel. Utilizzo il costrutto OPENROWSET che in alcuni casi ho visto funzionare, ma nel mio caso ottengo uno strano problema.
Prima di descriverlo, vi do alcune informazioni sulla struttura che ho sotto, e cosa voglio fare: Utilizzo un SQLServer 2005 e Office 2000 (o anche 2003, nel senso che dal cliente su cui questa applicazione dovrà girare hanno 2003 mentre nello sviluppo ho Office 2000) e Visual Basic 6.0 per l'applicazione.
Di certo la prima cosa che vi verrà da chiedere è perché non uso direttamente VisualBasic per scrivere il file Excel; il motivo è semplice: utilizzare il componente di Excel all'interno di visual basic e spostarci dentro qualcosa come 100.000 record (più o meno la mole di dati è quella) crea un enorme collo di bottiglia, tale per cui, l'utente per almeno 10 minuti non può toccare in nessun modo l'applicazione.
Ho notato che utilizzando OPENROWSET la situazione migliora (SQLServer è evidentemente più abituato a trattare grandi moli di dati) e quindi, vorrei lanciare questo comando da Visual Basic, e far trasferire ad SQL i dati su Excel.
A questo punto, mi credo dentro il file Excel di destinazione lo schema delle tabelle che dovrò trasferire, e lancio questo comado:
INSERT
INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\TestProva.xls;','SELECT DataOra,Valore FROM [Riferimento$]') SELECT DATARIC As DataOra,Valore From R1TEMPRIF
Ok. Il comando viene eseguito correttamente (se lo lancio da SQL Server mi dice pure il numero di righe interessate, circa sulle 6000) ma.... quando chiudo VisualBasic e cerco di aprire il foglio excel che ho creato... ERRORE! Mi compare la finestrella del Debugger JIT di VisualStudio che mi evidenzia un'eccezione non gestita! Ci sono problemi di compatibilità fra le varie versioni di SQL e di Office? Quali sarebbero le "accoppiate" migliori?
Se non dipende da questo, A cosa può essere dovuto questo errore? Ah, naturalmente, il foglio Riferimento dentro Excel esiste ed ha, nella prima righa, due colonne: DataOra e Valore.
Ho esaurito le idee. Spero che possiate darmi qualche consiglio utile, altrimenti dovrò tornare alla soluzione che passa per VB creando ritardi mostruosi.
Grazie a tutti per l'attenzione. Rimango in attesa di qualche idea.
Michele