Ver Mensaje Individual
  #11  
Antiguo 28-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 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