Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Fitrar por fecha actual (https://www.clubdelphi.com/foros/showthread.php?t=53708)

javimax182 27-02-2008 18:02:15

Fitrar por fecha actual
 
Hola mi nombre es javier, estoy trabajando con un query en delphi 7.
Lo que yo quiero es Filtrar por las ventas que se realizaron en el dia, ya que la tabla posee un campo llamado "Fecha de Compra". Despues lo que quisiera es filtrar las ventas en el ultimo mes, entre otras...
Les ruego que me ayuden, porque lo necesito inmediatamente. No encontre un hilo que me lo pudiera responder, si alguien sabe de un que me avise. Gracias.

Caral 27-02-2008 18:15:43

Hola javimax182
Bienvenido al club.
Es dificil dar una opinion sin suficientes datos.
Delphi 7. Bien
Base de datos ????
Componentes con que enlazas la tabla ???
Otros datos que puedas aportar
Saludos

Delphius 27-02-2008 18:20:22

Hola javimax182,
Bienvenido a clubdelphi. Como recién ingresas te informo sobre la guia de estilo, recomiendo su lectura.

Con respecto a tu problema, hay muchos hilos sobre el tema. Lo puedes hacer con Filter,con una SQL...

Sería bueno que nos aportes más detalles:
¿Que motor usas?
¿Que componentes usas?
¿Puedes mostrarnos un poco de como estás trabajando?

Saludos,

javimax182 27-02-2008 18:20:33

Utizo una tabla Paradox 7, un dbgrid, un datasoure, un query y un combobox en donde yo selecciono el periodo de tiempo que yo quisiera que filtre (Todos, Hoy, ultimos 10 dias, Ultimos 30 dias y Este mes).
Pero no se como hacer ese tipo de filtrado.
Por favor ayudenme. Gracias.

juanpe 27-02-2008 18:20:49

query.sql.clear;
query.sql.add('select * from Ventas where fecha_ventas between :fechainicio and :fechafin');
query.parambyname('fechainicio').asdate:= date-15; //la fecha de hace 15 dias
query.parambyname('fechafin').asdate:= date; //la fecha de hoy
query.execsql;

Espero que te valga.

javimax182 27-02-2008 18:26:58

Gracias por eso pero, como es para filtrar por las ventas que se hicieron en el dia. y como es para filtrar las ventas que se hicieron en el mes actual, por ejemplo:Febrero.

juanpe 27-02-2008 18:31:28

Del dia, por ejemplo

query.sql.clear;
query.sql.add('select * from Ventas where fecha_ventas like :fecha);
query.parambyname('fecha').asdate:= date;
query.execsql;

De febrero

query.sql.clear;
query.sql.add('select * from Ventas where fecha_ventas between :fechainicio and :fechafin');
query.parambyname('fechainicio').asstring := '1/02/2008';
query.parambyname('fechafin').asstring := '29/02/2008';
query.execsql;

Creo que ambas fechas son incluidas en los resultados.

javimax182 27-02-2008 18:35:35

si pero que no se tenga que depender de 1/02/2008...etc
Sino que funcione para todos los meses y no tenga que andar modificando el codigo. Gracias

Delphius 27-02-2008 19:02:31

Cita:

Empezado por javimax182 (Mensaje 269045)
si pero que no se tenga que depender de 1/02/2008...etc
Sino que funcione para todos los meses y no tenga que andar modificando el codigo. Gracias

Explicate mejor javimax182. ¿Tu lo que quieres es pasar en modo de ejecución el rango de fechas?

Nada te impide hacer cosas así:

Código Delphi [-]
Query1.ParamByName('tu_parametro').asString := Edit1.Text;

Es un ejemplo, deberías adaptarlo al tipo de datos que reciba. Pero creo que se entiende la idea;). Si tienes dudas avisa.

Saludos,

javimax182 27-02-2008 19:18:21

No, me entendieron mal, lo que yo quiero es que filtre por las ventas que se hicieron en el mes actual.
Por ejemplo: si hoy seria 7 de mayo. Me tendria que filtrar todas las ventas que se hicieron del 1 de mayo hasta el 7 de mayo.
Sabes como?. Gracias

javimax182 27-02-2008 19:38:39

HELP ME, PLEASE.
ME FALTA SOLA ESE FILTRADO. POR FAVOR AYUDENME. El filtrado de las ventas del mes actual.

Caral 27-02-2008 19:44:51

Hola
Por que no usas dos datetimepicker en los que pondras la fecha 1 y la dos, ose el rango de fechas, asi tendras solucionado esto.
Saludos

javimax182 27-02-2008 19:48:55

No pero yo quiero que filtre eso automaticamente sin tener que seleccionar nada. No sabrias como?

Yo habia encontrado una funcion como esta:
Cita:

if combobox2.ItemIndex = 4 then begin
With QVentas do begin
Close;
SQL.Clear;
SQL.Add ('SELECT * FROM ResumenVentas where FechaCompra Between to_date("01/"¦¦to_char(' +(hoy)+',MM/YY),"DD/MM/YY"');
Open;
end; end;
pero no me anda en delphi. me salta error.
Me podrian ayudar?

egostar 27-02-2008 19:53:06

Cita:

Empezado por javimax182 (Mensaje 269091)
No pero yo quiero que filtre eso automaticamente sin tener que seleccionar nada. No sabrias como?

Podrías aclarar esto que dices, si no seleccionas algo como puedes filtrar....:confused::confused::confused:

Salud OS

javimax182 27-02-2008 19:55:50

Lo que yo quiero es que filtre por las ventas que se hicieron en el mes actual.
Por ejemplo: si hoy seria 7 de mayo. Me tendria que filtrar todas las ventas que se hicieron del 1 de mayo hasta el 7 de mayo.

Pero que aga todo eso sin que el usuario tenga que ingresar nada ni seleccionar nada.
Sabes como?. Gracias

Caral 27-02-2008 19:57:11

Hola
Todos los que te han contestado saben como filtrar fechas, no creo que sea nada complicado, lo dificil esta en entender el concepto de lo que necesitas.
Dices que si hoy es 7 que filtre del 1 al 7, vale, primero lo que hay que hacer es decirle al programa que hoy es 7, no te parece?, y despues decirle que filtre desde el primer dia del mes.
Automaticamente me suena un poco complicado, tal vez con dos edit uno con la fecha actual y otro que calcule la resta de esa menos el total del mes, uhhi, tarea de maestro.
No se, prefiero mi opción.
Saludos

javimax182 27-02-2008 20:00:15

ok masa o menos te entiendo... pero mas o menos como se cuando es el primer dia del mes?
Les agradeceria si me pudieran mostrar como. Gracias

egostar 27-02-2008 20:04:37

Cita:

Empezado por javimax182 (Mensaje 269094)
Lo que yo quiero es que filtre por las ventas que se hicieron en el mes actual.
Por ejemplo: si hoy seria 7 de mayo. Me tendria que filtrar todas las ventas que se hicieron del 1 de mayo hasta el 7 de mayo.

Pero que aga todo eso sin que el usuario tenga que ingresar nada ni seleccionar nada.
Sabes como?. Gracias

Ya, ahora entiendo, puedes hacer esto

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
  Query1.Close;
  DecodeDate(Now, Year, Month, Day);
  Query.sql.clear;
  Query.sql.add('select * from Ventas where EXTRACT(MONTH FROM fecha_ventas) = :mes');
  Query1.ParamByName('mes').AsInteger := Month;
  Query1.Open;
end;

Salud OS

Delphius 27-02-2008 20:08:18

javimax182, por más iniciado que seas no puedo dejar de pasar de alto muchas cosas:
1. Aqui nadie viene a pedir cosas por urgencias.
2. No estamos en la obligación de responderte, aqui el que ayuda lo hace de forma desinteresada y cuando tiene el tiempo. Esto está abierto las 24 hrs pero eso no quiere decir que tengamos la obligación de estar presente y auxiliarte cuando desees.
3. Existen variados hilos en donde este tema se ha tratado, yo diría que todos los días aparece por lo menos 2 o 3 hilos sobre esto... existe un buscador y te sugiero que lo uses.
4. Si te explicases mejor no estaríamos adivinando.

Espero que comprendas que aquí, se pide el respeto a la guia de estilo.

Saludos,

maeyanes 27-02-2008 20:10:08

Hola...

Para hacer lo que quieres solo te basta saber cual es la fecha actual, lo cual logras con la función Now o Date...

Teniendo la fecha actual ya sabes cual es el mes correspondiente, con ese dato ya puedes hacer tu consulta o el filtro de tu tabla:

Código Delphi [-]
var
  ADay, AMonth, AYear: Word;
  FechaInicial, FechaFinal: TDateTime;

begin
  DecodeDate(Now, AYear, AMonth, ADay);
  FechaInicial := EncodeDate(AYear, AMonth, 1);
  FechaFinal := EncodeDate(AYear, AMonth, 31); // Aquí podrías verificar cual es el 
  // máximo de días de el mes especificado para evitar errores de fecha inválida
  TablaVentas.Filter := 'Fecha >= ' + DateToStr(FechaInicial) + ' and Fecha <= ' + DateToStr(FechaFinal);
  TablaVentas.Filtered := True
end;

Espero que este código te de una idea de como lograr lo que deseas...



Saludos...


La franja horaria es GMT +2. Ahora son las 05:24:19.

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