Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Filtro de fecha vencida (https://www.clubdelphi.com/foros/showthread.php?t=35723)

leodelca23 19-09-2006 16:20:01

Filtro de fecha vencida
 
Hola a todos una pregunta tengo. Como hago para hacer un filtro con un query si se vencio o no. Tengo un campo que se llama fecha prometida, quiero saber si con la fecha que me filtre en la tabla todos lo que se han vencido o que la fecha prometida es mas vieja que la fecha que tengo en el sistema. Trabajo en delphi7 con interbase si les sirve de algo.

Muchas gracias

Saludos

bitbow 19-09-2006 16:35:28

Saludos.
 
Puedes hacer un select y comparar esa fecha de tu campo con la fecha actual usando la funcion Date(); para obtener la fecha.

Suerte.

leodelca23 19-09-2006 16:36:45

perdoname bitlow pero soy novato y no sabria como hacerlo, si me puedes ayudar gracias

leodelca23 19-09-2006 16:38:46

y perdoname por poner mal tu nombre es que estoy cansado no he dormido intentando hacer eso y no me sale.

Saludos y Gracias

bitbow 19-09-2006 16:46:17

Saludos.
 
No problem, ya vivi esa parte, bueno pa comensar que estas usando?

TTable o TQuery?

leodelca23 19-09-2006 16:48:36

estoy usando tquery y quiero la consulta si se puede en sql lo del select entiendo lo que no es la comparacion de la fechas.

Muchas Gracias

Caral 19-09-2006 16:51:33

Hola
sinceramente no entiendo por que necesariamente tiene que ser en la sentencia sql del query, supongo el programa hace algo, yo de primeras lo haria en el fromcreate para que al entar el programa revisara la fecha del query o de la tabla en otras palabras y luego la comparara con la del sistema.
Asi no modifico la sentencia sql que tal vez la necesite para otros menesteres.
Yo lo haria con un DateTimePicker y un DBEdit de donde sacar la fecha.
No se me parece lo mas logico y facil para un novato.
Saludos

bitbow 19-09-2006 16:52:08

Un ejemplo.
 
SELECT * FROM TUTABLA WHERE FECHA<=10/08/2006

Asi se usa con las fechas , en paradox y todoas las demas bases que funcionan con el ODBC o BDE funciona, tambien con MySQL, InterBase/FireBird, PostGreSQL, MSSQL menos con SQLite ya lo probe y no fonuncia.

marcoszorrilla 19-09-2006 16:53:47

Prueba:
Código SQL [-]
Select *
Where MiFecha > Today

Un Saludo.

leodelca23 19-09-2006 16:59:15

Muchas Gracias, Pero como hago para poner la fecha de hoy en ves del numero gracias
Saludos

marcoszorrilla 19-09-2006 17:01:25

La función Today te devuelve la fecha del día. También tienes Now, que devuelve fecha y hora actuales.

Un Saludo.

leodelca23 19-09-2006 17:02:26

Gracias, no habia leido tu mensaje

leodelca23 19-09-2006 17:15:40

Hola a todos probe con today y now y me dice que columna no se encuentra que puede ser? ahi esta el codigo gracias

procedure TFTodos.BFiltrarClick(Sender: TObject);

begin
IBQInformes.Close;
IBQInformes.Sql.Clear;
if Cbvencidos.Checked=true then
IBQInformes.SQL.Add('SELECT * FROM Telas INNER JOIN Descripcion '+
'ON Telas.Descripcion1 = Descripcion.Descripcion Where'+ 'Telas.FECHA_PROMETIDA > NOW');
IBQInformes.Open;
end;

Caral 19-09-2006 20:13:13

Hola
sigo sin entender.
ahora veo dos tablas o me parece.
telas y descripcion
el campo telas.descripcion1 es diferente a descripcion.descripcion, por que el ligue para que se necesita si el campo fecha esta en telas?
Saludos.

bitbow 19-09-2006 20:19:15

Debes hacelro asi
 
Código PHP:

procedure TFTodos.BFiltrarClick(SenderTObject);
 
 
begin
   IBQInformes
.Close;
   
IBQInformes.Sql.Clear;
   if 
Cbvencidos.Checked=true then
    begin
      IBQInformes
.SQL.Add(' SELECT * FROM Telas INNER JOIN Descripcion ');
      
IBQInformes.SQL.Add(' ON Telas.Descripcion1 = Descripcion.Descripcion ');
      
IBQInformes.SQL.Add(' Where Telas.FECHA_PROMETIDA > 'NOW);
      
IBQInformes.Open;
    
end;
 
end

Asi es como le hago yo :

Código PHP:

procedure TFTodos.BFiltrarClick(SenderTObject);
 
 
begin
   IBQInformes
.Close;
   
IBQInformes.Sql.Clear;
   if 
Cbvencidos.Checked=true then
    begin
      IBQInformes
.SQL.Add(' SELECT * FROM Telas INNER JOIN Descripcion ');
      
IBQInformes.SQL.Add(' ON Telas.Descripcion1 = Descripcion.Descripcion ');
      
IBQInformes.SQL.Add(' Where Telas.FECHA_PROMETIDA > "'DateToStr(Date) +'"');
      
IBQInformes.Open;
    
end;
 
end

Debes concatenar tu consulta con el valor de Now, la verdad no he manejado Now y no se que tipo de datos devuelva si es Date , Time o combinado de cualquier forma debes de hacer la conversion del tipo de dato que te devuelva a String , para las fechas es DateToStr.

Por ahi en google anda un manual de las funciones de conversion , no recuerdo el enlace.

bitbow 19-09-2006 20:27:05

Saludos.
 
Cita:

Hola
sigo sin entender.
ahora veo dos tablas o me parece.
telas y descripcion
el campo telas.descripcion1 es diferente a descripcion.descripcion, por que el ligue para que se necesita si el campo fecha esta en telas?
Saludos.
Sinceramente he trabajado con Tablas y no es por hacerles el feo pero tienen sus limitaciones y con SQL tienes mucha potencia, hay veces en que no sera necesario utilizar query y sera mas facil usar Tablas eso que ni que, pero aqui siento que es mejor con Query almenos esa es mi humilde opinion.

Caral 19-09-2006 20:46:06

Hola
Por favor corrigeme pero creo que funcionaria asi tambien:
Código Delphi [-]
procedure TFTodos.BFiltrarClick(Sender: TObject);
 
 begin
   IBQInformes.Close;
   IBQInformes.Sql.Clear;
   if Cbvencidos.Checked=true then
    begin
      IBQInformes.SQL.Add(' SELECT * FROM Telas INNER JOIN Descripcion ');
      IBQInformes.SQL.Add(' ON Telas.Descripcion1 = Descripcion.Descripcion ');
      IBQInformes.SQL.Add(' Where Telas.FECHA_PROMETIDA > "'+ DateToStr(Now) +'"');
      IBQInformes.Open;
    end;
 end;
Con relacion a lo otro totalmente de acuerdo con tigo, gracias por la acotacion.
Saludos

bitbow 19-09-2006 20:56:01

Como decia.
 
No he tenido la oportunidad/necesidad de usar Now, Today de echo no se nada pero ahorita me documento , cada dia de aprenden algo nuevo.

Saludos.

leodelca23 19-09-2006 23:10:10

bueno gracias a todos
 
Ahi funciono. Realmente son unos maestros todos. Se les agradece por todo realmente hay que tener paciencia para aguantar preguntas de alguien como yo. Le agradezco en el nobmre de todos los usuarios del club delphi ya que sin gente como ustedes nosotros nos suicidariamos. Muchas Gracias

Saludos

leodelca23 20-09-2006 01:12:30

No se que paso
 
Perdonen pero no se que paso pero no me funciona ahora :( no se que habre hecho le voy a pasar las tablas para ver si hay algun error estas son las tablas
Código PHP:

CREATE TABLE TELAS (
  
CLIENTE VARCHAR(30NOT NULL,
  
PO VARCHAR(20NOT NULL,
  
FECHA_EMISION TIMESTAMP NOT NULL,
  
DESCRIPCION1 VARCHAR(55NOT NULL,
  
DESCRIPCION2 VARCHAR(55NOT NULL,
  
CANTIDADES_PEDIDAS INTEGER NOT NULL,
  
CANTIDADES_HECHAS INTEGER NOT NULL,
  
CANTIDADES_FALTANTES INTEGER NOT NULL,
  
FECHA_PROMETIDA TIMESTAMP NOT NULL
);CREATE TABLE DESCRIPCION (
  
DESCRIPCION VARCHAR(50),
  
ESTILO VARCHAR(25),
  
COLOR1 VARCHAR(25),
  
COLOR2 VARCHAR(25),
  
COLOR3 VARCHAR(25),
  
COLOR4 VARCHAR(25),
  
COLOR5 VARCHAR(25),
  
FOLDLINE VARCHAR(25)


no se cuando le cambio la fechas de timestamp a date me da error , si me pueden ayudar haciendo la comparacion con el timestamp realmente la hora no la hora no me interesa.

Saludos

leodelca23 20-09-2006 08:08:42

Bueno sigo sin poder comparar mi campo timestamp con la fecha de hoy si alguien me puede ayudar gracias

leodelca23 20-09-2006 17:29:07

Bueno el error lo sigo teniendo si pongo esa sentencia me sigue dando error:

Cita:

'BQInformes.SQL.Add('SELECT * FROM Telas INNER JOIN Descripcion'+ 'ON Telas.Descripcion1 = Descripcion.Descripcion where '+ 'Telas.FECHA_PROMETIDA > 20/09/2006'
FECHA_PROMETIDA es tipo timestamp;

Muchas gracias si me contestan realmente estoy desesperado me falta eso para hacer funcionar completamente el programa, Gracias
Saludos

leodelca23 20-09-2006 19:17:28

el error que me muestra es el siguiente

Dynamic SQL Error
SQL error code=-104
Unexpected end of command

si les sirve de algo.

Saludos

maeyanes 20-09-2006 19:35:23

Prueba así:

Código Delphi [-]
BQInformes.SQL.Add('SELECT * FROM Telas INNER JOIN Descripcion ' + 
  'ON Telas.Descripcion1 = Descripcion.Descripcion where ' + 
  'Telas.FECHA_PROMETIDA > ''20/09/2006''')


Saludos...

leodelca23 20-09-2006 19:42:27

no me muestra nada en la tabla. Muchas gracias y para estar seguro le puse < el otro y tampoco.

Saludos

marcoszorrilla 20-09-2006 19:43:52

Ojo con el formato de fechas en SQL.
mm/dd/yyyy


Un Saludo.

leodelca23 20-09-2006 20:01:44

lo mismo aunque doy vuelta y pongo mm/dd/yyyy me sigue dando error jejej

maeyanes 20-09-2006 20:04:28

Y cual es el error?

leodelca23 21-09-2006 02:38:43

es el mismo error que el que puse alla arriba, pero creo que el error es el timestamp pero bueno hay que seguir probando.

Saludos

leodelca23 25-09-2006 13:08:03

lo solucione
 
Bueno gracias a dios estan de vuelta a todos: Me costo pero lo solucione cree la tabla de la base de datos de nuevo y listo funciono perfectamene cambie el dato tipo timestamp a tipo date y con un format de la fecha quedo calidad. SAludos a todos y gracias.
Código PHP:

IBQInformes.Close;
IBQInformes.Sql.Clear;
IBQInformes.SQL.Add('SELECT * FROM Telas INNER JOIN Descripcion '+
    
'ON Telas.Descripcion1 = Descripcion.Descripcion where 'Telas.FECHA_PROMETIDA <'''+formatdatetime('mm/dd/yy',Today)+'''');
IBQInformes.Open; 



La franja horaria es GMT +2. Ahora son las 11:10:37.

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