Run time error "3078"

di il
5 risposte

Run time error "3078"

Salve a tutti. Ho associato ad un campo di una maschera (evento "Dopo aggiornamento"), il codice seguente che dovrebbe servire a verificare che quanto inserito sia presente nella tabella di riferimento:

Private Sub denominazione_AfterUpdate()
Dim rs As DAO.Recordset
'Apertura Recordset in sola lettura
Set Tabella = DBEngine(0)(0).OpenRecordset("SELECT COUNT(*) FROM tipo_record WHERE Denominazione = '" & Me.denominazione & "' ", dbOpenDynaset, dbReadOnly)
If rs.Fields(0).Value = 0 Then
MsgBox "Codice non presente"
Else
MsgBox "Codice Presente"
End If
rs.Close
Set rs = Nothing
End Sub


In fase di esecuzione, becco :

Errore di run time 3078: impossibile trovare la tabella o query di input "tipo_record". Verificare che esista e che il nome sia stato digitato correttamente

dov'è l'inghippo?
Grazie

5 Risposte

  • Re: Run time error "3078"

    L'errore è anomalo... ma mi chiedo che senso abbia cercare quello che cerchi... non sarà mai vera la condizione=0 visto che come minimo 1, quello appena inserito ci deve essere...
  • Re: Run time error "3078"

    omancino ha scritto:


    ...
    Private Sub denominazione_AfterUpdate()
    Dim rs As DAO.Recordset
    'Apertura Recordset in sola lettura
     Set Tabella = DBEngine(0)(0).OpenRecordset("SELECT COUNT(*) FROM tipo_record WHERE Denominazione = '" & Me.denominazione & "' ", dbOpenDynaset, dbReadOnly)
    If rs.Fields(0).Value = 0 Then
    ...
     End Sub
    In fase di esecuzione, becco :

    Errore di run time 3078: impossibile trovare la tabella o query di input "tipo_record". Verificare che esista e che il nome sia stato digitato correttamente
    Oltre all'osservazione nel merito di @Alex, da un punto di vista strettamente formale (del codice, intendo) evidenzio che la variabile oggetto è rs però poi, al momento dell'assegnazione, usi Tabella e in tutto il resto riprendi ad usare rs. Correggi in
    ...
    'Apertura Recordset in sola lettura
     Set rs = DBEngine(0)(0).OpenRecordset("SELECT COUNT(*) FROM tipo_record WHERE Denominazione = '" & Me.denominazione & "' ", dbOpenDynaset, dbReadOnly)
    ...
    Hai impostato la dichiarazione obbligatoria delle variabili con Option Explicit all'inizio del modulo di classe della maschera? Questo ti avrebbe evidenziato immediatamente "la svista".
    Non so se risolve il tuo errore, però almeno il codice (sulla carta) è corretto.
  • Re: Run time error "3078"

    Problema risolto.
    Per sicurezza ho anche cambiato il nome della tabella (è un db di prova, senza vincoli particolari) perché ho letto di problemi con nomenclatura troppo simile a parole chiavi.
    @Alex: la condizione=0 può verificarsi in quanto posso digitare nel campo una Denominazione non presente in tabella. La maschera non mi serve ad inserire record, ma a controllarne l'esistenza nel db.
    Grazie ad entrambi.
  • Re: Run time error "3078"

    Quindi la maschera non è associata, ma usi il Controllo TextBox [Denominazione] solo per controllare...?
  • Re: Run time error "3078"

    Si. Devo verificare che quanto digitato nel campo denominazione sia presente o meno in tabella e generare a video il messaggio relativo.
Devi accedere o registrarti per scrivere nel forum
5 risposte