[RESUELTO] Informe de datos de formulario con filtro

Discute sobre las herramientas de la base de datos

[RESUELTO] Informe de datos de formulario con filtro

Notapor pmartimor » Jue Mar 08, 2018 2:19 pm

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

Código: Seleccionar todo   Expandir vistaContraer vista
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   Expandir vistaContraer vista
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 6 en clientes Windows 10, 7, XP y Linux Ubuntu 16.04. Servidor de datos Linux Red Hat. Samba 4.
pmartimor
 
Mensajes: 38
Registrado: Jue Mar 08, 2018 2:11 pm

Re: Informe de datos de formulario con filtro

Notapor Longi » Jue Mar 08, 2018 4:49 pm

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.5, en Windows 10
Openoffice 4.1.3, en Windows 7
Libreoffice 6.0, en Windows 10
Longi
 
Mensajes: 357
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Informe de datos de formulario con filtro

Notapor RMG » Jue Mar 08, 2018 5:04 pm

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   Expandir vistaContraer vista
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.5 y LibreOffice 5.4.5.1 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
RMG
 
Mensajes: 3255
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España


Volver a Base

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados