Pasar una consulta a código vba

Tengo una consulta sencilla en la cual evaluó el dato de un campo de formulario. Todo funciona bien. El problema que tengo es que al visualizar la consulta en sql y luego copiarla en un botón para que se ejecute me saca error. El código que me genera es el siguiente.

SELECT facturasEm.nfac, facturasEm.marcha1, facturasEm.marcha2, facturasEm.marcha3
FROM facturasEm
WHERE (((facturasEm.marcha1)=[Formularios]![marchamoCONSULTA]![marchamoB])) OR (((facturasEm.marcha2)=[Formularios]![marchamoCONSULTA]![marchamoB])) OR (((facturasEm.marcha3)=[Formularios]![marchamoCONSULTA]![marchamoB]));

Al ejecutarlo desde botón o al evento salir del campo, me saca error de sintaxis

No se porque ya que esta copiado tal cual.. La consulta por separado si se ejecuta y saca los resultados deseados..

1 Respuesta

Respuesta
2

No dices qué error te da y tampoco indicas cómo la copias en el botón: si lo haces en la línea del evento directamente, es normal que te salga un error...

Por otro lado, no puedes usar DoCmd. RunSQL o CurrrentDb. Execute con consultas de selección (las del tipo SELECT). Sí podrías usar el método QueryDef Execute:

Dim qdf As DAO.Querydef
Set qdf = CurrentDB.Querydefs("temp")
qdf.SQL = "SELECT facturasEm.nfac, facturasEm.marcha1, facturasEm.marcha2, " _
           & "facturasEm.marcha3 FROM facturasEm " _
           & "WHERE (((facturasEm.marcha1)=[Formularios]![marchamoCONSULTA]![marchamoB])) " _
           & "OR (((facturasEm.marcha2)=[Formularios]![marchamoCONSULTA]![marchamoB])) " _
           & "OR (((facturasEm.marcha3)=[Formularios]![marchamoCONSULTA]![marchamoB]));"
Qdf. Execute

O, si tienes la consulta guardada como objeto consulta, usar Docmd. OpenQuery para abrirla:

Docmd. OpenQuery "nombreConsulta"

¡Gracias! lo resolví poniéndole comillas y separando las sentencias.. tienes razón .. no se puede solo copiar.. GRACIAS..  aquí la copia por si le sirve a alguno.

SQL = "SELECT FACTURASEMATESA.NFAC, FACTURASEMATESA.conte1, facturasEmatesa.conte2, facturasEmatesa.conte3 FROM FACTURASEMATESA WHERE facturasEmatesa.conte1='" & userWindows & "' OR facturasEmatesa.conte2='" & userWindows & "' OR facturasEmatesa.conte3='" & userWindows & "'"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas