PDA

Ver la Versión Completa : Consultar solo el mes de una fecha


rufo
23-08-2012, 19:11:43
Buenas tardes amigos, necesito su ayuda como mostrar el mes de una fecha, es decir yo almaceno en un campo la fecha escogida del objeto Datetimepicker y ahora lo que yo quiero hacer es que en un combobox en su propiedad Items agrego los nombres de los meses y en un boton quiero hacer que me consulte el mes seleccionado del combobox y mostrar datos en unos listbox, hice algo similar pero la fecha la tengo separada es decir

DIA MES AÑO
12 ENERO 2012

Pero ahora quiero evitar que se capturen en edits y puse un Datetimepicker y no se como hacer la consulta que les menciono anteriormente, la consulta que hice con la fecha separada use este codigo:


if combobox2.Text<>'' then
begin
with dm1.Q_Vmes do
begin
active:=false;
sql.Clear;
sql.Add(' select * from ventas_mensuales ');
sql.add('where mes = :mes');
ParamByName('mes').Value:= ComboBox2.Text;
active:=true;
if recordcount=0 then
while not(eof) do
begin
listbox8.Items.add(fieldbyname('id_folio').asstring);
listbox9.Items.add(fieldbyname('nombre').asstring);
next;
end;
end;


Pero no se como usarlo con el campo fecha ya que tengo que extraer el mes, espero me ayuden y gracias de antemano.

ecfisa
23-08-2012, 19:25:50
Hola rufo.

¿ El campo 'mes' es de tipo entero o de cadena de caractes ? Si está declarado como cadena de caracteres, ¿ Cuál es el formato 'mm' o 'm' ?

Saludos.

rufo
23-08-2012, 19:29:37
El campo Mes es caracter pero ese no quiero consultar si no el campo fecha que es de tipo fecha dd/mm/aa pero la consulta quiero tomarlo de un combobox que solo tiene los meses es su propiedad Items y si selecciono el mes de MAYO y al dar clic al boton me arroje o me muestre resultados pero del campo fecha, espero me halla entendido y gracias por responder.

ecfisa
23-08-2012, 20:42:35
Hola rufo.
es decir yo almaceno en un campo la fecha escogida del objeto Datetimepicker
De este texto yo había interpretado que lo tomabas de un TDateTimePicker de allí mi pregunta, por que si es de tipo entero:

ParamByName('mes').AsInteger := MonthOf(DateTimePicker1.Date);


Si es string sin formato :

ParamByName('mes').AsString := IntToStr(MonthOf(DateTimePicker1.Date));


Si es string con formato a dos caracteres:

ParamByName('mes').AsString := StringOfChar('0', 2-Length(IntToStr(MonthOf(DateTimePicker1.Date)))) +
IntToStr(MonthOf(DateTimePicker1.Date));

En los tres ejemplos anteriores debe estar incluida la unidad DateUtils.


Ahora si la fecha es tomada de un ComboBox y los items (meses) están en órden cronológico, para string formato a dos caracteres:

with ComboBox1 do
if ItemIndex <> -1 then
ParamByName('mes').AsString := StringOfChar('0',2-Length(IntToStr(ItemIndex+1))) + IntToStr(ItemIndex+1);


Sin formato:

with ComboBox1 do
if ItemIndex <> -1 then
ParamByName('mes').AsString := IntToStr(ItemIndex+1);


Saludos.