[RESUELTO] Formulario con Cuadros Combinados que filtren

Discute sobre las herramientas de la base de datos
Responder
Sheridan
Mensajes: 48
Registrado: Lun Abr 22, 2019 8:32 pm

[RESUELTO] Formulario con Cuadros Combinados que filtren

Mensaje por Sheridan »

Buenas tardes , seguro que a RMG o a Mauricio le arden los ojos con el titulo del tema (lo siento , sé lo manido que esta ) ...pero es que he leido y buscado y no encuentro un tutorial que me ayude con este problema...o que entienda con mi nivel de novato..

A ver...expongo mi caso; Estoy intentadno crear una BD de lentes de contacto ...He creado varias tablas con información diversa sobre estas lentillas (Fabricantes, Materiales, Reemplazos, Diametros ,Radios....) ,a través de un formulario con listas desplegables voy seleccionando los campos y he grabado ya cerca de 90 lentillas...Tambien he hecho una consulta simple en la que me aparece todo el listado y lo he incluido en el formulario(aunque no sirve para nada) ...Y hasta aquí llego.. :roll:

Pretendo crear formulario de busqueda con un cuadro de tabla en el que se me filtren las lentillas de los campos que quiera ...por ejemplo a traves de un 1º cuadro combinado llamado "Reemplazo" que pueda seleccionar las Diarias , luego a traves de un 2º cuadro combinado que filtre las que ademas sean de un Material "x" por ejemplo "Etafilcon A" y por ejemplo en un 3º cuadro combinado que me filtren las que ademas sean del fabricante "x"...y si es preciso un 4º o un 5º para que al final el cuadro me de a escoger solo las que cumplan esos criterios...

Mil Gracias por vuestra ayuda.!!
Adjuntos
Lentillas_Open.7z
(40.95 KiB) Descargado 266 veces
Última edición por Sheridan el Vie May 10, 2019 7:26 pm, editado 2 veces en total.
Windows 10 64 bit + OpenOffice 4.1.6 y Deepin 15.10 + Open Office
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Formulario con cuadros combinados que filtren registros

Mensaje por Longi »

Buenas!

Lo que pides creo que ya está respondido unas cuantas veces (aunque yo no lo he usado)
Primero, decir que el subformulario, si lo relacionas con algún campo del formulario superior, ya te hace el filtro que cumpla la condición. Según lo tienes, sin relación, lógicamente no sirve de nada.
Te dejo el código que uso en algún formulario, aunque yo lo estoy usando en campo de texto, no en combobox o listbox, pero funcionaría igual:

Código: Seleccionar todo

Sub BUSCAEXPLOTACION2(Event As Object)
   Dim oTxt As String
   Dim oFilter As Object
   Dim oFormCtl As Object
   Dim oCtrl As Object
   Dim sCampo1
   Dim sCampo2
   oTxt = Event.Source.getText()
   sCampo1 = Event.Source.Model.Parent. EXPLOTACION().Name
   oCtrl = Event.Source
   oFormCtl = oCtrl.Model.Parent
   oFormCtl.ApplyFilter = False
   If oTxt <> "" then
      oFormCtl.Filter = " UPPER(" & sCampo1 & ") LIKE " + "UPPER('%" & oTxt & "%')" 'ENCUENTRA SI CONTIENE ALGO DE LA TECLA PULSADA
      oFormCtl.ApplyFilter = True   
   Else
      oFormCtl.ApplyFilter = False
   End if
   oFormCtl.Reload
   oCtrl.SetFocus()
   oFormCtl.ApplyFilter = False
End Sub
Lo pondrías en el evento "al perder el foco" y con las modificaciones necesarias, claro.
Otra opción es la de ir cambiando la fuente de datos (SQL)del formulario en función de las opciones escogidas

En caso de búsqueda (no filtro) tengo este otro ejemplo:

Código: Seleccionar todo

Sub BUSCAEXPLOTACION(Event As Object)
   Dim oForm As Object, oCtrl As Variant
   Dim ClonResSet As Object
   Dim Sigue As Boolean
   oForm= Event.Source.Model.Parent
   ClonResSet=oForm.CreateResultSet()               ' Clona el conjunto de datos
   oCtrl=oForm.GetByName("BUSQUEDA EXPLOTACION").Text  ' Capta el IdCliente a buscar
   If oCtrl ="" Then Exit Sub
   Sigue=True
   If ClonResSet.First() Then                       ' Si hay algún registro en el conjunto
       Do                                            ' Lo recorre hasta encontrar el Id
         If ClonResSet.GetString(1)= oCtrl Then        ' Pongo 1 porque supongo que el Id es el primer campo en la tabla
            Sigue=False
            oForm.Absolute(ClonResSet.Row)          ' Cuando lo encuentra, posiciona el formulario
         End If
      Loop While ClonResSet.Next() And Sigue
   End If
   if Sigue=True then
    MsGBOX "LO SENTIMOS, LA EXPLOTACIÓN NO SE ENCUENTRA"
    End if
   oForm.GetByName("BUSQUEDA EXPLOTACION").Text=""       
End Sub
Espero que te sirva como punto de partida.

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: Formulario con cuadros combinados que filtren registros

Mensaje por RMG »

Hola,

Creo que eso esta contestado. De todas formas este es el enlace, comprueba si te sirve.

https://mega.nz/#!EokFhIrR!n__Sld0yfO-s ... Dpw2F_FHjI

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)
Sheridan
Mensajes: 48
Registrado: Lun Abr 22, 2019 8:32 pm

Re: Formulario con cuadros combinados que filtren registros

Mensaje por Sheridan »

Dios mío.. no sé para que pregunto..vamos a ver,no se si echarme a reir o ponerme a llorar de lo poco que sé...
A ver ,el problema es que esto es demasiado avanzado para mi, .. ¿ existe algún manual paso a paso en la que se pueda aprender con un ejemplo a hacer estas busquedas desde un formulario ; y a ser posible sin usar macros !!!! ...es que puede que sea muy ceporro pero pensar en todos los ceporros que hay por el mundo y lo que os lo vamos a agradecer..!!! Gracias x 1000
Windows 10 64 bit + OpenOffice 4.1.6 y Deepin 15.10 + Open Office
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Formulario con cuadros combinados que filtren registros

Mensaje por RMG »

Hola,

Sin macros, la forma más simple es con los filtros de la barra de navegación, además tiene el buscador (icono prismaticos). Para el uso de los filtros es situarte en encima del campo a buscar y picar filtro automatico, si quieres hacer más filtros es ir haciendo lo mismo en los registros ya filtrados.

En cuanto a tutorial de Base en este enlace tienes varios.

https://wiki.open-office.es/Base

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)
Sheridan
Mensajes: 48
Registrado: Lun Abr 22, 2019 8:32 pm

Re: Formulario con cuadros combinados que filtren registros

Mensaje por Sheridan »

Hola RMG,gracias por tu ayuda,pues la verdad es que la base de datos (EjemplosFiltros) , concretamente el formulario; "Filtro_TeclaPulsada" es precisamente lo que me gustaría conseguir !! :ugeek: el icono de prismáticos se me queda algo corto ..

y a ver, he intentado adaptar los 4 modulos macro que tiene tu ejemplo a mi base de datos y algo me debo haber dejado porque no me filtra... :crazy: te adjunto las modificaciones que he hecho en el formulario ..

Un saludo.
Adjuntos
Lentillas_Open.7z
(50.98 KiB) Descargado 228 veces
Windows 10 64 bit + OpenOffice 4.1.6 y Deepin 15.10 + Open Office
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Formulario con cuadros combinados que filtren registros

Mensaje por RMG »

Hola,

Te falta poner los datos del campo donde filtrar y como quieres que lo haga con empieza o con contiene. Para ello debes hacer lo siguiente.

En propiedades del cuadro texto buscador en la propiedad Nombre debes poner Contiene, si quieres que filtre cuando detecte esas letras o puedes poner Empieza si quieres que filtre según vaya detectando que empieza por esas letras. De esta forma le estas diciendo la forma de buscar.

En las mismas propiedades en Información adicional debes poner el campo donde quieres hacer el filtro, en este caso NombreFab.

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)
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Formulario con cuadros combinados que filtren registros

Mensaje por Longi »

Buenas!
Ya sé que la cosa va por otros derroteros, pero Roberto Benítez tiene un 'libro' (explicaciones) sobre formularios, y una parte la dedica a los filtros.
El problema es que está en inglés, pero es interesante.

http://www.baseprogramming.com/FormsAndDialogs.pdf

De todos modos ¿no estaría bien plantearse el diseño de base de otra manera?
Yo con todo con índices me vuelvo loco y me pierdo en la estructura.

Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Sheridan
Mensajes: 48
Registrado: Lun Abr 22, 2019 8:32 pm

Re: Formulario con cuadros combinados que filtren registros

Mensaje por Sheridan »

Gracias por enlace Longi!! Lo leeré aunque esté en inglés :bravo: tengo mucho interés en aprender a hacer una base de datos..
Seguramente, tanto índice como dices, puede resultar lioso pero en su momento me parecía que era la opción más recomendable y ahora ya metido preferiría terminar con ella ..seguramente en un futuro puede que me replantee hacerla de otra forma..

RMG he hecho los cambios que me indicabas en las propiedades del cuadro de texto pero me aparece un error de sintaxis SQL..
Me encantaría que funcionara.. :crazy:
Lo adjunto por si sabéis dónde la he líado..
Adjuntos
Lentillas_Open error SQL.7z
(50.72 KiB) Descargado 271 veces
Windows 10 64 bit + OpenOffice 4.1.6 y Deepin 15.10 + Open Office
Sheridan
Mensajes: 48
Registrado: Lun Abr 22, 2019 8:32 pm

Re: Formulario con cuadros combinados que filtren registros

Mensaje por Sheridan »

Alguna ayuda con el formulario que puse....please.
Windows 10 64 bit + OpenOffice 4.1.6 y Deepin 15.10 + Open Office
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Formulario con cuadros combinados que filtren registros

Mensaje por RMG »

Hola,

En las propiedades del formulario, en filtrar tienes puesto un filtro que debes eliminar.

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)
Sheridan
Mensajes: 48
Registrado: Lun Abr 22, 2019 8:32 pm

Re: [RESUELTO] Formulario con Cuadros Combinados que filtren

Mensaje por Sheridan »

Guau!! RMG eres un crack!!! No me puedo creer que con esa modificación se haya conseguido hacer funcionar!!! :mrgreen:

Muchísimas gracias por vuestra ayuda desinteresada sois unos fenómenos, quedó muy agradecido a este foro .

:bravo:
Windows 10 64 bit + OpenOffice 4.1.6 y Deepin 15.10 + Open Office
Responder