Newsgroup: it.comp.lang.visual-basic
Titolo: URGENTE!!! EXCEL-AS/400 PROBLEMI DI MEMORIA??

CIAO A TUTTI!!!
Io ho fatto un programma che trasferisci i dati di un foglio excel su un
AS/400... ed ho un grosso problema:
Credo che Excel mi mangi tutte le risorse del sistema!!!!
Difatti quando mi trovo a leggere intorno alla riga 640...680 del foglio
excel, il mio programma si blocca e windows mi chiede quale applicazione
voglio continuare a far eseguire!!
CHe posso fare, oltre a frazionare la lettura del file excel ed aggiungere
quindi un bel pň di codice???
grazie.
andrea

quindi un bel pò di codice???
La prima soluzione che mi viene in mente e' che potresti spezzare il
file di excel in piu' files con meno righe. Cosi', in un tempo da
ridere, risolvi il problema almeno temporaneamente.
Cosa piu' efficace sarebbe, invece, cercare di capire dove hai il
problema e dove allochi tante risorse da non riuscire a proseguire.
Hai gia' fatto il debug del tuo programma, magari con il monitor di
risorse aperto per vedere se e quanto hai un picco di allocazione?
Saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro Romagnolo®, diffidate dalle imitazioni!
 Opel/ECC Calibrezio EVO-VI --- Kawasaki "Gas Gas" ZZ-R 1100
 ICQ# 36893168 - IRCNet: bugbarbeq, @ on #linux-it & #NetBSD
   On contrary of popular belief, Unix *IS* user friendly:
    it just appears to be selective who it is friend with

 ha scritto nel messaggio
news:jm2spt4pgi2jjhsok...@4ax.com...


Sia sul mio pc che sul mio laptop accade la stessa cosa...
Domanda: se chiudi il tuo programma, le risorse di sistema tornano
libere? Nel senso: recuperi molte risorse?
Domanda di riserva: si puo' vedere il tuo codice? Mi viene in mente
solo che potresti avere messo dentro un ciclo la creazione di alcuni
oggetti "voluminosi" che, poi, non distruggi oppure che il driver di
accesso all'AS/400 funzioni davvero male --molto piu' difficile--.
Saluti.
P.S.: per favore, cerca di quotare meglio.


   VBR - Vero Birro RomagnoloŽ, diffidate dalle imitazioni!


???
Significa che dovresti tagliare la parte del mio messaggio che non
serve.
Tu mi hai risposto ed hai lasciato tutto il mio messaggio attaccato
sotto: dovresti cancellare, del mio messaggio, tutto quello che non e'
necessario a capire il tuo.
Inoltre, dovresti scrivere *sotto* il mio testo e non sopra.
Saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro Romagnolo®, diffidate dalle imitazioni!


Hai ragione!
Non conoscevo queste regole dei ng!
Anyway, my code:
alla riga 643 il mio pc collassa! A questo punto credo che abbandonerò la
libreria di Excel e userò ADO o DAO---
 Dim e As Double
Dim numerorighe As Integer
e = FoglioExcel.UsedRange.Rows.Count 'numero di righe usate nel documento
r = e - 2
numerorighe = r
e = FoglioExcel.UsedRange.Columns.Count
    Text6 = r
    Text5 = e
    stringa2 = ""
    Frame1.Visible = True
    Stop
    MsgBox ("Controlla le seguenti informazioni e conferma.")
    'POS INIZIALE TROVATA
    Dim colonne, primacolonna, POSINIZiALE, LUNGHEZZA, TEMP1, TEMP2 As
Integer
    Dim TIPO, STR1, STR2, STR3, CAMPO As String
    contenutocella = "0"
    'APRO FDF E LEGGO PRIMO CAMPO
        r = InStr(1, posiniz, ",")
        r = Left(posiniz, r - 1)
        r = Val(r) + 2 'PRIMA RIGA    + 2 perchè sulla seconda c'è la
definizione
          C = InStr(1, posiniz, ",")
            C = Right(posiniz, Len(posiniz) - C)
            C = Val(C)
            primacolonna = C 'PRIMA COLONNA
    Open App.Path & "\" & Text1 For Output As #11
Do While r < numerorighe
    Label8.Caption = "               Attendere prego...
Scansione riga " & r & " di " & numerorighe
    DoEvents
    If r = 643 Then
    Stop
    End If
    C = primacolonna
    Open App.Path & "\ORDINI.FDF" For Input As #10
    DoEvents
    Do While Not EOF(10)
    Line Input #10, letta
        POSINIZiALE = Val(Mid(letta, 45, 4))
        LUNGHEZZA = Val(Mid(letta, 50, 4))
        TIPO = Trim(Right(letta, 2))
        CAMPO = "CAMPO" & Trim(Left(letta, 4))
        Set CellaFoglioExcel = FoglioExcel.Cells(r, C)
        contenutocella = CellaFoglioExcel
        If TIPO = "N" And contenutocella = "" Then contenutocella = "0"
        If Len(contenutocella) < LUNGHEZZA Then
           STR1 = STR1 & contenutocella & Space(LUNGHEZZA -
Len(contenutocella))
        Else
            STR1 = STR1 & contenutocella
        End If
        Debug.Print STR1
        Debug.Print letta
        C = C + 1
    Loop 'Loop sul file fdf
    Print #11, STR1
    DoEvents
    Debug.Print STR1
    Close #10
    DoEvents
STR1 = ""
r = r + 1
Loop 'loop su r < 889
Close #11

     Loop 'Loop sul file fdf
molto a spanne, ma direi che è l'unico oggetto inizializzato e non chiuso...
ciao
ugo

 ha scritto nel messaggio
news:9nqf4u$co3$1...@lacerta.tiscalinet.it...


libreria di Excel e userò ADO o DAO---
Dunque, non ho ancora controllato il tuo codice, comunque, in ogni
caso, usare ado e' sempre consigliabile --rispetto a fare qualcosa che
passa attraverso excel-- se hai i dati disponibili per un programma
VB.
Appena riesco, guardo il tuo codice e se trovo qualcosa te lo dico.
