Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   comparacion de fechas (https://www.clubdelphi.com/foros/showthread.php?t=67495)

alejitoo 20-04-2010 00:45:11

comparacion de fechas
 
buenas tardes tengo un problema con un codigo quiero realizar una consulta con dos fechas diferentes es decir que me muestre los datos que se encuentran en fecha 1 hasta fecha 2 pero cuando utilizo el query para hacerla no me quiere correr el programa me aparece este error

[Error] Unit26.pas(42): Incompatible types: 'String' and 'TDateTime'
[Error] Unit26.pas(43): Incompatible types: 'String' and 'Extended'

y este es el codigo que estoy usando

Código:

query1.open;
query1.sql.text:= ( 'select * from Producciones where Fecha BETWEEN' +StrToDate(Edit1.text)+' AND '+ StrToDate(Edit2.Text));
query1.active:=true;

tambien cambie los edit por el DateTimePicker pero no me funciona
si alguien me podria ayudar se lo agradeceria

Chris 20-04-2010 01:26:21

Lo que sucede es que has mal interpretado la función "StrToDate", esta función te convierte una cadena a fecha y lo que tú quieres es lo contrario. La función que necesitas se llama "DateToStr" que si no me equivoco, se encuentra en la unidad DateUtils.

Saludos,
Chris

EDITO: Para usar la función DateToStr, es mejor que cambies esos Edits por unos DateTimePickers.

alejitoo 20-04-2010 02:49:04

compadre nada que funciono mira los errores que me aparecen y mira el codigo como lo coloque

[Error] Unit26.pas(41): Undeclared identifier: 'DateTimePicker'
[Error] Unit26.pas(41): ')' expected but identifier 'Date' found

Código:

query1.open;
query1.sql.text:= ( 'select * from Producciones where Fecha BETWEEN' +datetostr(DateTimePicker.Date)+' AND '+ datetostr(DateTimerPicker2.Date));
query1.active:=true;


radenf 20-04-2010 13:09:25

Estimado alejitoo :

Prueba con este código :

Código Delphi [-]
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * ');
Query1.SQL.Add('from Producciones');
Query1.SQL.Add('where Fecha between' + QUOTEDSTR(FormatDateTime('dd/mm/yyyy',DateTimePicker1.Date))+'AND' + QUOTEDSTR(FormatDateTime('dd/mm/yyyy',DateTimePicker2.Date)));
Query1.Open;

Previamente debes agregar DateUtils en el uses de tu Form

Ojalá te sirva
Saludos

Chris 20-04-2010 17:31:21

Cita:

Empezado por alejitoo (Mensaje 361170)
compadre nada que funciono mira los errores que me aparecen y mira el codigo como lo coloque

[Error] Unit26.pas(41): Undeclared identifier: 'DateTimePicker'
[Error] Unit26.pas(41): ')' expected but identifier 'Date' found

Código:

query1.open;
query1.sql.text:= ( 'select * from Producciones where Fecha BETWEEN' +datetostr(DateTimePicker.Date)+' AND '+ datetostr(DateTimerPicker2.Date));
query1.active:=true;


Fíjate que tienes mal escrito el nombre de "DateTimePicker", debería ser "DateTimePicker1" con seguridad ese es el origen de los ambos errores que tienes.

alejitoo 20-04-2010 17:34:22

buena muchachos anoche pase todo el dia con una amiga intentando q me corriera el programa y ella consiguio un code buenisimo aqui se los dejo espero que les sirva a aquellas personas q tengan la misma duda que yo


Código:

Query1.SQL.Text := ('SELECT * FROM Nombre de la tabla ');
Query1.sql.add('Where Fecha between :fecha1 and :fecha2');
Query1.parambyname('fecha1').asdatetime := fecha1.Date;
Query1.parambyname('fecha2').asdatetime := fecha2.Date;
Query1.Open;

necesitaran dos datetimepicker y los llamaran fecha1 y fecha2. pegan esto y listo funciona no tienen q estar programando tanto..

espero que les sirva de mucha ayuda

odrack 12-05-2010 01:15:54

Hola!!

Quiza sea un poco tarde y seguramente ya lo hayan resuelto, pero a alguien mas le pueda servir si tiene el mismo problema.

Colocar dos datetimepicker y dos variables
var fecha1, fecha2:string;

el siguiente codigo hace la busqueda

Código Delphi [-]
//formatea la fecha
 fecha1:=formatdatetime('YYYY-MM-DD', datetimepicker1.date);
  fecha2:=formatdatetime('YYYY-MM-DD', datetimepicker2.date);
 
//busca datos en tabla
  query1.Close;
  query1.SQL.Clear;
  query1.SQL.Text:='select * from tabla where fecha between '+quotedstr(fecha1)+' and '+quotedstr(fecha2);
  query1.ExecSQL;
  query1.Open;


Saludos!!

fpirovani 25-06-2010 15:08:56

Cita:

Empezado por odrack (Mensaje 363660)
Hola!!

Quiza sea un poco tarde y seguramente ya lo hayan resuelto, pero a alguien mas le pueda servir si tiene el mismo problema.

Colocar dos datetimepicker y dos variables
var fecha1, fecha2:string;

el siguiente codigo hace la busqueda

//formatea la fecha
fecha1:=formatdatetime('YYYY-MM-DD', datetimepicker1.date);
fecha2:=formatdatetime('YYYY-MM-DD', datetimepicker2.date);

//busca datos en tabla
query1.Close;
query1.SQL.Clear;
query1.SQL.Text:='select * from tabla where fecha between '+quotedstr(fecha1)+' and '+quotedstr(fecha2);
query1.ExecSQL;
query1.Open;





Saludos!!

Buenas! yo quise hacer algo parecido pero no funcionaba, buscando en internet encontre esto y me andubo de 10.


Query.Active := False;
Query.SQL.Text := 'select * from Tabla where Fechas between #'+DateToStr(Fecha_Desde)+'# and #'+ DateToStr(Fecha_Hasta)+'# ';
Query..Active := True;

Como ven las fechas estan delimitadas por #, no me pregunten por que, pero asi anda y de la otra forma no me andaba...
Estoy usando delphi 7 y en este momento los componentes ADO

Saludos a todos !!


La franja horaria es GMT +2. Ahora son las 07:13:26.

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