Problema con botón en Formulario para Borrar, Anexar y crear archivo Xml

En un Formulario independiente tengo un botón que tiene el siguiente código:

Private Sub Comando74_Click()

CurrentDb. Execute "ConBorrarMayores"

CurrentDb. Execute "ConAnexarMayores"

Call CreaArchivoXml

End sub

"ConBorrarMayores" es una consulta de eliminación y "ConAnexarMayores" es una consulta de anexar. Esta última no se ejecuta bien, ya que se resalta la fila

CurrentDb. Execute "AnexarMayores"

Y da el siguiente error

“Se ha producido el error ’3061’ en tiempo de ejecución.

Poco parámetros. Se esperaba 4.”

Pero si lo cambio por

DoCmd. OpenQuery "AnexarMayores"

No da ningún problema.

Y en cuanto a CreaArchivoXml, llama a un módulo cuyo código es

'------------------------------------------------------------

' CreaArchivoXml

'------------------------------------------------------------

Function CreaArchivoXml ()

On Error GoTo CreaArchivoXml _Err

    DoCmd.RunCommand acCmdSavedExports

CreaArchivoXml _Exit:

    Exit Function

CreaArchivoXml _Err:

    MsgBox Error$

    Resume CreaArchivoXml _Exit

End Function

Lo que me hace es enviarme a la pantalla de Exportaciones Guardadas.

Por lo que me gustaría saber como puedo solucionar el problema de la consulta, y como puedo realizar la exportación sin tener que entrar en la pantalla de Exportaciones Guardadas.

1 respuesta

Respuesta
2

A ver cómo te lo explico...

Con CurrentDb. Execute, ejecutas directamente desde el motor de la base de datos la consulta, saltándote toda la parte de la UI (formularios...). Con DoCmd. OpenQuery trabajas directamente sobre la UI, como si abrieras la consulta de forma manual.

Si te da el error de que se esperaba un parámetro, y dado que no tengo el diseño de tu consulta, supondré que tiene algo que hace referencia a un control (cuadro de texto, combinado...) de un formulario, y por ese motivo con CurrentDb te salta el error (no es capaz de interpretar lo que está en el formulario) y con el DoCmd te funciona correctamente.

Segunda cuestión: ¿En serio te sorprende que te lleve a la ventana de exportaciones guardadas cuando construyes una función para que te lleve a esa ventana (DoCmd. RunCommand acCmdSavedExports)?

Si quieres exportar un objeto a XML, es tan simple como usar Application.ExportXml (https://msdn.microsoft.com/es-es/vba/access-vba/articles/export-data-schema-and-related-tables-to-xml )

También puedes hacerlo con DoCmd.OutputTo (https://msdn.microsoft.com/es-es/vba/access-vba/articles/docmd-outputto-method-access )

Y hay otras muchas formas de exportar a un XML, que requieren más o menos código..., pero a ver si con las dos de arriba te apañas.

Un saludo.


¡Gracias! 

Muchas gracias por tu interés y respuesta.

Tienes razón la consulta contiene un campo calculado (utilizando SIInm) que se obtiene de un formulario que contiene dos campos fechas y dos campos moneda. He mirado pero no soy capaz de encontrar el error, en todo caso puedo seguir viviendo utilizando OpenQuery si no llego a una solución.

En cuanto a la segunda cuestión, siempre intento antes de realizar una pregunta en este foro llegar a una solución ya sea con lo poco que se de Access o mirando en los foros y cuando ya me choco con la pared entonces recurro a este foro, el cual en más de una vez me ha sacado las castañas del fuego, por lo que estoy muy agradecido.

Para guardar el archivo xml al final he utilizado el siguiente código, sacado del primer enlace que comentabas. Donde se indica el nombre de la consulta y la ruta donde ira el archivo XML.

Application.ExportXML acExportQuery, "CuotaMayores", _

"C:\Asociación\Tesorería\Cuotas\CuotaMayores.xml"

Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas