FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Filtrar un resultado en DBGRID desde dos combobox
Buenas,
Tengo un problema, tengo una base de datos con un campo MES que me guarda el nombre del mes en curso, eje.: Marzo, Abril, Agosto. Tengo un formulario con un DBGRID donde quiero mostrar un resultado, el hecho es que tengo dos combobox "CMBDESDE" y "CMBHASTA" quiero que en el DBGRID se me filtren los resultados que seleccione en los dos combobox, es decir; Coloco en CMBDESDE: Enero y en CMBHASTA: Abril, en el dbgrid me mostraria todos los resultados que esten entre Enero y Abril (Enero, Febrero, Marzo, Abril) Sera posible una mano para eso...estoy algo parado en este paso! Gracias
__________________
"Ningun precio es alto por el privilegio de ser uno mismo..." |
#2
|
||||
|
||||
en el evento onChange de los combos:
__________________
self.free; |
#3
|
|||
|
|||
No me muestra resultado alguno en el dbgrid!
__________________
"Ningun precio es alto por el privilegio de ser uno mismo..." |
#4
|
||||
|
||||
me parece que en lugar de filtrar por el nombre del mes debes hacer un artificio para filtrar por el "numero" del mes
__________________
Dulce Regalo que Satanas manda para mi..... |
#5
|
||||
|
||||
Hola.
Por supuesto funciona si en los combos tenés los nombres de los meses y asignas ComboBoxChange al evento OnChange de los dos combos... Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 27-04-2011 a las 20:24:16. |
#6
|
|||
|
|||
Muchas gracias por su ayuda, hice exactamente lo que me dijiste...le asigne Comboboxchange a ambos comobox, y ajuste el codigo a mi proyecto...Sin embargo los resultados no se ajustan a lo que quiero! Explico:
Si Selecciono ENERO y DICIEMBRE no me muestra resultados... Si selecciono ENERO y NOVIEMBRE me muestra solo algunos resultados (ENERO, FEBRERO, MARZO, MAYO, JULIO, JUNIO, NOVIEMBRE) aun cuando también tengo ABRIL, DICIEMBRE en mis registros... ¿A que podría deberse?
__________________
"Ningun precio es alto por el privilegio de ser uno mismo..." |
#7
|
||||
|
||||
no lo se no he podido hacer pruebas
pero me parece que deberias hacer el filtro por numero de mes en lugar de nombre de mes salvo error u omision
__________________
Dulce Regalo que Satanas manda para mi..... |
#8
|
||||
|
||||
Hola ZiriusB.
Es realmente extraño, a mí me funciona correctamente esté o no la columna ordenada alfabéticamente... La prueba la realizé sobre Firebird, pero para estar seguro que trabajemos sobre los mismos datos y no sé que BD estás usando, el código lo ajusté a la tabla Country (DBDDEMOS) ya que viene con Delphi. Te adjunto la prueba para que puedas realizar las comprobaciones necesarias y si encontras algún caso en que no se cumpla la condición del filtro, lo vemos en concreto. Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 04-05-2011 a las 07:49:29. |
#9
|
||||
|
||||
es un problema de mal diseño, si quieres hacer un filtro por mes, debes definir dicho campo (en tu base de datos) como entero, si lo defines como cadena, el filtro no funcionara por que al hacer el filtro el componente dataset no sabra que 'MARZO' < 'ABRIL' puesto que el componente hace la comparacion por orden alfabetico cuando se trata de cadenas, suerte, salu2
__________________
nuestro carácter está reflejado en cada línea de código que escribimos. |
#10
|
||||
|
||||
Aquí tienes un ejemplo de cómo realizar filtros sobre un Grid. Es ente caso se usa un exto de un Edit, pero la mecánica es la misma si el valor sale de un combo.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#11
|
||||
|
||||
Hola.
Lo que lleva rato diciendo oscarac y ahora ratifica JoseAntonio lo dice todo: El algorítmo es correcto, pero no es aplicable a este caso... Se me escapó el carácter ordinal de los nombres de los meses que no es precisamente el alfabético... Una idea que se me ocurre (y no es la mejor por que ensucias la tabla), es agregar un campo 'NroMes' de tipo numérico que se corresponda con el mes del registro. En el DBGrid deberías agregar todas las columnas menos la correspondiente a ese campo, luego podrías hacer:
No es "la" solución, pero no se me ocurre otra cosa usando filtros. Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 28-04-2011 a las 15:04:14. |
#12
|
|||
|
|||
Ok adopte una mejor opcion y mas rapida, luego pruebo con los nombres...
Me fui por los Numeros, una cosa que quiero dejar clara es que yo no tomo los valores de la base de datos para cargarlos a los Combobox, en la Propiedad ITEMS ahi coloco (1,2,3,4,5,6,7,8,9,10,11,12) ya que es una tabla en donde van a ir varios trabajadors con el mismo mes. Lo cambie a numeros y todo bien hasta cierto punto...Al seleccionar del mes 1 al mes 11 me selecciona solo (1,11,12) supongo que solo esta tomando el primer numero "1" al seleccionar del mes 2 al mes 12,11 o 10 no me muestra resultados sin embargo si selecciono del mes 2 al 9 si me hace bien la busqueda! Gracias por su ayuda, la aprecio mucho...
__________________
"Ningun precio es alto por el privilegio de ser uno mismo..." |
#13
|
||||
|
||||
mmm
entonces el campo no es entero, debe ser de tipo caracter por eso no te funciona
__________________
Dulce Regalo que Satanas manda para mi..... |
#14
|
|||
|
|||
Pues si, de hecho con tantas cosas en la cabeza no guarde el cambio que hice a Entero! por eso aun no lo tomaba...gracias, resuelto!!
Un millon por sus opiniones y ayuda! fueron un gran impulso!
__________________
"Ningun precio es alto por el privilegio de ser uno mismo..." |
#15
|
||||
|
||||
Muchachos, he querido filtrar un dblookupcombobox y me sale un error. me llama la atención por que lo he hecho tantas veces y ahora no me sale, no se si se me está pasando algo...
Les envío el código y el mensaje de error... Código:
procedure TFBuscar.DBLCBCargoClick(Sender: TObject); begin FPrincipal.TBCargos.Open; FPrincipal.TBCargos.Filter:= 'Cátedra o Cargo =' +QuotedStr(DBLCBCargo.Text); FPrincipal.TBCargos.Filtered:= True; DBLCBIDSARH.Enabled:= True; end; TBCargos: Field 'C' not found. FPrincipal: Formulario principal donde se encuentra el ttable. TBCargos: Ttable DBLCBCargo: dblookupcombobox donde programo el evento DBLCBIDSARH: otro dblookupcomboboxque sólo habilito cuandoya se hizo el fintrado. Gracias por su tiempo... Saludos. |
#16
|
||||
|
||||
el campo de tu tabla tiene acentro? Cátedra????
no estoy seguro (porque no uso filtros)... pero no creo que el operador logico "o" exista en delphi Prueba asi
__________________
Dulce Regalo que Satanas manda para mi..... |
#17
|
||||
|
||||
"Cátedra o Cargo" es el nombre del campo.
=p Pruebo lo que me pasaste... Gracias por responder. |
#18
|
||||
|
||||
ah pues pense que eran 2 campos diferentes.....
los nombres de los campos que uso no son asi
__________________
Dulce Regalo que Satanas manda para mi..... |
#19
|
||||
|
||||
Gracias chicos, ahí resolví el problema, no se por qué pero no me acepta nombre de campos que contenga más de una palabra...
En lugar de poner "Cátedras o Cargos" puse "Cargos" Gracias por todo chicos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Se puede? (Filtrar desde dentro de un DBGrid?) | b3nshi | Conexión con bases de datos | 3 | 27-04-2010 21:57:09 |
Filtrar un campo en un ComboBox | zeta2 | Varios | 12 | 02-07-2008 12:17:41 |
Filtrar ADOTable al seleccionar combobox | jeysi | Varios | 3 | 24-01-2008 10:48:36 |
FastReport - ComboBox y resultado SQL | hecospina | Varios | 6 | 23-01-2008 23:19:30 |
Multiplicando el resultado de un ComboBox | Camilo | Conexión con bases de datos | 10 | 06-12-2007 18:57:14 |
|