[RESUELTO] Informe de datos de formulario con filtro

Discute sobre las herramientas de la base de datos
Responder
pmartimor
Mensajes: 63
Registrado: Jue Mar 08, 2018 2:11 pm

[RESUELTO] Informe de datos de formulario con filtro

Mensaje por pmartimor »

Buenos días:
Tengo un formulario con un filtro que se aplica con un botón mediante la siguiente macro:

Código: Seleccionar todo

Sub BotonFiltroNombre(Evento As Object)
   	Dim oTxt As String
   	Dim oFilter AS Object
   	Dim Form As Object
   	Dim oCtrl As Object
   	Dim Filter As Object
   	oCtrl=Evento.Source
   	Form=oCtrl.Model.Parent
   	oFilter = Form.getByName("ctNombre")
  	oTxt = oFilter.Text
   	'oCtrl.SetFocus
   	Form.ApplyFilter = False
    If oTxt <> "" then
        Form.Filter="UCASE(NOMBRE) LIKE " + "UCASE('%"& oTxt &"%')"
        'Form.Order="NOMBE ASC"		
		Form.ApplyFilter = True	
	Else
		Form.ApplyFilter = False
	End if
	Form.Reload
	'oCtrl.SetFocus()
	Form.ApplyFilter = False 
	Evento.Source.Model.Parent.ctNombre().Text=""
End Sub
Me gustaría crear un informe partiendo de los registros que aparecen en el formulario una vez aplicado el filtro.
Saludos y gracias.

Gracias por la pronta respuesta. El problema se ha resuelto con el código siguiente:

Código: Seleccionar todo

Sub InformeBusquedas (Evento)

 Dim oConsulta As Object
 Dim Form as Object
 Dim oTxt1 As String
 Dim oCtrl As Object
 Dim oFilter AS Object
 oCtrl=Evento.Source
 Form=oCtrl.Model.Parent
 oFilter = Form.getByName("ctNombre")
 oTxt1 = oFilter.Text
 oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("ConInformeFiltrado")
 'Modificamos la consulta de modo que tome el registro actual
 If oTxt1 <> "" then
  oConsulta.Command = "SELECT * FROM ""datosninos"" WHERE ""NOMBRE"" LIKE UCASE('%" & oTxt1 & "%')"
  'El informe a mostrar
  ThisDatabaseDocument.ReportDocuments.GetByName("infGeneral").Open
  Evento.Source.Model.Parent.ctNombre().Text=""
 End If
 
End Sub
Me gustaría saber cómo se construye una SELECT que pueda incluir campos de otra tabla. Tengo dos tablas relacionadas una datosninos y otra derivacion. En la consulta del informe ya están los campos que necesito de derivacion.idderivacion y derivacion.tipoderivacion. He probado en oConsuta.Command =... con INNER JOIN, WHERE y AND, etc. pero no doy con la forma de construir la SQL para que no me dé error.
Saludos y gracias de nuevo.
Última edición por mauricio el Jue Mar 15, 2018 3:33 pm, editado 3 veces en total.
Razón: Marcar icono de resuelto
LibreOffice 5.1.0.3 en clientes Windows 10, 7, XP sobre BD MySql.
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Informe de datos de formulario con filtro

Mensaje por Longi »

Buenas!
En un principio no debiera ser complicado, pero si añades un ejemplo sin datos confidenciales podemos mirar cómo queda, antes de dar respuestas al aire que no terminen de funcionar, podríamos testar que todo va bien y después colgar la respuesta adecuada.

Un saludo!
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Informe de datos de formulario con filtro

Mensaje por RMG »

Hola,

Partiendo de la base que ya tienes el informe creado y basado en los datos de una consulta, si añades esto a la macro te debe funcionar.

Código: Seleccionar todo

Dim oConsulta As Object
'La consulta en la que se basa el informe, le llamamos conInformeFiltrado
oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("conInformeFiltrado")	
'Modificamos la consulta de modo que tome los registros actuales				
oConsulta.Command = "SELECT * FROM TuTabla WHERE TuCampo_A_Filtrar LIKE UCASE('%" & oTxt & "%')"
'El informe a mostrar
ThisDatabaseDocument.ReportDocuments.GetByName("NombreTuInforme").Open 
Saludos

EDITO: Como bien dice Longi siempre es mejor adjuntar un pequeño ejemplo.
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)
Responder