ACC97: Errore: funzione non Ŕ disponibile in espressioni in Query Expression

Traduzione articoli Traduzione articoli
Identificativo articolo: 194374 - Visualizza i prodotti a cui si riferisce l?articolo.
Avanzate: Richiede la codifica degli esperti, interoperabilitÓ e competenze multiutente.

Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Quando si esegue una query, viene potrebbe essere visualizzato il seguente messaggio di errore:
Funzione non Ŕ disponibile nelle espressioni in espressione di query.
Potrebbe essere visualizzato un errore di "# (nome" in maschere e report nei controlli che Ŕ possibile utilizzare un'espressione per la proprietÓ ControlSource . Questo comportamento pu˛ verificarsi nelle maschere, query o sul report che utilizzano funzioni nelle espressioni, ad esempio, () di formato , () a sinistra o destra () funzione.

Cause

╚ sviluppato un database utilizzando una versione particolare di una libreria dei tipi e quindi aggiornare la versione della libreria tipo sul computer di sviluppo.
- oppure -
╚ fatto riferimento di una libreria dei tipi nel computer di sviluppo e quindi spostato il database su un computer non Ŕ disponibile la libreria, o con una versione pi¨ recente della libreria.

Nota : questo problema comporta spesso riferimenti a Comctl32.ocx. Ma questo problema pu˛ anche verificarsi con altre librerie dei tipi. Un esempio di installazione di una versione pi¨ recente della libreria tipo Ŕ installazione di versioni pi¨ recenti di Microsoft Data Access Components (MDAC). In alcuni casi l'aggiornamento di una libreria dei tipi Ŕ impercettibile, ad esempio quando si aggiorna la versione del sistema operativo o si installa una nuova applicazione.

Risoluzione

Per risolvere il problema, Ŕ necessario la stessa versione di libreria dei tipi nel computer di sviluppo e in altri computer che verrÓ utilizzato il database. ╚ necessario aggiornare il riferimento alla libreria dei tipi nei computer che verrÓ utilizzato il database. ╚ necessario eseguire questa operazione in modo che Microsoft Access pu˛ riconoscere il controllo. Di seguito Ŕ tre metodi che Ŕ possibile utilizzare per effettuare questa operazione.

file MDE di ON Nota importante: I metodi riportati di seguito funzionano solo in file standard di Access (MDB). ╚ Impossibile aggiornare i riferimenti in un file MDE di Access (MDE). Riferimenti devono essere aggiornati nel file con estensione MDB originale prima di essere ricompilato in un nuovo MDE.

Con Microsoft Access per aggiornare un riferimento

╚ possibile utilizzare Microsoft Access per aggiornare manualmente i riferimenti in un computer di destinazione. Per effettuare questa operazione, attenersi alla seguente procedura:
  1. Aprire il database che causa gli errori menzionati nella sezione "Sintomi" sezione.
  2. Nella scheda moduli , fare clic su Nuovo .
  3. Nel menu Strumenti , fare clic su riferimenti .
  4. Nella finestra di dialogo riferimenti selezionare qualsiasi riferimento singolo non Ŕ giÓ selezionata, selezionarla, nota di quello selezionato e quindi fare clic su OK .
  5. Scegliere nuovamente riferimenti dal menu Strumenti .
  6. Fare clic per deselezionare il riferimento selezionato nel passaggio 4 e quindi fare clic su OK .
  7. Esegue la query, maschera o il report in cui si Ŕ visto gli errori menzionati nella sezione "Sintomi". Non si verificano errori.

L'aggiornamento del controllo distribuito

╚ possibile aggiornare la versione del controllo del computer di sviluppo corrisponde a quella nel computer di destinazione. Dopo aver aggiornato sul computer di sviluppo controllo e aggiornare il riferimento nel database (vedere "Using Microsoft Access 97 per aggiorna un Reference" sezione di questo articolo), Ŕ possibile copiare il database al computer di destinazione.

Se si utilizza Microsoft Office 97 Developer Edition (ODE) per distribuire un'applicazione, eseguire l'installazione guidata nuovo per ricostruire i file di installazione e chiedere quindi agli utenti di reinstallare l'applicazione.

Aggiornamento automaticamente riferimenti utilizzando Visual Basic, Applications Edition

╚ possibile utilizzare codice di applicazioni di Visual Basic per aggiornare automaticamente i riferimenti nel database. Questa soluzione viene utilizzata una query per verificare il problema descritto in questo articolo e quindi viene eseguito codice Visual Basic Applications Edition per aggiornare i riferimenti, se il problema. Se si distribuisce le applicazioni di Microsoft Office 97 Developer Edition, Ŕ possibile includere nelle versioni future e aggiornamento dell'applicazione.
  1. Creare una nuova query nel database per verificare i sintomi. La query deve utilizzare una delle funzioni incorporate di Access, ad esempio sul () di formato , () a sinistra o sulla funzione () a destra . Salvare la query come qryTestRefs.

    Ad esempio, utilizzando il database Northwind, Ŕ possibile utilizzare una query che restituisce la prima lettera del campo Nome categoria nella tabella Categorie, come illustrato di seguito:
       Query: qryTestRefs
       ------------------------------
    
       Field: Expr1
       ------------
       Value: Left([Category Name],1)
    					
  2. Creare una macro come indicato di seguito e salvarlo come AutoExec:
       Macro Name   Action
       --------------------
       AutoExec     RunCode
    
       Action Arguments
       -------------------------
    
       Function Name: CheckRefs()
    					
  3. Creare il seguente modulo e digitare o incollare il codice riportato di seguito nel nuovo modulo:
Function CheckRefs()
   Dim db As Database, rs As Recordset
   Dim x
   Set db = CurrentDb

   On Error Resume Next

   ' Run the query qryTestRefs you created and trap for an error.
   Set rs = db.OpenRecordset("qryTestRefs", dbOpenDynaset)

   ' The if statement below checks for error 3075. If it encounters the 
   ' error, it informs the user that it needs to fix the application.  
   ' Error 3075 is the following:
   ' "Function isn't available in expressions in query expression..."

   ' Note: This function only checks for the error 3075. If you want it to
   ' check for other errors, you can modify the If statement. To have 
   ' it check for any error, you can change it to the following:
   ' If Err.Number <> 0

    If Err.Number = 3075 Then
      MsgBox "This application has detected newer versions " _
             & "of required files on your computer. " _
             & "It may take several minutes to recompile " _
             & "this application."
      Err.Clear
      FixUpRefs
   End If   
   

End Function

Sub FixUpRefs()
    Dim loRef As Access.Reference
    Dim intCount As Integer
    Dim intX As Integer
    Dim blnBroke As Boolean
    Dim strPath As String

    On Error Resume Next

    'Count the number of references in the database
    intCount = Access.References.Count
  
    'Loop through each reference in the database
    'and determine if the reference is broken.
    'If it is broken, remove the Reference and add it back.
    For intX = intCount To 1 Step -1
      Set loRef = Access.References(intX)
      With loRef
        blnBroke = .IsBroken
        If blnBroke = True Or Err <> 0 Then
          strPath = .FullPath
          With Access.References
            .Remove loRef
            .AddFromFile strPath
          End With
        End If
       End With
    Next
    
  Set loRef = Nothing
  
  ' Call a hidden SysCmd to automatically compile/save all modules.
  Call SysCmd(504, 16483)
End Sub
				

Status

Microsoft ha confermato che si tratta un problema in Microsoft Access 97.

Informazioni

Quando una libreria dei tipi Ŕ installata in un computer, le informazioni viene inserite nel Registro di sistema. Microsoft Access utilizza queste informazioni del Registro di sistema per fare riferimento e utilizzare la libreria dei tipi. In condizioni normali, l'installazione di una versione pi¨ recente di una libreria dei tipi in un computer non incide sulla programmi di utilizzarlo, ma in alcuni casi, le modifiche alle librerie dei tipi causare dovranno essere registrati in modo diverso. In questo caso, Microsoft Access non pu˛ utilizzarli fino a quando le informazioni di registro di sistema nuovo vengono aggiornate nell'insieme References .

Procedura per riprodurre il problema

  1. Riformattare due computer di test.
  2. ╚ possibile installare Microsoft Windows 95 o Microsoft Windows 98 su entrambi i computer.
  3. Nel primo computer, Ŕ necessario installare Microsoft Access 97.
  4. Nel primo computer, Ŕ necessario installare Microsoft Office 97 Developer Edition.
  5. Il primo computer, creare un nuovo database.
  6. In nuovo database, fare clic su tabelle , fare clic su Nuovo e quindi scegliere Visualizzazione struttura .
  7. In visualizzazione struttura, creare la seguente nuova tabella:
            Table: Table1
            -------------------------------
            Field Name: CategoryID
               Data Type: Counter
               Indexed: Yes (No Duplicates)
            Field Name: CategoryName
               Data Type: Text
            Field Name: Location
               Date Type: Text
               Field Size: 20
               Indexed: Yes (Duplicates OK)
    
            Table Properties: Table1
            ------------------------------
            PrimaryKey: CategoryID
            Index1: CategoryName; Location
    					
  8. Salvare la tabella come Table1 e quindi passare alla visualizzazione Foglio dati.
  9. In visualizzazione Foglio dati, Ŕ necessario aggiungere alcuni record alla tabella.
  10. Creare una nuova query basata sulla tabella.
  11. Aggiungere il campo Field1 della query, cosý come la seguente espressione:
            EXPR1: Format([CategoryID], " #")
    					
  12. Salvare la query come Query1 e chiuderlo. Non eseguire la query.
  13. Aprire un nuovo modulo vuoto in visualizzazione struttura.
  14. Inserire Microsoft CommonDialog (versione 5.0) e i controlli TreeView Microsoft (versione 5.0) il modulo.
  15. Nel menu Visualizza , fare clic su codice per vedere il modulo della maschera. (Questo automaticamente imposta la proprietÓ HasModule a .)
  16. Scegliere riferimenti dal menu Strumenti e verificare di avere i seguenti riferimenti (in ordine):
            Visual Basic For Applications
            Microsoft Access 8.0 Object Library
            Microsoft DAO 3.5 Object Library
            Microsoft Common Dialog Control 5.0
            Microsoft Windows Common Controls 5.0
    					
  17. Dal menu debug scegliere Compila E Salva tutti i moduli . Salvare la maschera come Form1 quando viene richiesto.
  18. Chiudere il modulo.
  19. Eseguire la query Query1 e verificare che funzioni correttamente.
  20. Consente di copiare il database in un secondo computer con versione 5.00.4319 o versione successiva di Comctl32.ocx installato. Questa versione del controllo pu˛ essere ottenuta con Microsoft Visual Studio 5.0 SP3 o di Visual Studio 6.0.
  21. Aprire il database nel secondo computer, eseguire la query Query1. Nota che verrÓ visualizzato il seguente messaggio di errore:
    Funzione non Ŕ disponibile nelle espressioni in espressione di query 'Format([CategoryID], "#")'
Seguendo questo messaggio di errore, se si modificano i riferimenti in alcun modo, il problema viene risolto. Ad esempio, Ŕ possibile aggiungere un riferimento in modo casuale, fare clic su OK per chiudere la finestra di dialogo riferimenti e quindi rimuovere tale riferimento.

Riferimenti

Per ulteriori informazioni sui riferimenti, cercare l'indice della Guida per "Insieme References."

ProprietÓ

Identificativo articolo: 194374 - Ultima modifica: martedý 23 gennaio 2007 - Revisione: 3.2
Le informazioni in questo articolo si applicano a:
  • Microsoft Access 97 Standard Edition
  • Microsoft Office 97 Developer Edition
Chiavi:á
kbmt kbbug kberrmsg kbnofix KB194374 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 194374
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Dichiarazione di non responsabilitÓ per articoli della Microsoft Knowledge Base su prodotti non pi¨ supportati
Questo articolo Ŕ stato scritto sui prodotti per cui Microsoft non offre pi¨ supporto. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com