[RESUELTO] Abrir informe desde formulario

Discute sobre las herramientas de la base de datos
Responder
Austin
Mensajes: 9
Registrado: Vie Feb 10, 2017 1:07 pm

[RESUELTO] Abrir informe desde formulario

Mensaje por Austin »

Es un tema ya visto pero no consigo que me funcione.

Me da el error: "No se pudo abrir el informe. Error de sintaxis en la instrucción SQL"

Este es el código, no consigo ver donde está el problema en la instrucción SQL

Código: Seleccionar todo

Sub ImprimirCaratula (Evento)

Dim oForm As Object
Dim iExp As Integer
Dim iTipo As Integer
Dim oConsulta As Object
Dim sSQL As String
Dim oReporte As Object
	
	oForm = Evento.Source.Model.Parent
	iExp = oForm.GetByName("fmtnExp").CurrentValue
	iTipo = oForm.GetByName("fmtTipo").CurrentValue
	sSQL = "SELECT cCaratula.Nome, cCaratula.1Apel, cCaratula.2Apel, cCaratula.nExp, cCaratula.Ano, cCaratula.Tipo, cCaratula.Data_entrada, cCaratula.Concello, cCaratula.Zona, cCaratula.Poligono, cCaratula.Parcela, cCaratula.Recinto FROM cCaratula WHERE cCaratula.nExp= " & iExp & " AND cCaratula.Tipo= " & iTipo
	oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("cCaratula")
	oConsulta.Command = sSQL
	oReporte = ThisDatabaseDocument.ReportDocuments.getByName ("iCaratula").Open

End Sub]
Adjunto la base.
Adjuntos
Cambio_Actividade_2017.zip
(112.96 KiB) Descargado 114 veces
Última edición por Austin el Jue Mar 23, 2017 1:24 pm, editado 3 veces en total.
LibreOffice 4.4.5.2
Windows10 Pro
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Abrir informe desde formulario

Mensaje por fornelasa »

Estoy lejos de ser un experto en bases de datos pero por ejemplo en tu archivo tienes una consulta llamada cCaratula que obtiene datos de la misma cCaratula y no de una tabla o de otra consulta, de acuerdo a la instrucción sql que nos indica

Código: Seleccionar todo

SELECT cCaratula.Nome, cCaratula.1Apel, cCaratula.2Apel, cCaratula.nExp, cCaratula.Ano, cCaratula.Tipo, cCaratula.Data_entrada, cCaratula.Concello, cCaratula.Zona, cCaratula.Poligono, cCaratula.Parcela, cCaratula.Recinto FROM cCaratula WHERE cCaratula.nExp= 18 AND cCaratula.Tipo= 1
o sea ¿como?
hasta donde sé las consultas se obtienen principalmente de las tablas o de otras consulta , me parece que desde aquí ya la estamos ..... :mrgreen:

Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Austin
Mensajes: 9
Registrado: Vie Feb 10, 2017 1:07 pm

Re: Abrir informe desde formulario

Mensaje por Austin »

Gracias por responder.

Si, claro, lo que quiero es obtener un registro concreto de la consulta cCaratula, el registro nExp x, Tipo y.

Al ejecutar el código de la macro modifica la consulta original cCaratula, que es:

Código: Seleccionar todo

SELECT "tPromotor"."Nome", "tPromotor"."1Apel", "tPromotor"."2Apel", "tSolicitude"."nExp", "tSolicitude"."Ano", "tSolicitude"."Tipo", "tSolicitude"."Data_entrada", "tPromotor"."Concello", "tParcela"."Zona", "tParcela"."Poligono", "tParcela"."Parcela", "tParcela"."Recinto" FROM "tSolicitude", "tPromotor", "tParcela" WHERE "tSolicitude"."NIF_Promotor" = "tPromotor"."NIF" AND "tParcela"."Id_solicitude" = "tSolicitude"."Id_solic"
y queda:

Código: Seleccionar todo

SELECT cCaratula.Nome, cCaratula.1Apel, cCaratula.2Apel, cCaratula.nExp, cCaratula.Ano, cCaratula.Tipo, cCaratula.Data_entrada, cCaratula.Concello, cCaratula.Zona, cCaratula.Poligono, cCaratula.Parcela, cCaratula.Recinto FROM cCaratula WHERE cCaratula.nExp= 18 AND cCaratula.Tipo= 1
que es exactamente lo que quiero, obtener el registro con el nExp x, Tipo y de la consulta cCaratula. El problema es que no me abre el informe porque dice que hay un error de sintaxis en la instrucción SQL. No lo veo.
Espero haberme explicado.
Adjunto otra vez la base con la consulta cCaratula original (antes de ejecutar la macro)
Adjuntos
Cambio_Actividade_2017.zip
(112.82 KiB) Descargado 127 veces
LibreOffice 4.4.5.2
Windows10 Pro
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Abrir informe desde formulario

Mensaje por RMG »

Hola,

El problema es que no puedes modificar a través de la macro la consulta basándote en ella misma (FROM) debes utilizar todo el código que hace referencia a las tres tablas, o bien utilizar la vista que has creado (esto es la mejor opción) revisa que en esta vista te falta el campo "Recinto"

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Austin
Mensajes: 9
Registrado: Vie Feb 10, 2017 1:07 pm

Re: Abrir informe desde formulario

Mensaje por Austin »

Perfecto, solucionado.

Muchas gracias.

PD: No se te escapa nada, vaya ojo que tienes (además también faltaba el campo recinto, como dices) ;-)
LibreOffice 4.4.5.2
Windows10 Pro
Responder