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:-
Aprire il database di esempio Northwind.
-
Scegliere Query dal menu
Inserisci. -
Nella finestra di dialogo Nuova query selezionare Visualizzazione struttura e scegliere
OK. -
Scegliere Visualizzazione SQL dal menu
Visualizza. -
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.
-
Scegliere Salva dal menu
File. -
Nella casella Nome query della finestra di dialogo Salva con nome digitare
Query1. -
Scegliere Visualizzazione Foglio dati dal menu Visualizza.
-
Scegliere Filtro dal menu
Record, quindi fare clic su Ordinamento/filtro avanzato. -
Nell'elenco Campo selezionare
ID Cliente. -
Nella casella Criteri in ID Cliente incollare il seguente codice:
Like "A*"
-
Scegliere Applica filtro/ordina dal menu Filtro.
-
Scegliere Salva dal menu
File. -
Scegliere Chiudi dal menu
File. -
Nella finestra Database fare clic su
Query. -
Fare clic con il pulsante destro del mouse su
Query1 e scegliere Esporta. -
Nella finestra di dialogo per l'esportazione di Query1 selezionare XML nell'elenco
Tipo file, quindi fare clic su
Esporta. -
Nella finestra di dialogo Esporta XML fare clic su Altre opzioni.
-
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
-
Aprire il database di esempio Northwind.
-
Scegliere Query dal menu
Inserisci. -
Nella finestra di dialogo Nuova queryselezionare Visualizzazione Struttura e scegliere
OK. -
Scegliere Visualizzazione SQL dal menu
Visualizza. -
Nella finestra Query incollare la seguente query:
SELECT Customers.CustomerID
FROM Customers
WHERE (((Customers.CustomerID) Like "A*")); -
Scegliere Salva dal menu
File. -
Nella casella Nome query nella finestra di dialogo Salva con nome digitare
Query1. -
Scegliere Chiudi dal menu
File. -
Fare clic con il pulsante destro del mouse su Query1 e scegliere Esporta.
-
Nella finestra di dialogo per l'esportazione di Query1
selezionare XML nell'elenco Tipo file, quindi fare clic su Esporta. -
Nella finestra di dialogo Esporta XMLscegliere OK per salvare i file XML nel percorso predefinito.
-
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.