Come risolvere i problemi di riferimento in un database di Access

Numero della Knowledge Base originale: 310803

Riepilogo

In questo articolo vengono descritti i problemi relativi all'utilizzo dei riferimenti in un database di Access.

Per comprendere gli errori di riferimento è necessario comprendere sia il modo in cui viene fatto riferimento alle librerie in un database di Access, sia gli elementi necessari per installare un database in un computer di destinazione senza interrompere tali riferimenti. Questo articolo è un riepilogo i seguenti argomenti:

  • Visualizzazione dei riferimenti ai database di Access
  • Risoluzione dei riferimenti di Microsoft Visual Basic, Applications Edition in Access
  • Informazioni sui messaggi di errore di riferimento
  • Risoluzione dei problemi di riferimento sul computer di sviluppo
  • Distribuzione dei file di database
  • Aggiornamento dell'elenco dei riferimenti
  • Distribuzione di file di database con controlli ActiveX
  • Nuova registrazione di un file

Visualizzazione dei riferimenti ai database di Access

Per visualizzare i riferimenti al database correnti:

  1. Aprire il database.
  2. Premere ALT+F11 per avviare Visual Basic Editor.
  3. Scegliere Riferimenti dal menu Strumenti.

Risoluzione dei riferimenti di Visual Basic in Access

Access carica il file pertinente (ad esempio, una libreria dei tipi, una libreria di oggetti o una libreria di controlli) per ogni riferimento, in base alle informazioni visualizzate nella casella Riferimenti. Se Access non riesce a trovare il file, per individuarlo vengono eseguite le procedure seguenti:

  1. Access controlla se il file a cui si fa riferimento è attualmente caricato nella memoria.
  2. Se il file non viene caricato nella memoria, Access tenta di verificare che la chiave del Registro di sistema RefLibPaths sia presente. Se la chiave è presente, Access cerca un valore denominato con lo stesso nome del riferimento. Se è presente una corrispondenza, Access carica il riferimento dal percorso a cui punta il valore denominato.
  3. In Access viene quindi eseguita la ricerca del file di riferimento nei percorsi seguenti secondo questo ordine:
    1. Nella cartella Applicazione (il percorso del file Msaccess.exe)
    2. Nella cartella corrente visualizzata se si fa clic su Apri dal menu File.
    3. Nella cartella Windows o WinNT in cui sono in esecuzione i file del sistema operativo.
    4. Nella cartella di sistema nella cartella Windows o WinNT.
    5. Nelle cartelle nella variabile d'ambiente PATH accessibili direttamente dal sistema operativo.
  4. Se Access non riesce a trovare il file, si verifica un errore di riferimento.

Informazioni sui messaggi di errore di riferimento

Esistono diversi messaggi di errore relativi a un file mancante o a un file con una versione diversa da quella utilizzata nel database. Nella maggior parte dei casi, è possibile cercare nella Microsoft Knowledge Base un articolo sul messaggio di errore specifico e quindi risolverlo seguendo la procedura descritta. In alcuni casi, un file di dipendenza non corrisponde correttamente al file primario.

Nell'elenco seguente vengono descritti alcuni dei messaggi di errore di riferimento che è possibile ricevere. Tuttavia si deve considerare che l'elenco non include tutti i possibili messaggi di errore di riferimento.

  • "Metodo MethodName dell'oggetto ObjectName non riuscito"

    In genere, è possibile che venga visualizzato questo messaggio di errore se si verifica un problema con una libreria dei tipi di programmazione, ad esempio un file DLL (Dynamic-Link Library) DAO (Data Access Object) non valido. È possibile cercare nella Microsoft Knowledge Base articoli che descrivono le varie forme di questo messaggio di errore.

  • "Funzione non disponibile nell'espressione di Utilizzo"

    È possibile che venga visualizzato questo messaggio di errore se si verifica un problema con una libreria dei tipi di programmazione, oppure se il codice non chiama in modo specifico la libreria corretta e il file è elencato con una priorità inferiore nell'elenco di riferimento rispetto a un file che contiene lo stesso nome di funzione. Ad esempio se il codice DAO viene utilizzato con la libreria ADO (Data Object) di ActiveX elencata con priorità più alta rispetto alla libreria DAO. È inoltre possibile che venga visualizzato questo messaggio di errore se un modulo o un report contiene un controllo ActiveX.

  • "Impossibile trovare il progetto o la libreria"

    È possibile che venga visualizzato questo messaggio di errore se Access non è in grado di individuare un file nell'elenco dei riferimenti. Spesso il file viene contrassegnato come Mancante nella finestra di dialogo Riferimenti. A volte il file esiste nel computer di sviluppo, ma non in quello di destinazione.

  • "Variabile non definita" oppure "Tipo definito dall'utente non definito"

    È possibile che venga visualizzato uno di questi messaggi di errore se si utilizza la Procedura guidata di sicurezza a livello utente per proteggere un database che fa riferimento a librerie diverse da quelle incluse per impostazione predefinita. Ad esempio, i riferimenti alle librerie presenti nel database non protetto non vengono creati automaticamente nel nuovo database protetto.

  • "Errore di run-time 5", "Chiamata di routine o argomento non validi", "La libreria che contiene questo simbolo non fa riferimento al progetto corrente" oppure "La libreria che contiene questo simbolo non fa riferimento al progetto corrente, quindi il simbolo non è definito"

    È possibile che venga visualizzato uno di questi messaggi di errore se è presente un riferimento a un database, a una libreria dei tipi oppure a una libreria di oggetti contrassegnata come Mancante.

  • "Il componente ActiveX non può creare l'oggetto"

    Questo messaggio di errore non significa necessariamente che sia coinvolto un controllo ActiveX. Ad esempio, una possibile causa è che DAO, che è un componente ActiveX, non è in grado di creare un oggetto perché il Server di automazione DAO non può essere avviato. Spesso, la causa è che le DLL che forniscono funzionalità di riferimento per il programma non sono registrate oppure sono registrate in modo errato.

Risoluzione dei problemi di riferimento sul computer di sviluppo

La creazione di un nuovo database vuoto e quindi l'importazione di oggetti da un altro file di database possono creare problemi di riferimento se il codice, oppure i controlli ActiveX, si basano su riferimenti non inclusi in un database per impostazione predefinita. I riferimenti predefiniti per un database di Access 2000 sono:

  • Visual Basic, Applications Edition
  • Libreria oggetti di Microsoft Access 9.0
  • Automazione OLE
  • Libreria ADO (Microsoft ActiveX Data Objects) 2.1

Se l'origine è un altro database di Access 2000, verificare che i riferimenti corrispondano. Se l'origine è in una versione precedente di Access, è probabilmente in uso DAO 3.5 o versione precedente. Tuttavia, Access 2000 non fornisce DAO 3.5 per impostazione predefinita. Provare a rimuovere il riferimento alla libreria ADO 2.1 (se esistente) e ad aggiungere il riferimento alla libreria di oggetti DAO 3.6.

Se il database è stato convertito da una versione precedente di Access e contiene un riferimento al file Utility.mda, nella maggior parte dei casi è possibile rimuovere questo riferimento perché le funzioni che chiama sono incluse nei riferimenti predefiniti in Access 2000. Se sono presenti riferimenti a versioni precedenti di DAO, è possibile rimuoverli perché DAO 3.6 può risolvere queste funzioni.

Per aggiungere un riferimento a una libreria:

  1. Aprire il database.
  2. Premere ALT+F11 per avviare Visual Basic Editor.
  3. Scegliere Riferimenti dal menu Strumenti.
  4. In Riferimenti disponibili, fare clic per selezionare la casella di controllo accanto al nome della libreria e quindi su OK.

Per rimuovere un riferimento a una libreria:

  1. Aprire il database.
  2. Premere ALT+F11 per avviare Visual Basic Editor.
  3. Scegliere Riferimenti dal menu Strumenti.
  4. In Riferimenti disponibili fare clic per deselezionare la casella di controllo accanto al nome della libreria e quindi su OK.

Distribuzione dei file di database

Esistono due metodi di distribuzione dei file di database di base. È possibile copiare il file dal computer di sviluppo al computer di destinazione oppure utilizzare la Creazione guidata di pacchetti di distribuzione per creare un pacchetto di installazione.

Se si copia il file dal computer di sviluppo al computer di destinazione, viene copiato solo il file di database. È necessario verificare manualmente che tutti i file elencati nell'elenco di riferimento siano disponibili, che dispongano del livello di versione corretto e che si trovino nello stesso percorso relativo nel computer di destinazione e nel computer di sviluppo.

Quando in Access si sviluppano applicazioni di run-time, si deve tenere presente che alcuni file del sistema operativo devono essere distribuiti con tali applicazioni. Il pacchetto di questi file viene eseguito automaticamente dal componente Creazione guidata di pacchetti di distribuzione di Microsoft Office 2000 Developer. A volte le versioni dei file inclusi dipendono da altre applicazioni installate nel computer di sviluppo e che potrebbero aver modificato i file del sistema operativo.

Generalmente, seguendo alcune linee guida si garantisce che le versioni dei file utilizzati non siano in conflitto con i file nel computer di destinazione quando si installa l'applicazione di run-time. Le linee guida da seguire sono:

  1. Sviluppare il database di Access su qualsiasi computer.
  2. Creare un ambiente computer in cui il disco rigido è stato riformattato e su cui è installata solo la prima versione del sistema operativo applicabile di Office e di Office 2000 Developer. Eseguire la Creazione guidata di pacchetti di distribuzione su questo computer per creare la versione di run-time dell'applicazione. In questo modo si garantisce che i livelli di revisione dei file funzionino in uno qualsiasi dei computer di destinazione.
  3. Creare un ambiente computer in cui il disco rigido è stato riformattato e su cui è installato solo il sistema operativo. Testare l'applicazione di run-time in questo ambiente.
    • Se l'applicazione non viene eseguita correttamente, si è verificato un problema con l'applicazione stessa. È necessario identificare e correggere il problema prima di distribuire l'applicazione.
    • Se l'applicazione funziona correttamente nel computer di test ma non nel computer di destinazione, il problema si è verificato nel computer di destinazione anziché nell'applicazione. È necessario identificare e correggere la causa nel computer di destinazione, probabilmente un'incompatibilità o un file danneggiato.

Aggiornamento dell'elenco dei riferimenti

Se il problema di riferimento riguarda un controllo ActiveX, a volte è possibile risolvere il problema aggiornando l'elenco dei riferimenti. Per aggiornare l'elenco dei riferimenti:

  1. In Visual Basic Editor, fare clic su Riferimenti nel menu Strumenti.
  2. Nella finestra di dialogo Riferimenti fare clic per selezionare un riferimento non ancora selezionato, prendere nota di tale riferimento e quindi fare clic su OK.
  3. Nel menu Strumenti, fare ancora clic su Riferimenti.
  4. Fare clic per deselezionare il riferimento, quindi fare clic su OK.

Distribuzione di file di database con controlli ActiveX

Esistono due tipi di licenze per i controlli ActiveX: una licenza per la fase di progettazione e una licenza runtime.

  • La licenza per la fase di progettazione consente di inserire controlli ActiveX con licenza da Office 2000 Developer alle maschere e report di un database di Access.
  • La licenza runtime consente di utilizzare i controlli ActiveX in un database di Access su un computer in cui non è installato Office 2000 Developer, tuttavia una licenza runtime non consente di inserire nuovi controlli ActiveX con licenza. Per installare una licenza runtime, distribuire i controlli ActiveX utilizzando la Creazione guidata pacchetti e distribuzione, che scrive la licenza per i controlli nel Registro di sistema del computer di destinazione.

Un flag Mancante, che potrebbe essere visualizzato aprendo un modulo in visualizzazione Struttura e scegliendo Riferimenti dal menu Strumenti, indica che il riferimento al controllo della finestra di dialogo comune nel computer di destinazione non corrisponde all'origine nel file di database dal computer di sviluppo.

Se si distribuisce un file di database senza installare il controllo della finestra di dialogo comune distribuibile, il riferimento del controllo potrebbe essere contrassegnato come Mancante oppure potrebbe essere visualizzato un messaggio di errore in cui si avvisa che non si dispone della licenza necessaria per utilizzare il controllo ActiveX, se il controllo non distribuibile è già installato nel computer di destinazione.

Anche quando il file di database fa parte di un'applicazione in fase di esecuzione, è possibile che venga visualizzato il messaggio di errore in cui si avvisa che non si dispone della licenza necessaria per utilizzare il controllo ActiveX, se il controllo non distribuibile già installato nel computer di destinazione è di una versione successiva a quello fornito dall'applicazione in fase di esecuzione. Questo problema può verificarsi perché il programma di installazione non sovrascrive le versioni successive di un file con una versione precedente dello stesso file.

Nuova registrazione di un file

È possibile che un file sia in elenco di riferimento senza essere registrato correttamente nel Registro di sistema. Se si sospetta che questa sia la causa, eseguire la procedura seguente per registrare di nuovo il file:

  1. In Microsoft Windows NT 4.0 fare clic su Avvio, scegliere Trova, quindi fare clic su File o cartelle oppure in Windows 2000 fare clic su Avvio, scegliere Trova, quindi fare clic su File o cartelle....
  2. Nella casella Denominato o nella casella Cerca file o cartelle con nome, digitare regsvr32.exe.
  3. Nella casella Cerca in fare clic sulla radice del disco rigido (in genere C:).
  4. Fare clic per selezionare la casella di controllo Includi sottocartelle, se non è già selezionata, quindi fare clic su Trova ora o Cerca ora.
  5. Dopo aver trovato il file, fare clic sul pulsante Start, scegliere Esegui e quindi eliminare tutto ciò che si trova nella casella Apri.
  6. Trascinare il file Regsvr32.exe file dal riquadro dei risultati della ricerca alla casella Apri.
  7. Ripetere i passaggi da 2 a 6, questa volta cercando FileName.dll, dove FileName è il nome del file che si desidera registrare di nuovo.
  8. Dopo che il file FileName.dll si trova nella casella Apri con il file Regsvr32.exe, fare clic su OK.
  9. Verificare in Access se il problema persiste.

Se il file di Regsvr32.exe non è nel computer in uso, cercare il file in altri computer. Se il file non è disponibile, è possibile ottenerlo dal sito Web Microsoft.

Nota

Ricordarsi di compilare tutti i moduli dopo aver modificato i riferimenti. Per compilare tutti i moduli, con il modulo ancora aperto, scegliere Compila database dal menu Debug. Se i moduli non vengono compilati, potrebbero essere presenti ulteriori riferimenti non risolti.