Newsgroup: it.comp.lang.visual-basic
Titolo: Salvataggio Dati su Exel

Salve a tutti, ho un ENORME problema : devo esportare dei dati da una mia
applicazione ad un foglio Excel; il problema si presenta quando ho più di
1500 record da salvare, quando il contatore arriva su 1559 si blocca tutto,
meno di quella cifra li salva regolarmente, di più no.
Avete idea di come posso fare ?
Ho anche provato a salvare ad ogni record per poi riaprire il foglio di
lavoro excel subito dopo con il risultato di avere un applicazione
stra-lenta ma che non funziona ugualmente.
Grazie a tutti

 ad ogni record per poi riaprire il foglio di lavoro excel
subito dopo con il risultato di avere un applicazione
stra-lenta ma che non funziona ugualmente.
Perche' non posti la parte di codice che non fa il suo dovere?
Scusa questa scarica di domande ma... sono per il tuo bene;)
--
Ciao.
Maurizio
--------
?SPQR(C)
 X

Ok hai completamente ragione, ma preso dallo sconforto non ho
considerato......
Utilizzo Vb 6 con Sp 3,
I dati sono in un dataBase Sql 7.0, per leggerli utilizzo un recordset dao
3.51, Il sistema operativo č Win98 s.e.  :(((((( La versione di Excel č
Office 97.
Quando la posizione di Rs arriva su 1559 (preciso) si blocca tutto !!!!
Nessun Messaggio di errore, blocco totale, completo ed Irreparabile della
Macchina, non resta che spegnere con il pulsante.
Posto Il codice :
    Dim xlApp As New Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim n As Integer
    Dim cnt As Integer
                Set xlApp = CreateObject("Excel.Application")
                Set xlBook = xlApp.Workbooks.Open(file)  <-- Variabile
contenente il nome del file
                Set xlSheet = xlBook.Worksheets(1)
            Do While Not Rs.EOF <--- RecordSet dove sono contenuti i dati
                DoEvents
                For n = 1 To Rs.Fields.Count
                        xlSheet.Cells(cnt, n).Value = CDbl(Rs.Fields(n - 1))
                        'Setto il formato di valuta per le celle con numeri
                        xlSheet.Cells(cnt, n).Value =
Format(xlSheet.Cells(cnt, n), mioFormato)
                Next
                cnt = cnt + 1
                Rs.MoveNext
            Loop
                xlBook.Save<---- Variabile contenente Il Nome del file
                xlBook.Close
                Set xlSheet = Nothing
                Set xlApp = Nothing
                Set xlBook = Nothing
Considera che ho anche provato(prima del Loop) ad eseguire un xlBook.Save,
ma il risultato non cambia :(((((

 Considera che ho anche provato(prima del Loop) ad eseguire
un xlBook.Save, ma il risultato non cambia :(((((
Credo che il problema sia nelle dichiarazioni e nell'uso
dell'oggetto xlApp.


 solo alla fine?
La parte centrale del codice l'ho sfoltita un pochino.... altrimenti mandavo
un messaggio infinito, all'interno del ciclo controllo il tipo di dati che
leggo poichè non tutti i numeri devono essere convertiti.
Non riesco a capire come mai si pianti tutto, ho guardato nella lista dei
processi attivi e risulta che Exel all'inizio è attivo regolarmente, dopo
alcuni minuti che il blocco è sopravvenuto compare (vicino al task)
Bloccato.
Ancora qualche idea ?
Grazie comunque dell'attenzione

 Grazie comunque dell'attenzione
Auguri.


 1500 record da salvare, quando il contatore arriva su 1559 si blocca
tutto,
Posto che non so come risolvare il problema, avrei perň un paio di soluzioni
alternative:
1) Salva i dati in formato CSV e farli reimportare da Excel (lui non sbaglia
di certo)
2) Usa qualche controllo proprietario che permetta di salvare direttamente
in formato Excel. Me ne vengono in mente due: Lo "Spread" della Far Point e
"Formula 1" (non mi ricordo di chi č).
Ciao
*Roby*

Sono riuscito a trovare una "pseudo soluzione" ma sembra che funzioni : in
preda alla disperazione ho creato un controllo che ogni 50 record salvi il
Workbook, chiuda completamente l'applicazione Excel, setti gli oggetti di
Exell = nothing, per poi ricreare tutto quanto subito dopo.
Lo so è terribile, ma almeno ha superato il fatidico record 1559 e sembra
funzionare discretamente....
Saluti a tutti e grazie della pazienza