Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VBA] Errore: Nessun record corrente

    Salve a tutti,
    sto realizzando una procedura in vba in access che carica dei record in una tabella leggendoli da un txt.
    Metto due righe di codice tanto per capire:
    codice:
    On Error Resume Next
    ' mi preparo la stringa sql appropriata
    
    CurrentDb.Execute (sSQL)
    
    If Err.Number <> 0 Then
    MsgBox "Errore: " & Err.Description
    End If
    Su alcuni record (all'apparenza identici agli altri) mi esce l'errore "Nessun record corrente.", mi sembra che il numero sia 3021.
    La cosa strana è che se vado a controllare sulla tabella quei record ci sono.

    Qualcuno mi sa dire da cosa è causato tale errore e come potrei fare ad evitarlo?

    Grazie
    Horus

  2. #2
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    Ciao, penso proprio che hai trascurato la parte più importante... scrivi l'sql che lanci, sicuramente il problema, se non si tratta di un baco di VBA (io programma con vb6..) è nell'sql, analizzandola forse potrei indicarti dove il programmino è a "rischio d'errore".
    Ciao
    Andrea

  3. #3
    Ok, ti metto una riga funzionante ed una non funzionante:
    codice:
    Funziona:
    INSERT INTO ORDINI VALUES ('GR01', 'ORDN000001 ', '09AB024574     ', #26/03/02#, 'PRODOTTO DI TIPO 1                  ', ' 1 ', '30/10/02', 130.98,   1, 9)
    
    NON funziona:
    INSERT INTO ORDINI VALUES ('GR02', 'ORDN000002 ', '06K0B16945    ', #26/03/02#, 'PRODOTTO DI TIPO 2                ', ' 1 ', '30/10/02', 117.42,   1, 6)
    Cioè, a dire il vero non è che non funziona (inserisce il record) ma Err.Description viene valorizzato a "Nessu record corrente".
    Horus

  4. #4
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    mmmm.. sai che a pensarci non mi piace tanto come gestisci l'errore?
    Non mi sembra pulito:
    Perchè non fai così?

    On Error goto GestioneErrori
    ' mi preparo la stringa sql appropriata

    CurrentDb.Execute (sSQL)

    exit sub
    GestioneErrori:
    MsgBox "Errore: " & Err.Number & " " & Err.Description
    End If

    Il motivo è che non vorrei che nella struttura Err rimanga dello sporco.. non mi fiderei!
    Come ti ho scritto io sei sicuro che visualizzi l'errore solo a seguito di un eccezione del codice.. Prova!

    Spero di non avert detto una cazz.. nel senso, io programmo vb6, non vba. Cerco di aiutarti ma so che in vba non ci sono tutti i comandi..
    Ciao
    Ciao
    Andrea

  5. #5
    Non ho fatto come dici tu perché io non voglio uscire dalla procedura, ho 9.000 record da caricare, voglio essere sicuro di aver caricato tutti quelli senza errore e avere un log di quelli con l'errore. Comunque ho capito cosa intendi e in fase di debug proverò sicuramente il tuo metodo. Ti farò sapere.
    Horus

  6. #6
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387

    Re: [VBA] Errore: Nessun record corrente

    Sei sicuro che sia veramente una segnalazione di errore?
    Con il codice che hai postato, non e' detto che vada veramente a finire in errore, probabilmente ti segnala un errore precedente.

    Con OnError resume next, non sei sicuro che quella riga di cod. sia andata in errore.(anche perche' le 2 SQL sono praticamente uguali)
    ...and I miss you...like the deserts miss the rain...

  7. #7
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387
    Originariamente inviato da Horus
    Non ho fatto come dici tu perché io non voglio uscire dalla procedura, ho 9.000 record da caricare, voglio essere sicuro di aver caricato tutti quelli senza errore e avere un log di quelli con l'errore. Comunque ho capito cosa intendi e in fase di debug proverò sicuramente il tuo metodo. Ti farò sapere.

    codice:
    On Error Goto Errori
    
    ' mi preparo la stringa sql appropriata
    
    CurrentDb.Execute (sSQL)
    
    
    exit sub
    Errori:
    If Err.Number <> 0 Then
    MsgBox "Errore: " & Err.Description
    resume next
    End If
    ...e' praticamente uguale al tuo codice, solo che l'errore viene gestito solo se si presenta.
    ...and I miss you...like the deserts miss the rain...

  8. #8
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    Scusa vonkranz.. ma non è la stessa cosa che gli ho già postato?!

    Rispondendoti brevemente.. direi una cosa, hai ragione, se nel tuo programma hai parecchie procedura da svolgere in fila..
    Però, a mio giudizio, se incappi in un errore la procedura va bloccata!
    Al limite proponi un Riprova..
    Poi secondo me, se hai tante query da fare tutte proaticamente uguali, mettile in una funzione e richiamala a loop, così facendo gestisci l'errore nella funzione e questo ti permette di segnalarlo ma se vuoi puoi riprendere poi il loop dell'sql successiva..

    Pensaci!
    Comunque.. capisco che non conoscendo l'applicazione.. più di tanto non posso consigliarti.
    Ciao
    Ciao
    Andrea

  9. #9
    Bella, mi piace l'idea della funzione... penso che mi muoverò in quella direzione.

    L'applicazione è semplicemente una maschera che permette di selezionare un file txt di origine (che deve essere formattato in un certo modo); una volta selezionato la procedura si occupa di leggere le righe, trasformarle in sql e caricarle sul db.
    Horus

  10. #10
    Ho provato la funzione e va benissimo. Grazie a tutti dell'aiuto.

    P.S. x Gugu: la procedura la blocco solo su errori fatali, siccome sono un sacco di record preferisco segnalare all'operatore che alla riga n manca un campo fondamentale, a questo punto lui si apre a manina la tabella e lo aggiunge. Sicuramente farà più in fretta che ricaricare gli n mila record per ogni errore trovato nel file txt (la cui creazione automatica non è nelle mie mani).
    Horus

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.