Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta SQL por Mes y Año (https://www.clubdelphi.com/foros/showthread.php?t=61123)

Caro 27-10-2008 05:32:42

Cita:

Empezado por lKinGl (Mensaje 322547)
hay forma de que este datatime picker me muestre solo mes y año?

o con 2 combobox 1 que muestre los meses y otro con los años

combobox 1 con formato 99 y el combobox2 con formato 9999

Hola como te dice Marcelo, es depende de como tu quieras mostrar. Con el DateTimePicker mostrar solo mes y año en el calendario no se puede, pero si le puedes dar formato en la propiedad Format -> MM/yyyy , ahora si tu quieres muestras en Combos o un MaskEdit con el formato que dices o utilizar un combo para los meses y un SpinEdit para los años, donde le asignarias un valor minimo y maximo en sus propiedades MinValue y MaxValue.

Saluditos

lKinGl 27-10-2008 05:53:26

Salu2,

gracias al código de caro he podido hacer unas modificaciones y adaptaciones algo engorrosas pero que cumplen exactamente con lo que quiero.... esto fue lo que hice

Combobox1 agregando en Items Enero, Febrero, MArzo, Abril, Mayo, Junio, Julio.....Diciembre

Combobox2 Agregando en Items 2008...2015

1 Edit (Aqui se muestra la fecha).

un boton aceptar que saca el calculo de la fecha y el quick report ;)

Código del Botón
Código Delphi [-]
//Declaro las variables mes y año de tipo String
edit1.visible:=false;
if ComboBox1.Text='Enero' then
  begin
    mes:='01';
  end;
if ComboBox1.Text='Febrero' then
  begin
    mes:='02';
  end;
if ComboBox1.Text='Marzo' then
  begin
    mes:='03';
  end;
if ComboBox1.Text='Abril' then
  begin
    mes:='04';
  end;
if ComboBox1.Text='Mayo' then
  begin
    mes:='05';
  end;
if ComboBox1.Text='Junio' then
  begin
    mes:='06';
  end;
if ComboBox1.Text='Julio' then
  begin
    mes:='07';
  end;
if ComboBox1.Text='Agosto' then
  begin
    mes:='08';
  end;
if ComboBox1.Text='Septiembre' then
  begin
    mes:='09';
  end;
if ComboBox1.Text='Octubre' then
  begin
    mes:='10';
  end;
if ComboBox1.Text='Noviembre' then
  begin
    mes:='11';
  end;
if ComboBox1.Text='Diciembre' then
  begin
    mes:='12'
  end;

ano:=ComboBox2.Text;
edit1.Text:='01'+'/'+mes+'/'+ano;

with Form45.Query1 do begin
   Close;
   SQL.Text := 'Select Fecha,grupo,des_cu,debe,haber '+
             'from costosygastos.db '+
             'where Extract(month from fecha) = '+IntToStr(MonthOf(StrToDate(Edit1.Text)))+
             ' and Extract(year from fecha) = '+IntToStr(YearOf(StrToDate(Edit1.Text)));
   Open;
end;
form45.QuickRep1.Preview;

de esa forma funciona como quiero :D gracias por su ayuda amigos, ha sido de mucha utilidad ;)

Caro 27-10-2008 06:01:38

Hola lking, en vez de preguntar por cada mes puedes utilizar la propiedad ItemIndex del ComboBox y tampoco necesitas hacer la conversión a fecha si ya tienes mes y año en variables.

Código Delphi [-]
  mes := IntToStr(ComboBox1.ItemIndex+1);
  ........................
   
  anyo:=ComboBox2.Text;
  edit1.Text:='01'+'/'+mes+'/'+ano;

with Form45.Query1 do begin
   Close;
   SQL.Text := 'Select Fecha,grupo,des_cu,debe,haber '+
             'from costosygastos.db '+
             'where Extract(month from fecha) = '+mes+
             ' and Extract(year from fecha) = '+anyo;
   Open;
end;
................................

Saluditos

Delphius 27-10-2008 06:03:40

¿Y que te parece si a esos ifs los reducimos?

Código Delphi [-]
procedure Tform1.ComboBox1Change(Sender: TObject);
begin
  mes := IntToStr(ComboBox1.ItemIndex + 1);
end;

No estoy seguro si es ItemIndex, o Index... no tengo Delphi a mano. La idea es que cuando selecciona una opción del combo, en mes (alguna variable global) quede guardado el string.

Siempre y cuando los meses estén ordenados del 1 al 12 va a funcionar.

Saludos,

lKinGl 27-10-2008 06:03:51

Gracias por la sugerencia caro ;) no sabia que se podia obtener de esa forma y por eo recurri a codigo brutal jejejej

Caro 27-10-2008 06:05:44

Cita:

Empezado por Delphius (Mensaje 322556)
¿Y que te parece si a esos ifs los reducimos?

Te he ganado Marcelo :D.

Saluditos

lKinGl 27-10-2008 06:06:16

jaja si los 2 hicieron el mismo codigo :D

Delphius 27-10-2008 06:07:00

Hoy estoy lerdo,
Cada vez que posteo me doy con que nuestra compañera Caro ya se me adelantó.:eek:

Bueno, como dice el dicho, primero las damas.;)
Saludos,

Delphius 27-10-2008 06:19:12

Cita:

Empezado por Caro (Mensaje 322558)
Te he ganado Marcelo :D.

Saluditos

Cita:

Empezado por lKinGl (Mensaje 322559)
jaja si los 2 hicieron el mismo codigo :D

Se aprovechan de que estoy con sueñito:D
Ya se me cierran los ojitos, y además con el calorcito que está haciendo va a ser difícil dormir bien.:mad:

No se si ir a jugar al Harvest Moon un ratito en la PC de mi hermanita:D o intentar dormir... de cualquier manera me tengo que desperar temprano:mad:. Son las 03:22 AM en Salta; 04:22 en Buenos Aires y a pesar del sueño, el calor me obliga a despegarme de la cama.

Saludos,

Caro 27-10-2008 06:27:59

Cita:

Empezado por Delphius (Mensaje 322561)
Se aprovechan de que estoy con sueñito:D
Ya se me cierran los ojitos, y además con el calorcito que está haciendo va a ser difícil dormir bien.:mad:

No se si ir a jugar al Harvest Moon un ratito en la PC de mi hermanita:D o intentar dormir... de cualquier manera me tengo que desperar temprano:mad:. Son las 03:22 AM en Salta; 04:22 en Buenos Aires y a pesar del sueño, el calor me obliga a despegarme de la cama.

Yo creo que mejor a dormir ya es muy tarde, por estos lados son las 2:30 am.

Saluditos

hecospina 27-10-2008 13:17:17

Hola
El problema que tienes es que estas comparando numeros enteros que es lo que te devuelve el extract con campos de tipo texto que es lo que tienes en los meses
Con la solucion de egostar te aparecia todo pues enero, febrero... es mayor o igual a 01,02 ..etc

Lo que debes hacer es el nombre del mes por el numero del mes, por ejemplo enero por 01, febrero por 02....

El sql no tiene problemas:)


La franja horaria es GMT +2. Ahora son las 22:41:35.

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