Come risolvere i problemi di riferimento in un database di Access

Numero KB originale: 310803

Riassunto

Questo articolo descrive i problemi relativi all'uso di riferimenti in un database di Access.

Per comprendere gli errori di riferimento, è necessario comprendere in che modo viene fatto riferimento alle librerie in un database di Access e di ciò che è necessario per installare un database in un computer di destinazione senza interrompere questi riferimenti. Questo articolo è un riepilogo degli argomenti seguenti:

  • Visualizzazione dei riferimenti al database di Access
  • Risoluzione dei riferimenti a Microsoft Visual Basic for Applications in Access
  • Informazioni sui messaggi di errore di riferimento
  • Risoluzione dei problemi di riferimento nel computer di sviluppo
  • Distribuzione di file di database
  • Aggiornamento dell'elenco di riferimenti
  • Distribuzione di file di database con controlli ActiveX
  • Ripetere la registrazione di un file

Visualizzazione dei riferimenti al database di Access

Per visualizzare i riferimenti al database corrente:

  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

L'accesso 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, Access esegue le procedure seguenti per individuare il file:

  1. L'accesso verifica se il file a cui si fa riferimento è attualmente caricato in memoria.
  2. Se il file non viene caricato in memoria, Access tenta di verificare che la RefLibPaths chiave del Registro di sistema esista. Se la chiave esiste, Access cerca un valore denominato con lo stesso nome del riferimento. Se esiste una corrispondenza, Access carica il riferimento dal percorso a cui punta il valore denominato.
  3. Access cerca quindi il file a cui si fa riferimento nei percorsi seguenti, in questo ordine:
    1. Cartella Applicazioni (il percorso del file Msaccess.exe).
    2. La cartella corrente visualizzata se si fa clic su Apri dal menu File .
    3. Cartella Windows o Winnt in cui sono in esecuzione i file del sistema operativo.
    4. Cartella "System" nella cartella Windows o Winnt.
    5. Le cartelle nella variabile d'ambiente PATH che sono direttamente accessibili dal sistema operativo.
  4. Se Access non riesce a trovare il file, si verifica un errore di riferimento.

Comprendere i messaggi di errore di riferimento

Sono presenti diversi messaggi di errore correlati a un file mancante o a un file con una versione diversa rispetto alla versione usata nel database. Nella maggior parte dei casi, è possibile cercare un articolo della Microsoft Knowledge Base relativo al messaggio di errore specifico ed è quindi possibile risolvere l'errore seguendo la procedura descritta nell'articolo. In alcuni casi, un file di dipendenza non corrisponde correttamente al file primario.

L'elenco seguente descrive alcuni dei messaggi di errore di riferimento che è possibile ricevere. Si noti tuttavia che l'elenco non include tutti i possibili messaggi di errore di riferimento.

  • Il metodo MethodName dell'oggetto ObjectName è fallito.

    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 (Data Access Object) non valido. È possibile cercare articoli della Microsoft Knowledge Base che descrivono le varie forme di questo messaggio di errore.

  • "La 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 o se il codice non chiama specificamente la libreria corretta e il file viene elencato con una priorità inferiore nell'elenco di riferimento rispetto a un file contenente lo stesso nome della funzione, ad esempio se il codice DAO viene usato con la libreria ADO (ActiveX Data Object) elencata con una priorità più alta rispetto alla libreria DAO. È anche possibile che venga visualizzato questo messaggio di errore se una maschera o un report contiene un controllo ActiveX.

  • "Non è possibile 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 di riferimenti. Spesso il file viene contrassegnato come Mancante nella finestra di dialogo Riferimenti. In alcuni casi il file esiste nel computer di sviluppo, ma non nel computer di destinazione.

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

    È possibile che venga visualizzato uno di questi messaggi di errore se si utilizza la sicurezza guidata User-Level per proteggere un database che fa riferimento a librerie diverse dalle librerie incluse per impostazione predefinita. Ad esempio, i riferimenti alle librerie esistenti nel database non protetto non vengono creati automaticamente nel nuovo database protetto.

  • "Errore di run-time 5", "Chiamata di routine o argomento non valido", "La libreria che contiene questo simbolo non fa riferimento al progetto corrente" o "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 o a una libreria di oggetti contrassegnata comeMissing.

  • "Il componente ActiveX non può creare un 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 può 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 o sono registrate in modo non corretto.

Risoluzione dei problemi di riferimento nel computer di sviluppo

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

  • Visual Basic per Applicazioni
  • Libreria oggetti di Microsoft Access 9.0
  • Automazione OLE
  • Libreria Microsoft ActiveX Data Objects (ADO) 2.1

Se l'origine è un altro database di Access 2000, verificare che i riferimenti corrispondano. Se l'origine si trova in una versione precedente di Access, è probabile che DAO 3.5 o versioni precedenti sia in uso; 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 il database contiene un riferimento al file Utility.mda, nella maggior parte dei casi è possibile rimuovere questo riferimento perché le funzioni chiamate a questo riferimento sono incluse nei riferimenti predefiniti in Access 2000. Se sono presenti riferimenti alle versioni precedenti di DAO, è anche possibile rimuovere questi riferimenti perché DAO 3.6 può gestire 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 fare clic 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 fare clic su OK.

Distribuzione di file di database

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

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

Quando si sviluppano applicazioni di runtime in Access, tenere presente che alcuni file del sistema operativo devono essere distribuiti con l'applicazione in fase di esecuzione. La creazione di pacchetti di questi file viene eseguita automaticamente dal componente Procedura guidata per il pacchetto e la 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.

Seguendo alcune linee guida, in genere si garantisce che le versioni dei file usati non siano in conflitto con i file nel computer di destinazione quando si installa l'applicazione in fase di esecuzione. Ecco le linee guida:

  1. Sviluppare il database di Access in qualsiasi computer.
  2. Creare un ambiente computer in cui il disco rigido è stato riformattato e in cui è installata solo la versione meno recente del sistema operativo applicabile, di Office e di Office 2000 Developer. Eseguire la Creazione guidata di pacchetto e distribuzione su questo computer per creare la versione di runtime dell'applicazione. In questo modo, i livelli di revisione dei file funzioneranno in uno dei computer di destinazione.
  3. Creare un ambiente computer in cui il disco rigido è stato riformattato e in cui è installato solo il sistema operativo. Testare l'applicazione in fase di esecuzione in questo ambiente.
    • Se l'applicazione non viene eseguita correttamente, si sa che 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 funziona nel computer di destinazione, si sa che c'è qualcosa di sbagliato nel computer di destinazione anziché nell'applicazione. È necessario identificare e correggere la causa probabile nel computer di destinazione, probabilmente un'incompatibilità o un file danneggiato.

Aggiornamento dell'elenco di riferimenti

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

  1. In Visual Basic Editor fare clic su Riferimenti dal menu Strumenti .
  2. Nella finestra di dialogo Riferimenti fare clic per selezionare un riferimento non già selezionato, prendere nota di quale selezionare e quindi fare clic su OK.
  3. Scegliere di nuovo Riferimenti dal menu Strumenti.
  4. Fare clic per annullare la selezione del riferimento e quindi fare clic su OK.

Distribuzione di file di database con controlli ActiveX

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

  • Una licenza in fase di progettazione consente di inserire controlli ActiveX concessi in licenza da Office 2000 Developer in moduli e report in un database di Access.
  • Una licenza di runtime consente di usare i controlli ActiveX in un database di Access in un computer in cui non è installato Office 2000 Developer, ma una licenza di runtime non consente di inserire nuovi controlli ActiveX concessi in licenza. Per installare una licenza di run-time, distribuire i controlli ActiveX usando la Creazione guidata di pacchetti e distribuzione, che scrive la licenza per i controlli nel Registro di sistema del computer di destinazione.

Una bandiera mancante, che può essere visualizzata quando si apre un modulo in modalità Struttura e si fa clic su Riferimenti dal menu Strumenti, indica che il riferimento al controllo Common Dialog sul computer di destinazione non corrisponde a quello nel file di database del computer di sviluppo.

Se si distribuisce un file di database senza installare il controllo Finestra di dialogo comune distribuibile, il riferimento del controllo può essere contrassegnato come Mancante oppure viene visualizzato un messaggio di errore che indica che "Non si dispone della licenza necessaria per utilizzare questo 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 "Non si dispone della licenza necessaria per usare questo controllo ActiveX" se il controllo non distribuibile già installato nel computer di destinazione è di una versione successiva rispetto al controllo fornito dall'applicazione di runtime. Questo problema può verificarsi perché il programma di installazione non sovrascrive le versioni successive di un file con una versione precedente dello stesso file.

Ripetere la registrazione di un file

È possibile che un file si trova nell'elenco di riferimenti senza essere registrato correttamente nel Registro di sistema. Se si sospetta che ciò possa verificarsi, seguire questa procedura per registrare nuovamente il file:

  1. In Microsoft Windows NT 4.0, fare clic su Start, scegliere Trova e quindi fare clic su File o cartelle, oppure in Windows 2000, fare clic su Start, scegliere Cerca e quindi fare clic su File e cartelle.
  2. Nella casella Denominata o nella casella Cerca file e cartelle denominate digitare regsvr32.exe.
  3. Nella casella Guarda 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 e quindi fare clic su Trova ora o Cerca adesso.
  5. Dopo aver trovato il file, fare clic su Start, fare clic su Esegui, quindi eliminare tutto ciò che si trova nella casella Apri .
  6. Trascinare il file Regsvr32.exe dal riquadro dei risultati della ricerca alla casella Apri .
  7. Ripetere i passaggi da 2 a 6, questa volta cercando FileName.dll, dove NomeFile è il nome del file da registrare nuovamente.
  8. Dopo che il fileFileName.dll si trova nella casella Apri con il file Regsvr32.exe, fare clic su OK.
  9. In Access verificare se il problema esiste ancora.

Se il file di Regsvr32.exe non è presente nel computer, controllare la presenza del file in altri computer. Se il file non è disponibile, è possibile ottenere il file dal sito Web Microsoft.

Annotazioni

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