Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   comparación de Fechas (https://www.clubdelphi.com/foros/showthread.php?t=44418)

mgaytan 06-06-2007 00:39:09

comparación de Fechas
 
Buenas chavos ....
estoy empezando a conocer este foro y me parece muy bueno.
Tengo muchas dudas acerca de Delphi.
Una de ellas es que tengo una tabla en paradox, quiero hacer un reporte donde el usuario ingrese fecha inicial y fecha final desde in DataTimePicker.
y desplace los recors que esten entre esas fechas.
begin
Table1.Edit;
dx:=Table1.Recordcount;
Table1.First;
r:=StrToInt(Edit3.Text);
for dz:=1 to dx do
begin
if ((DateTimePicker1.Date<=Table1.Fieldbyname('FECHA').asstring)and (DateTimePicker2.Text>=Table1.Fieldbynam('FECHA').asstring) Then
begin
Table2.Insert;
Table2.Fieldbyname('FECHA').asstring:=Table1.Fieldbyname('FECHA').asstring;
esto funciona pero solamente compara los promeros digitos de la fecha 00/00/0000 el resto lo omite.

espero sus sugerencias gracias

Caral 06-06-2007 00:46:32

Hola
Nada mas para que te guíes un poco:
Código Delphi [-]
ADOQuery1.Open;
  ADOQuery1.Filter := 'FechaTransac >= '+DateToStr(DateTimePicker2.DateTime)+' AND FechaTransac <= '+DateToStr(DateTimePicker3.DateTime);
  ADOQuery1.Filtered := True;
Saludos

mgaytan 06-06-2007 01:05:05

Upss
 
estoy muy verde para esto me prodias explicar donde pongo esto !!!
ya que la consulta la estoy haciendo desde una form no uso SQL ni ADOSQL.

Gracias.

Caral 06-06-2007 01:09:56

Hola
Vamos por partes, que no entiendes, donde colocas la consulta.
Veamos, esto es lo que tienes:
Código Delphi [-]
begin
Table1.Edit;
dx:=Table1.Recordcount;
Table1.First;
r:=StrToInt(Edit3.Text);
for dz:=1 to dx do
begin
if ((DateTimePicker1.Date<=Table1.Fieldbyname('FECHA').asstring)and (DateTimePicker2.Text>=Table1.Fieldbynam('FECHA').asstring) Then
begin
Table2.Insert;
Table2.Fieldbyname('FECHA').asstring:=Table1.Fieldbyname('FECHA').asstring;

Código Delphi [-]
if 
Table1.Fieldbyname('FECHA') <= (DateTimePicker1.Date)
and 
Table1.Fieldbynam('FECHA') >= (DateTimePicker2Date)
Then
No se esto de los parametros me incomoda un poco, lo prefiero por sql.
Espero te ayude un poco.
Saludos

mgaytan 06-06-2007 01:16:47

Bamos bien
 
CLaro que las rutinas son mas tediosas de hecho quiero aprender a manegar SQL pero el primer ejemplo que me pusiste no se donde colocarlo o como hacer consultas por SQL, mi duda es mas atras del ejemplo que me estas dando espero me puedas ayudar a.

Gracias

mgaytan 06-06-2007 01:33:14

si
 
CLaro que las rutinas son mas tediosas de hecho quiero aprender a manegar SQL pero el primer ejemplo que me pusiste no se donde colocarlo o como hacer consultas por SQL, mi duda es mas atras del ejemplo que me estas dando espero me puedas ayudar a.

Gracias

Caral 06-06-2007 01:33:54

Hola
Código Delphi [-]
begin
Table1.Open;
Table2.Open;
Table1.First;
dx:=Table1.Recordcount;
r:=StrToInt(Edit3.Text);
for dz:=1 to dx do
Begin
Table1.Filter := 'FECHA >= '+DateToStr(DateTimePicker1.DateTime)+' AND FECHA <= '+DateToStr(DateTimePicker2.DateTime);
Table1.Filtered := True;
end;
begin
Table2.Insert;
Table2.Fieldbyname('FECHA').asDate:=Table1.Fieldbyname('FECHA').asstring;
No se si se podra hacer asi tambien:
Código Delphi [-]
Table2.Fieldbyname('FECHA').asDate:=Table1.Filter;
Saludos

Caral 06-06-2007 01:39:38

Hola
Rectifico:
Código Delphi [-]
begin
Table1.Open;
Table2.Open;
Table1.First;
dx:=Table1.Recordcount;
r:=StrToInt(Edit3.Text);
for dz:=1 to dx do
Begin
Table1.Filter := 'FECHA >= '+DateToStr(DateTimePicker1.DateTime)+' AND FECHA <= '+DateToStr(DateTimePicker2.DateTime);
Table1.Filtered := True;
end;
begin
Table2.Insert;
Table2.Fieldbyname('FECHA').asDate:=Table1.Fieldbyname('FECHA').asDate;
Pequeño error de dedo.:D
Saludos

mgaytan 06-06-2007 02:09:40

ya mero
 
Me aparece este error 'Arithmetic in Filter Not Supported'
se crea una excepcion y me saca.

jachguate 06-06-2007 02:20:02

Hola.

Según entiendo, la tabla 2 no es necesaria. Cómo ya has dicho que la aritmética de fechas no es permitida en el filtro, podes cuidarte de que la propiedad Filter de la tabla esté en blanco, poner a True la propiedad Filtered y en el evento OnFilterRecord, poner algo cómo:

Código Delphi [-]
begin
  Accept := Table1Fecha.AsDateTime >= DateTimePicker1.Date 
             and Table1Fecha.AsDateTime <= DateTimePicker2.Date;
end;

Hasta luego

;)

mgaytan 06-06-2007 02:54:10

nop
 
Puse esto
Accept := Table1.Fieldbyname('FECHA').AsDateTime >= DateTimePicker1.Date
and Table1.Fieldbyname('FECHA').AsDateTime <= DateTimePicker2.Date;

me marca un error el tipo de operador <= no es aplicable

jachguate 06-06-2007 03:36:30

Cita:

Empezado por mgaytan
Puse esto

Es cierto... debe ser:
Código Delphi [-]
Accept := (Table1.Fieldbyname('FECHA').AsDateTime >= DateTimePicker1.Date)
  and (Table1.Fieldbyname('FECHA').AsDateTime <= DateTimePicker2.Date);

¡pero hombre!

Ya casi pedís que le de yo mismo al F9 de tu ordenador.... es de esperar que alguna parte del trabajo hagas vos, ¿no?

Hasta luego.

Caral 06-06-2007 05:57:28

Hola
Y algo asi:
Código Delphi [-]
begin
Table1.Open;
Table2.Open;
Table1.First;
dx:=Table1.Recordcount;
r:=StrToInt(Edit3.Text);
for dz:=1 to dx do
Begin
Table1.Filter := 'FECHA between '+DateToStr(DateTimePicker1.Date)+' AND '+DateToStr(DateTimePicker2.Date);
Table1.Filtered := True;
end;
begin
Table2.Insert;
Table2.Fieldbyname('FECHA').asDate:=Table1.Fieldbyname('FECHA').asDate;
La tabla 2 tengo entendido que es para recoger el resultado del filtro.
Me equivoco?
Saludos


La franja horaria es GMT +2. Ahora son las 00:08:19.

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