Las consultas de Access que incluyen caracteres comodín no exportan datos a un documento XML


Este artículo se aplica únicamente a las bases de datos de Microsoft Access (.mdb).


Moderado: requiere conocimientos básicos de macros, código e interoperabilidad.

Síntomas


Cuando exporta a un documento XML una consulta de Access cuyos criterios contienen un carácter comodín de Microsoft Jet como un asterisco (*), no se exporta ningún dato al documento XML. Por tanto, el documento XML resultante no contiene ningún dato.

Sin embargo, al ejecutar la consulta en Access, ésta funciona correctamente.

Causa


Este comportamiento aparece al exportar a XML. XML utiliza Objetos de datos ActiveX (ADO) para consultar los datos de la base de datos. Cuando se utilizan caracteres comodín específicos de Jet para la consulta de Access, ésta no devuelve ningún registro. Este problema se produce porque ADO sólo reconoce caracteres comodín de tipo ANSI 92 (American National Standards Institute).

Solución


Para solucionar temporalmente este problema, utilice uno de los métodos siguientes.

Método 1

Puede reescribir la consulta para reemplazar el carácter comodín de Jet por uno de tipo ANSI 92. Por ejemplo, la consulta original puede ser similar a ésta que tiene el carácter comodín *:
SELECT Customers.CustomerID
FROM Customers
WHERE (((Customers.CustomerID) Like "A*"));
Puede reescribirla como se indica a continuación:
SELECT Customers.CustomerID
FROM Customers
WHERE (((Customers.CustomerID) Like "A%"));
Nota: si la base de datos de Access no está configurada para ofrecer compatibilidad con ANSI 92, no se devolverá ningún dato cuando ejecute la nueva consulta reescrita desde Access. Sin embargo, el documento XML exportado a partir de la nueva consulta devolverá los resultados esperados.

Método 2

Puede reescribir la consulta de tal forma que su criterio no incluya caracteres comodín. Por ejemplo, la consulta original puede ser similar a ésta que tiene el carácter comodín *:
SELECT Customers.CustomerID
FROM Customers
WHERE (((Customers.CustomerID) Like "A*"));
Puede reescribirla como se indica a continuación:
SELECT Customers.CustomerID
FROM Customers
WHERE Left(CustomerID,1) = "A";

Método 3

Al exportar datos a un documento XML, puede especificar que se aplique al objeto un filtro ya existente. En lugar de especificar un carácter comodín en los criterios de la consulta, puede crear un filtro con una cadena equivalente a los criterios buscados (como, por ejemplo "A*") y, a continuación, aplicar el filtro durante el proceso de exportación de XML.

Para ello, siga estos pasos, dependiendo de la versión de Access.

Access 2003

  1. Abra la base de datos de ejemplo Neptuno.
  2. En el menú Insertar, haga clic en Consulta.
  3. En el cuadro de diálogo Nueva consulta, seleccione Vista Diseño y haga clic en Aceptar.
  4. En el menú Ver, haga clic en Vista SQL.
  5. En la ventana Consulta, pegue la siguiente consulta:
    SELECT Customers.CustomerID
    FROM Customers;
    Nota: puede ver que se quita el criterio de la consulta. Por tanto, la consulta no contiene ningún carácter comodín.
  6. En el menú Archivo, haga clic en Guardar.
  7. En el cuadro Nombre de la consulta del cuadro de diálogo Guardar como, escriba Consulta1 y haga clic en Aceptar.
  8. En el menú Ver, haga clic en Vista Hoja de datos.
  9. En el menú Registros, seleccione Filtro y haga clic en Filtro u orden avanzado.
  10. En la lista Campo, seleccione IdCliente.
  11. En el cuadro Criterios, pegue el siguiente código bajo IdCliente:
    Like "A*"
    Like "A*"
  12. En el menú Filtro, haga clic en Aplicar filtro u ordenar.
  13. En el menú Archivo, haga clic en Guardar.
  14. En el menú Archivo, haga clic en Cerrar.
  15. En la ventana Base de datos, haga clic en Consultas.
  16. Haga clic con el botón secundario en Consulta1 y, a continuación, haga clic en Exportar.
  17. En el cuadro de diálogo Exportar consulta 'Consulta1' a, seleccione XML en la lista Guardar como tipo y haga clic en Exportar.
  18. En el cuadro de diálogo Exportar XML, haga clic en Más opciones.
  19. En el cuadro de diálogo Exportar XML, seleccione la ficha Datos. En Registros para exportar, active la casilla Aplicar filtro existente y haga clic en Aceptar.

Access 2007

  1. Abra la base de datos de ejemplo Neptuno.
  2. En la ficha Crear, haga clic en Diseño de la consulta y, después, haga clic en Cerrar.
  3. En la ficha Diseño, haga clic en Vista SQL en el grupo Resultados.
  4. En la ventana Consulta, pegue la siguiente consulta:
    SELECT Customers.[First Name]
    FROM Customers;
    Nota: puede ver que se quita el criterio de la consulta. Por tanto, la consulta no contiene ningún carácter comodín.
  5. Haga clic en el botón de Microsoft Office y, a continuación, haga clic en Guardar.
  6. En el cuadro Nombre de la consulta del cuadro de diálogo Guardar como, escriba Consulta1 y haga clic en Aceptar.
  7. En la ficha Inicio, en el grupo Vistas, haga clic en Vista y, a continuación, haga clic en Vista Hoja de datos.
  8. En la ficha Inicio, haga clic en Avanzado en el grupo Ordenar y filtrar y, a continuación, haga clic en Filtro u orden avanzado.
  9. En la lista Campo, seleccione Nombre
  10. En el cuadro Criterios bajo Nombre, pegue el código siguiente:
    Like "A*"
  11. En la ficha Inicio, haga clic en Avanzado en el grupo Ordenar y filtrar y, a continuación, haga clic en Aplicar filtro u orden.
  12. Haga clic en el botón de Microsoft Office y, a continuación, haga clic en Guardar.
  13. Haga clic con el botón secundario en Consulta1, seleccione Exportar, haga clic en Archivo XML y, a continuación, haga clic en Aceptar.
  14. En el cuadro de diálogo Exportar XML, haga clic en Más opciones.
  15. En el cuadro de diálogo Exportar XML, haga clic en la ficha Datos.
  16. En Registros para exportar, seleccione la opción Aplicar filtro existente y haga clic en Aceptar.
  17. En el cuadro de diálogo Exportar: archivo XML, haga clic en Cerrar.

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Más información


Pasos para reproducir el problema en Access 2003

  1. Abra la base de datos de ejemplo Neptuno.
  2. En el menú Insertar, haga clic en Consulta.
  3. En el cuadro de diálogo Nueva consulta, seleccione Vista Diseño y, a continuación, haga clic en Aceptar.
  4. En el menú Ver, haga clic en Vista SQL.
  5. En la ventana Consulta, pegue la siguiente consulta:
    SELECT Customers.CustomerID
    FROM Customers
    WHERE (((Customers.CustomerID) Like "A*"));
  6. Seleccione Guardar en el menú Archivo.
  7. En el cuadro Nombre de la consulta de Guardar como, escriba Consulta1.
  8. En el menú Archivo, haga clic en Cerrar.
  9. Haga clic con el botón secundario del mouse en Consulta1 y, a continuación, seleccione Exportar.
  10. En el cuadro de diálogo Exportar consulta 'Consulta1' a..., seleccione XML en la lista Guardar como tipo y, a continuación, haga clic en Exportar.
  11. En el cuadro de diálogo Exportar XML, seleccione Aceptar para guardar los archivos relacionados de XML en la ubicación predeterminada.
  12. Abra en Microsoft Internet Explorer el archivo XML exportado.

    Podrá observar que el archivo XML basado en la consulta indicada no contiene ningún registro.

Referencias


Para obtener más información sobre la sintaxis de ANSI 92, escriba sobre modo consulta sql ansi en el Ayudante de Office y, a continuación, haga clic en Buscar.