Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    59

    [VB6] errore di runtime 3021...

    cari amici, mi trovo sempre qui con un errore che ha dell'incredibile, MA CAPITANO TUTTE A ME?
    vado ad esporvi il fattaccio dopo aver già letto le altre discussioni:

    nel atto di fare questa semplice operazione

    classeb = Trim(Left(rs.Fields("clat_alu0"), 1))

    mi viene restituito l'errore :

    ************************************************** *********
    errore di runtime '3021'

    il record corrente corrisponde o all'inizio o alla fine del file,oppure è stato eliminato, per eseguire l'operazione richiesta è necessario disporre di un record corrrente
    ************************************************** *********

    purtroppo anche qui il recor è popolato sono in crisi gente che ado sia impazzito?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Prima di eseguire questa operazione scrivi Debug.Print Rs.Recordcount, nella finestra immediata ti visualizzerà il numero dei record presenti in Rs.
    Per dati una risposta più precisa dovresti postare un po' più di codice.
    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    59
    ecco la parte del codice incriminata, fammi pure qualsiasi domanda, e se vuoi darmi qualche consiglio su cui migliorare sei bene accetto



    For I = 1 To rs.RecordCount

    If Trim(Left(rs.Fields("cdsuc_alu0"), 4)) <> "FIAA" And Trim(Left(rs.Fields("cdsuc_alu0"), 4)) <> "FI1A" Then
    Else
    cont_maternestra = cont_maternestra + 1
    End If


    classeb = Trim(Left(rs.Fields("clat_alu0"), 1))

    If IsNull(Trim(Left(rs.Fields("citd_alu0"), 3))) Then
    cont_emptycitt = cont_emptycitt + 1
    'cittadinanze vuote
    End If

    Me.txt_cittàvuote.Text = cont_emptycitt

    If tmp_cdalu = rs.Fields("cdsuc_alu0") Then
    sw2 = False


    If Left(rs.Fields("citd_alu0"), 3) <> "ITA" And Left(rs.Fields("citd_alu0"), 3) <> "ita" And Left(rs.Fields("citd_alu0"), 3) <> "Ita" And Left(rs.Fields("citd_alu0"), 3) <> "" Then
    vett_cdsuc_alu0(x) = rs.Fields("cdsuc_alu0")

    ' On Error Resume Next
    vett_naz(x) = UCase(CStr(Left(rs.Fields("citd_alu0"), 3) & ""))

    x = x + 1

    tmp = conta_sessi1(cont_femmine1, cont_maschi1)
    tmp = conta_sessi2(cont_femmine2, cont_maschi2)
    tmp = conta_sessi3(cont_femmine3, cont_maschi3)
    tmp = conta_sessi4(cont_femmine4, cont_maschi4)
    tmp = conta_sessi5(cont_femmine5, cont_maschi5)

    m = m + 1
    f = f + 1

    Else
    rs.MoveNext
    End If

    Else
    sw2 = True
    If Left(rs.Fields("citd_alu0"), 3) <> "ITA" And Left(rs.Fields("citd_alu0"), 3) <> "ita" And Left(rs.Fields("citd_alu0"), 3) <> "Ita" And Left(rs.Fields("citd_alu0"), 3) <> "" Then

    vett_cdsuc_alu0(x) = Trim(rs.Fields("cdsuc_alu0"))


    ' temp_var = Left(rs.Fields("citd_alu0"), 3)

    ' On Error Resume Next
    vett_naz(x) = UCase(CStr(Left(rs.Fields("citd_alu0"), 3) & ""))

    x = x + 1

    cont_femmine1 = 0
    cont_maschi1 = 0
    cont_femmine2 = 0
    cont_maschi2 = 0
    cont_femmine3 = 0
    cont_maschi3 = 0
    cont_femmine4 = 0
    cont_maschi4 = 0
    cont_femmine5 = 0
    cont_maschi5 = 0

    tmp = conta_sessi1(cont_femmine1, cont_maschi1)
    tmp = conta_sessi2(cont_femmine2, cont_maschi2)
    tmp = conta_sessi3(cont_femmine3, cont_maschi3)
    tmp = conta_sessi4(cont_femmine4, cont_maschi4)
    tmp = conta_sessi5(cont_femmine5, cont_maschi5)

    m = m + 1
    f = f + 1

    ' For a = 1 To 10000
    ' vett_naztemp(a) = ""
    ' Next a

    tmp_cdalu = rs.Fields("cdsuc_alu0")
    Else
    End If
    End If


    If rs.Fields("citd_alu0") = cittadinanza Then

    Else

    cittadinanza = UCase(CStr(Left(rs.Fields("citd_alu0"), 3) & ""))
    vett_cdsuc_alu0(x) = Trim(rs.Fields("cdsuc_alu0"))
    vett_naz(x) = UCase(CStr(Left(rs.Fields("citd_alu0"), 3) & ""))
    x = x + 1
    cont_femmine1 = 0
    cont_maschi1 = 0
    cont_femmine2 = 0
    cont_maschi2 = 0
    cont_femmine3 = 0
    cont_maschi3 = 0
    cont_femmine4 = 0
    cont_maschi4 = 0
    cont_femmine5 = 0
    cont_maschi5 = 0
    tmp = conta_sessi1(cont_femmine1, cont_maschi1)
    tmp = conta_sessi2(cont_femmine2, cont_maschi2)
    tmp = conta_sessi3(cont_femmine3, cont_maschi3)
    tmp = conta_sessi4(cont_femmine4, cont_maschi4)
    tmp = conta_sessi5(cont_femmine5, cont_maschi5)

    m = m + 1
    f = f + 1

    End If


    rs.MoveNext


    ProgressBar.Value = I
    DoEvents


    Next I

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Ho fatto delle correzioni al codice, leggi i commenti, perchè molto probabillmente facendo rs.movenext vai a eof e ti dà errore. Se non è chiaro qualcosa chiedi. Ciao

    codice:
    'For i = 1 To rs.RecordCount
    'prima di questo ci deve essere la select con open sul recordset
    Do Until rs.EOF
        If UCase(Left(rs("cdsuc_alu0"), 4)) = "FIAA" Or UCase(Left(rs("cdsuc_alu0"), 4)) = "FI1A" Then
            cont_maternestra = cont_maternestra + 1
        End If
        
        
        classeb = Trim(Left(rs("clat_alu0"), 1))
        
        If IsNull(Trim(Left(rs("citd_alu0"), 3))) Then
            cont_emptycitt = cont_emptycitt + 1
            'cittadinanze vuote
        End If
    
        Me.txt_cittàvuote.Text = cont_emptycitt
    
        If tmp_cdalu = rs("cdsuc_alu0") Then
            sw2 = False
    
    
            If UCase(Left(rs("citd_alu0"), 3)) <> "ITA" And Left(rs("citd_alu0"), 3) <> "" Then
                vett_cdsuc_alu0(X) = rs("cdsuc_alu0")
        
                ' On Error Resume Next
                vett_naz(X) = UCase(CStr(Left(rs("citd_alu0"), 3) & ""))
        
                X = X + 1
        
                tmp = conta_sessi1(cont_femmine1, cont_maschi1)
                tmp = conta_sessi2(cont_femmine2, cont_maschi2)
                tmp = conta_sessi3(cont_femmine3, cont_maschi3)
                tmp = conta_sessi4(cont_femmine4, cont_maschi4)
                tmp = conta_sessi5(cont_femmine5, cont_maschi5)
        
                m = m + 1
                f = f + 1
        
            Else
                'perchè questo ??????????????? ti sposti sul record successivo
                'quello che leggi dopo è un altro record e potrebbe già essere EOF e darti errore (***)
                rs.MoveNext
            End If
    
        Else
            sw2 = True
            If UCase(Left(rs("citd_alu0"), 3)) <> "ITA" And Left(rs("citd_alu0"), 3) <> "" Then
            
                vett_cdsuc_alu0(X) = Trim(rs("cdsuc_alu0"))
            
            
                ' temp_var = Left(rs.Fields("citd_alu0"), 3)
                
                ' On Error Resume Next
                vett_naz(X) = UCase(CStr(Left(rs("citd_alu0"), 3) & ""))
    
                X = X + 1
    
                cont_femmine1 = 0
                cont_maschi1 = 0
                cont_femmine2 = 0
                cont_maschi2 = 0
                cont_femmine3 = 0
                cont_maschi3 = 0
                cont_femmine4 = 0
                cont_maschi4 = 0
                cont_femmine5 = 0
                cont_maschi5 = 0
                
                tmp = conta_sessi1(cont_femmine1, cont_maschi1)
                tmp = conta_sessi2(cont_femmine2, cont_maschi2)
                tmp = conta_sessi3(cont_femmine3, cont_maschi3)
                tmp = conta_sessi4(cont_femmine4, cont_maschi4)
                tmp = conta_sessi5(cont_femmine5, cont_maschi5)
    
                m = m + 1
                f = f + 1
    
                ' For a = 1 To 10000
                ' vett_naztemp(a) = ""
                ' Next a
    
                tmp_cdalu = rs("cdsuc_alu0")
    '        Else
            End If
        End If
    
        'questo è fuori dalle if quindi se sei entrato (***) sei sul record successivo ATTENZIONE
        If rs("citd_alu0") = cittadinanza Then
        
        Else
        
            cittadinanza = UCase(CStr(Left(rs("citd_alu0"), 3) & ""))
            vett_cdsuc_alu0(X) = Trim(rs("cdsuc_alu0"))
            vett_naz(X) = UCase(CStr(Left(rs("citd_alu0"), 3) & ""))
            X = X + 1
            cont_femmine1 = 0
            cont_maschi1 = 0
            cont_femmine2 = 0
            cont_maschi2 = 0
            cont_femmine3 = 0
            cont_maschi3 = 0
            cont_femmine4 = 0
            cont_maschi4 = 0
            cont_femmine5 = 0
            cont_maschi5 = 0
            tmp = conta_sessi1(cont_femmine1, cont_maschi1)
            tmp = conta_sessi2(cont_femmine2, cont_maschi2)
            tmp = conta_sessi3(cont_femmine3, cont_maschi3)
            tmp = conta_sessi4(cont_femmine4, cont_maschi4)
            tmp = conta_sessi5(cont_femmine5, cont_maschi5)
            
            m = m + 1
            f = f + 1
        
        End If
    
    
        rs.MoveNext
    
    
        ProgressBar.Value = i
        DoEvents
    
    
    Loop
    PS: Spero di non aver fatto errori, perchè,logicamente, non ho potuto provarlo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    59
    ciao grande!!!!!! ho fatto una prova veloce e grazie a te mi sono accorto di una cosa, adesso sembra funzionare tutto alla perfezione, il fatto è che mentre copiavo una piccola parte di codice, mi sono dimenticato l'apice di un commento, di conseguenza, quell'rs.movenext da te segnalato è sbagliato, ho tolto quello e adesso sembra funzionare, farò altre prove e ti faccio sapere, comunque sono proprio , se mi consentite il termine un coglione! grazie ancora

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.