Le query di Access con un carattere jolly non consentono l'esportazione di dati in un documento XML

Il contenuto di questo articolo è applicabile solo ai database di Microsoft Access (mdb).

Difficoltà media: Sono richieste conoscenze di base su creazione di macro, gestione di codice e interoperabilità.

Sintomi

Quando si esporta una query di Access in un documento XML e nei criteri della query è presente un carattere jolly di Microsoft Jet, ad esempio un asterisco (*), i dati non vengono esportati nel documento XML. Il documento XML risultante, pertanto, non conterrà alcun dato.

La query funziona correttamente se eseguita utilizzando Access.

Cause

Questo problema si verifica durante l'esportazione in XML. Con il linguaggio XML viene utilizzato ActiveX Data Objects (ADO) per eseguire una query sui dati del database. Quando si utilizza un carattere jolly specifico di Jet nella query di Access, non viene restituito alcun record. Il problema è causato dal fatto che in ADO vengono riconosciuti solo i caratteri jolly ANSI (American National Standards Institute) 92.

Workaround

Per risolvere questo problema, utilizzare uno dei metodi descritti di seguito.

  • Metodo 1

    È possibile riscrivere la query per sostituire il carattere jolly specifico di Jet con il carattere jolly ANSI 92. Ad esempio, la query originale potrebbe risultare analoga a quanto segue con il carattere jolly *:

    SELECT Customers.CustomerID
    FROM Customers
    WHERE (((Customers.CustomerID) Like "A*"));

    È possibile riscrivere la query nel modo seguente:

    SELECT Customers.CustomerID
    FROM Customers
    WHERE (((Customers.CustomerID) Like "A%"));

    Nota Se il database di Access non è configurato per la compatibilità ANSI 92, eseguendo da Access la query riscritta non verrà restituito alcun dato. Il documento XML esportato basato sulla query riscritta restituisce invece i risultati previsti.

  • Metodo 2

    È possibile riscrivere la query in modo che il relativo criterio non contenga caratteri jolly. Ad esempio, la query originale potrebbe risultare analoga a quanto segue con il carattere jolly *:

    SELECT Customers.CustomerID
    FROM Customers
    WHERE (((Customers.CustomerID) Like "A*"));

    È possibile riscrivere la query nel modo seguente:

    SELECT Customers.CustomerID
    FROM Customers
    WHERE Left(CustomerID,1) = "A";
  • Metodo 3

    Quando si esportano dati in un documento XML, è possibile specificare se applicare un filtro esistente all'oggetto. Invece di specificare un carattere jolly nei criteri della query, è possibile creare un filtro con una stringa equivalente ai criteri desiderati (ad esempio "A*"), quindi applicare tale filtro durante il processo di esportazione in XML.

    Per effettuare questa operazione, attenersi alla seguente procedura:

    1. Aprire il database di esempio Northwind.

    2. Scegliere Query dal menu
      Inserisci.

    3. Nella finestra di dialogo Nuova query selezionare Visualizzazione struttura e scegliere
      OK.

    4. Scegliere Visualizzazione SQL dal menu
      Visualizza.

    5. Nella finestra Query incollare la seguente query:

      SELECT Customers.CustomerID
      FROM Customers;

      Nota Il criterio della query è stato eliminato. La query non contiene pertanto caratteri jolly.

    6. Scegliere Salva dal menu
      File.

    7. Nella casella Nome query della finestra di dialogo Salva con nome digitare
      Query1.

    8. Scegliere Visualizzazione Foglio dati dal menu Visualizza.

    9. Scegliere Filtro dal menu
      Record, quindi fare clic su Ordinamento/filtro avanzato.

    10. Nell'elenco Campo selezionare
      ID Cliente.

    11. Nella casella Criteri in ID Cliente incollare il seguente codice:

      Like "A*"
    12. Scegliere Applica filtro/ordina dal menu Filtro.

    13. Scegliere Salva dal menu
      File.

    14. Scegliere Chiudi dal menu
      File.

    15. Nella finestra Database fare clic su
      Query.

    16. Fare clic con il pulsante destro del mouse su
      Query1 e scegliere Esporta.

    17. Nella finestra di dialogo per l'esportazione di Query1 selezionare XML nell'elenco
      Tipo file, quindi fare clic su
      Esporta.

    18. Nella finestra di dialogo Esporta XML fare clic su Altre opzioni.

    19. Nella finestra di dialogo Esporta XML fare clic sulla scheda Dati. In Record da esportare selezionare la casella di controllo Applica filtro esistente, quindi scegliere OK.

Status

Microsoft ha confermato che questo problema si verifica con i prodotti elencati nella sezione "Si applica a..." di questo articolo.

Informazioni

Procedura per riprodurre il problema

  1. Aprire il database di esempio Northwind.

  2. Scegliere Query dal menu
    Inserisci.

  3. Nella finestra di dialogo Nuova queryselezionare Visualizzazione Struttura e scegliere
    OK.

  4. Scegliere Visualizzazione SQL dal menu
    Visualizza.

  5. Nella finestra Query incollare la seguente query:

    SELECT Customers.CustomerID
    FROM Customers
    WHERE (((Customers.CustomerID) Like "A*"));
  6. Scegliere Salva dal menu
    File.

  7. Nella casella Nome query nella finestra di dialogo Salva con nome digitare
    Query1.

  8. Scegliere Chiudi dal menu
    File.

  9. Fare clic con il pulsante destro del mouse su Query1 e scegliere Esporta.

  10. Nella finestra di dialogo per l'esportazione di Query1
    selezionare XML nell'elenco Tipo file, quindi fare clic su Esporta.

  11. Nella finestra di dialogo Esporta XMLscegliere OK per salvare i file XML nel percorso predefinito.

  12. In Microsoft Internet Explorer aprire il file XML esportato.

    Si noterà che nel file XML esportato basato sulla query specificata non è presente alcun record.

Riferimenti

Per ulteriori informazioni sulla sintassi ANSI 92, digitare
modalità query sql ansi nell'Assistente di Office, quindi fare clic su Cerca.

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×