Este artigo se aplica a um banco de dados do Microsoft Access (.mdb).
Moderado: Requer habilidades básicas de macro, codificação e interoperabilidade.
Sintomas
Ao exportar uma consulta do Access para um documento XML e essa consulta contiver nos critérios um caractere curinga do Microsoft Jet, como um asterisco (*), os dados não são exportados para o documento XML. Por isso, o documento XML resultante não contém nenhum dado.
A consulta funciona corretamente se você executar a mesma consulta usando o Access.
Causa
Esse comportamento ocorre quando você exporta para o XML. O XML usa o ADO (ActiveX Data Objects) para consultar dados em um banco de dados. Ao usar um caractere curinga específico do Jet na consulta do Access, a consulta retornará sem registros. Esse problema ocorre porque o ADO reconhece apenas caracteres curingas do ANSI 92 (American National Standards Institute).
Como Contornar
Como solução alternativa para esse problema, use um dos seguintes métodos.
Método 1
É possível regravar a consulta para substituir o caractere curinga específico do Jet com o caractere curinga do ANSI 92. Por exemplo, a consulta original pode ser parecida com a consulta a seguir, que usa o caractere curinga asterisco (*):
SELECT Customers.CustomerID
FROM Customers
WHERE (((Customers.CustomerID) Like "A*"));
É possível regravar a consulta conforme a seguir:
SELECT Customers.CustomerID
FROM Customers
WHERE (((Customers.CustomerID) Like "A%"));
Observação Se o banco de dados do Access não estiver configurado para ter compatibilidade com o ANSI 92, quando você executar a consulta regravada pelo Access, os dados não serão retornados. Porém, o documento XML exportado que tem base na consulta regravada retornará os resultados esperados.
Método 2
Você pode regravar a consulta para que o critério da consulta não contenha caracteres curinga. Por exemplo, a consulta original pode ser parecida com a consulta a seguir, que usa o caractere curinga asterisco (*):
SELECT Customers.CustomerID
FROM Customers
WHERE (((Customers.CustomerID) Like "A*"));
É possível regravar a consulta conforme a seguir:
SELECT Customers.CustomerID
FROM Customers
WHERE Left(CustomerID,1) = "A";
Método 3
Ao exportar dados para um documento XML, você pode especificar se irá aplicar um filtro existente no objeto. Em vez de especificar um caractere curinga nos critérios da consulta, é possível criar um filtro com a cadeia de filtros equivalentes aos critérios que você deseja (por exemplo, "A*") e, em seguida, aplicar esse filtro durante o processo Exportar XML.
Para fazer isto, execute as seguintes etapas dependendo da versão do Access.
Access 2003
-
Abra o banco de dados de exemplo Northwind.
-
No menu Inserir, clique em
Consulta. -
Na caixa de diálogo Nova consultaselecione Modo de Design e clique em
OK. -
No menu Exibir clique em Modo SQL.
-
Na janela Consulta cole a seguinte consulta:
SELECT Customers.CustomerID
FROM Customers;Observação É possível verificar o critério da consulta que foi removido. Dessa forma, a consulta não irá conter nenhum caractere curinga.
-
No menu Arquivo, clique em
Salvar. -
Na caixa Nome da consulta da caixa de diálogo Salvar como digite Consulta1 e clique em OK.
-
No menu Exibir, clique em Modo folha de dados.
-
No menu Registros aponte para
Filtrar e clique em Filtrar/classificar avançado.... -
Na lista Campo selecione
Código_do_Cliente. -
Na caixa Critérios em
Código_do_Cliente, cole o seguinte código:Like "A*"
-
No menu Filtro clique em Aplicar filtro/classificar.
-
No menu Arquivo, clique em
Salvar. -
No menu Arquivo, clique em
Fechar. -
Na janela Banco de dados clique em
Consultas. -
Com o botão direito do mouse clique em
Consulta1 e em Exportar. -
Na caixa de diálogo Exportar consulta 'Consulta1' para selecione XML na lista Salvar como tipo e clique em Exportar.
-
Na caixa de diálogo Exportar XML clique em
Mais opções. -
Na caixa de diálogo Exportar XML selecione a guia Dados. Em Registros para exportação:selecione a caixa de diálogo Aplicar filtro existente e, em seguida, clique em OK.
Access 2007
-
Abra o banco de dados de exemplo Northwind.
-
Na guia Criar clique em Design da Consulta e em Fechar.
-
Na guia Design clique em Modo SQL no grupo Resultados.
-
Na janela Consulta, cole a seguinte consulta:
SELECT Customers.[First Name]
FROM Customers;Observação É possível verificar se o critério da consulta foi removido. Dessa forma, a consulta não irá conter nenhum caractere curinga.
-
Clique no Botão do Microsoft Office e clique em Salvar.
-
Na caixa Nome da consulta da caixa de diálogo Salvar como digite Consulta1 e clique em OK.
-
Na guia Início no grupo Modos de exibição clique em Exibir e em Modo de exibição folha de dados.
-
Na guia Início clique em
Avançado no grupo Classificar & Filtrar e clique em Filtrar/classificar avançado. -
Na lista Campo selecione
Nome -
Na caixa Critérios em
Nome, cole o seguinte código:Like "A*"
-
Na guia Início clique em
Avançado no grupo Classificar & Filtrar e clique em Aplicar filtro/classificar. -
Clique no Botão do Microsoft Office e clique em Salvar.
-
Com o botão direito do mouse, clique em
Consulta1, aponte para Exportar, clique em
Arquivo XML e clique em OK. -
Na caixa de diálogo Exportar - arquivo XMLclique em Mais opções.
-
Na caixa de diálogo Exportar - arquivo XMLclique na guia Dados.
-
Em Registros para exportação selecione a opção Aplicar filtro existente e clique em
OK. -
Na caixa de diálogo Exportar - Arquivo XMLclique em Fechar.
Situação
A Microsoft confirmou que esse é um bug nos produtos Microsoft que estão listados no início deste artigo.
Mais Informações
Etapas para reproduzir o problema no Access 2003
-
Abra o banco de dados de exemplo Northwind.
-
No menu Inserir, clique em
Consulta. -
Na caixa de diálogo Nova consultaselecione Modo de Design e clique em
OK. -
No menu Exibir clique em Modo SQL.
-
Na janela Consulta cole a seguinte consulta:
SELECT Customers.CustomerID
FROM Customers
WHERE (((Customers.CustomerID) Like "A*")); -
Clique em Salvar no menu
Arquivo. -
Na caixa Nome da consulta que está na caixa de dialogo Salvar como digite
Consulta1. -
No menu Arquivo, clique em
Fechar. -
Clique com o botão direito do mouse em Consulta1 e em Exportar.
-
Na caixa de diálogo Exportar consulta 'Consulta1' para selecione XML na lista Salvar como tipo e clique em Exportar.
-
Na caixa de diálogo Exportar XML clique em
OK para salvar os arquivos XML relacionados no local padrão. -
No Microsoft Internet Explorer, abra o arquivo XML exportado.
É possível consultar qual arquivo XML exportado tem base na consulta específica que não contém nenhum registro.
Referências
Para obter mais informações sobre a sintaxe ANSI 92, digite
modo de consulta ANSI SQL no Assistente do Office e clique em Pesquisar.