Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-04-2011
Avatar de JoseAntonio
JoseAntonio JoseAntonio is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lima - Ciudad de los Reyes.
Posts: 87
Poder: 19
JoseAntonio Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 28-04-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
Responder Con Cita
  #3  
Antiguo 28-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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:

Código Delphi [-]
...
function MesANro(Mes: string): Integer;
const 
   Nombre: array[1..12] of string=('ENERO','FEBRERO','MARZO','ABRIL','MAYO',
  'JUNIO','JULIO','AGOSTO','SEPTIEMBRE','OCTUBRE','NOVIEMBRE','DICIEMBRE');
var
  i: Byte;
begin
  i:= 1;
  while Nombre[i] <> UpperCase(Mes) do Inc(i);
  Result:= i;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  with DBGrid1.DataSource do
  begin
    DataSet.Filtered:= False;
    DataSet.Filter:= 'NroMes >= '+
            QuotedStr(IntToStr(MesANro(ComboBox1.Items[ComboBox1.ItemIndex])))+
                     ' AND NroMes <= '+
            QuotedStr(IntToStr(MesANro(ComboBox2.Items[ComboBox2.ItemIndex])));
    DataSet.Filtered:= True;
  end;
end;

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 14:04:14.
Responder Con Cita
  #4  
Antiguo 28-04-2011
ZiriusB ZiriusB is offline
Miembro
 
Registrado: oct 2010
Posts: 86
Poder: 14
ZiriusB Va por buen camino
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..."
Responder Con Cita
  #5  
Antiguo 28-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
mmm
entonces el campo no es entero, debe ser de tipo caracter por eso no te funciona
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 28-04-2011
ZiriusB ZiriusB is offline
Miembro
 
Registrado: oct 2010
Posts: 86
Poder: 14
ZiriusB Va por buen camino
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..."
Responder Con Cita
  #7  
Antiguo 21-05-2011
Avatar de zeta2
zeta2 zeta2 is offline
Miembro
 
Registrado: feb 2007
Posts: 95
Poder: 18
zeta2 Va por buen camino
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;
El mensaje de error que me sale es:

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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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 20:57:09
Filtrar un campo en un ComboBox zeta2 Varios 12 02-07-2008 11:17:41
Filtrar ADOTable al seleccionar combobox jeysi Varios 3 24-01-2008 09:48:36
FastReport - ComboBox y resultado SQL hecospina Varios 6 23-01-2008 22:19:30
Multiplicando el resultado de un ComboBox Camilo Conexión con bases de datos 10 06-12-2007 17:57:14


La franja horaria es GMT +2. Ahora son las 17:28:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi