PDA

Ver la Versión Completa : Seleccionar fechas con un combo mes y otro combo año...


JairoC
14-06-2013, 15:27:33
Hola gente del foro... Estoy haciendo una consulta de Ganancias y quiero seleccionar las fechas:

Tengo 4 Combobox: Combobox_MesUno, Combobox_AnioUno, Combobox_MesDos y Combobox_AnioDos... La base de datos en Firebird y Uso Query, Datasourse, Dataset...

Quiero que al seleccionar por ejemplo: ENERO 2012 Y ENERO 2013 Me seleccione en el campo FECHA, 01/01/2012 al 31/01/2012 y 01/01/2013 al 01/01/2013...Y de allí hago las sumas necesarias.., No se me ocurre como hacerlo... Si me pueden ayudar se los agradecería....
Un saludo!!!

ecfisa
14-06-2013, 16:16:23
...
Quiero que al seleccionar por ejemplo: ENERO 2012 Y ENERO 2013 Me seleccione en el campo FECHA, 01/01/2012 al 31/01/2012 y 01/01/2013 al 01/01/2013..
Hola JairoC.

No me queda claro como es el criterio a aplicar...

En estos ejemplos:
1) Desde: ENERO 2012 - Hasta: JULIO 2012
2) Desde: AGOSTO 2012 - Hasta: ABRIL 2013

¿ Que rango debería seleccionar ?

Saludos. :)

MAXIUM
14-06-2013, 16:22:26
Puedes usar las funciones para componer y descomponer fechas.

Con esto tambien puedes usar la sentencia SQL betwen.

JairoC
14-06-2013, 16:28:35
Ejemplos: TENGO 4 Combos nada más...

Combo1= ENERO Combo2=2012
Combo3=JULIO Combo3=2012


Quiero que en una consulta me seleccione Todo el mes de ENERO 2012 (01/01/2012 al 31/01/2012) y todo el mes de JULIO 2012 (01/07/2012 AL 31/07/2012)

ecfisa
14-06-2013, 16:48:50
Ejemplos: TENGO 4 Combos nada más...

Combo1= ENERO Combo2=2012
Combo3=JULIO Combo3=2012


Quiero que en una consulta me seleccione Todo el mes de ENERO 2012 (01/01/2012 al 31/01/2012) y todo el mes de JULIO 2012 (01/07/2012 AL 31/07/2012)
Ejemplo:

...
uses DateUtils;

procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
for i := 1 to 12 do
begin
cboxMesDesde.Items.Add(LongMonthNames[i]);
cboxMesHasta.Items.Add(LongMonthNames[i]);
end;
for i := 2005 to 2013 do
begin
cboxAnioDesde.Items.Add(IntToStr(i));
cboxAnioHasta.Items.Add(IntToStr(i));
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
dd,md,yd : Word;
dh,mh,yh : Word;
FDesde, FHasta: TDate;
begin
// desde
dd := 1;
md := cboxMesDesde.ItemIndex + 1;
yd := StrToInt(cboxAnioDesde.Items[cboxAnioDesde.ItemIndex]);
// hasta
yh := StrToInt(cboxAnioHasta.Items[cboxAnioDesde.ItemIndex]);
mh := cboxMesHasta.ItemIndex + 1;
dh := DaysInAMonth(yh, mh);
// a tipo TDate
FDesde := EncodeDate(yd, md, dd);
FHasta := EncodeDate(yh, mh, dh);

ShowMessage(Format('Desde: %s - Hasta: %s',
[DateToStr(FDesde),DateToStr(FHasta)]));
end;


Saludos. :)

TiammatMX
14-06-2013, 17:50:16
^\||/ Pregunta, ¿y por qué no en lugar de CUATRO TComboBox'es, usas DOS TDateTimePicker's? Finalmente, te interesa solamente la parte de mes y año..., además que se vería más profesional y entendible.