Access
 sql >> Database >  >> RDS >> Access

Accedi alla ricerca del messaggio del numero di errore

Hai mai avuto un numero di errore di Access, ma non il messaggio di errore che spiega di cosa si tratta?

Il AccessError() La funzione è un modo rapido per ottenere il messaggio di errore associato a un numero di errore di Access:

Il carattere segnaposto pipe

Il carattere pipe (| ) è una barra verticale (disponibile tramite [Shift] + [\] {backslash} su una tastiera inglese).

La funzione AccessError utilizza questo carattere come segnaposto per il testo specifico dell'istanza in un messaggio di errore.

Ad esempio, l'errore di accesso 3211 è "... impossibile bloccare la tabella '|' ..."  Il carattere pipe nel messaggio generico viene sostituito con la stringa effettiva utilizzata nella riga di codice che ha generato il messaggio di errore:

Documentazione ufficiale

La funzione AccessError è in realtà un metodo dell'oggetto Access.Application. Ecco una descrizione di ciò che fa dalla documentazione ufficiale:

Puoi utilizzare AccessError metodo per restituire la stringa descrittiva associata a un errore di Microsoft Access o Data Access Objects (DAO).

Vale la pena notare che questo è un Microsoft Specifico per l'accesso funzione. In altre parole, non saresti in grado di chiamarlo da un'altra applicazione di Office, come Excel o Word.*

(* Questo non è tecnicamente vero.  Puoi creare un oggetto Access Application tramite COM in qualsiasi ambiente VBA e quindi essere in grado di chiamare il metodo AccessError da quell'oggetto.  Ovviamente, sarebbe utile solo se volessi controllare Stringhe di messaggi di errore specifiche per l'accesso in quell'altra applicazione di Office, il che sembra improbabile.)

Casi d'uso

Onestamente, non ricordo di aver mai usato questo metodo all'interno del codice della mia applicazione.

Questa è una funzionalità che utilizzo quasi esclusivamente dalla Finestra Immediata quando voglio solo un modo rapido per determinare cosa rappresenta un numero di errore di Access.

Questo sarebbe molto utile se ti imbattessi in un gestore di errori che aveva un Select Case Err.Number blocco e tutti i singoli Case le affermazioni utilizzavano numeri senza commenti di accompagnamento, come questo:

    Select Case Err.Number
    Case 2452   
        'Do something
    Case 2455   
        'Do a different thing
    Case 2467   
        'Do something else
    End Select

Armato del metodo AccessError, potresti migliorare questo codice aggiungendo un commento con una breve descrizione di ciascun numero di errore:

    Select Case Err.Number
    Case 2452   'invalid reference to the Parent property
        'Do something
    Case 2455   'invalid reference to the property
        'Do a different thing
    Case 2467   'expr refers to object that is closed or doesn't exist
        'Do something else
    End Select

Considerazioni sull'integrazione del database dei bug

Se stai utilizzando un database di bug, come FogBugz, che offre una funzione per raggruppare gli errori in base alla loro descrizione, potresti voler utilizzare il generico messaggio di errore nell'oggetto della segnalazione di bug (o in qualsiasi campo fa il raggruppamento) e acquisire lo specifico messaggio di errore nel campo dei dettagli dell'evento bug.

Discuto questo problema nel contesto della mia funzione di generazione di errori personalizzata qui:Generazione di errori in VBA:problemi di integrazione del database di bug.

Articoli referenziati

Errori di lancio in VBAIntroduzione di un'alternativa senza attrito a Err.Raise. Non è più impostatoMike Wolfe