Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-05-2005
Citlalli Citlalli is offline
No confirmado
 
Registrado: may 2005
Posts: 40
Poder: 0
Citlalli Va por buen camino
Gracias lepe, lo voy a probar y te aviso

saludos
Responder Con Cita
  #2  
Antiguo 02-06-2005
Citlalli Citlalli is offline
No confirmado
 
Registrado: may 2005
Posts: 40
Poder: 0
Citlalli Va por buen camino
les voy a explicar paso a paso mi problema, hay que tomar en cuenta que utilizo interbase 6 (el que viene con delphi 6) y lo que estoy haciendo es una agenda por lo tanto es super importante el buen manejo de las horas:

1: di de alta en mi base de datos un campo de tipo varchar llamado "Hora".

2: guardo en dicho campo la hora de la siguiente manera:

Código:
 
			  Add('INSERT INTO Agenda (');
			  Add('Hora,');
			  Add('Values (');
			  Add(sep + FormatDateTime('h:mm am/pm',Time) + sep + ',');
3: quiero hacer un ORDER BY por dicho campo y me encuentro conque no lo hace.

4: supuse que por ser de tipo varchar no lo ordena en orden cronologico, asi que le cambio el tipo al campo y se lo pongo timestamp.

5: intenté guardar el dato de la misma forma que arriba pero me manda el error: "error conversion for string"

6: investigue aqui en el foro y algien me dijo que hiciera la incersión por medio de parámetros:

Código:
 
				 ParamByName('Hora').AsTime := Time;
7: efectivamente, funcionó... pero al mostrar el campo en un DBGrid lo muestra asi "01/06/2005 06:20:36 pm" y yo solo quiero que me muestre la hora (06:20 pm)

8: posteriormente quiero poder comparar dicha hora contra otra, esto con el fin de hacer avisos al cliente en cierta hora.

espero haberme explicado bien, en fin, espero sus respuestas muchas gracias

saludos
Responder Con Cita
  #3  
Antiguo 02-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por Unidad Controls
TDateTime = type Double;

TDate = type TDateTime;

TTime = type TDateTime;
Como ves el problema es que en delphi todo son Tdatetimes, y es más, te aconsejo que uses siempre formato de Fecha y hora cuando tengas que comparar, sumar y/o restar, ya que delphi tiene una amplia biblioteca de funciones para estos menesteres en DateUtils. Deja que guarde la fecha y hora, así cuando tengas que pedir un listado ordenado por fecha, no tendrás problemas.

Lo único que se me ocurre en este momento es usar el OnGetText del campo para que devuelva solo la parte horaria.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 03-06-2005
Citlalli Citlalli is offline
No confirmado
 
Registrado: may 2005
Posts: 40
Poder: 0
Citlalli Va por buen camino
gracias lepe, me podrias mostrar un ejemplo?


saludos
Responder Con Cita
  #5  
Antiguo 03-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Código Delphi [-]
procedure TForm1.Table1HireDateGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  Text := FormatDateTime('hh:nn',Table1HireDate.AsDateTime);
end;

El campo se llama HireDate, es de la base de datos DBDemos que incluye delphi.

Haz Doble clic sobre tu tabla, señala el campo de tipo Fecha, y ahora en el inspector de objetos, en los eventos, tienes el GetText.

Cualquier Control que use este dataset para mostrar la hora, mostrará solo la hora y minutos.

En lugar de hacerlo directamente sobre la tabla, igual te conviene hacerlo solo en las consultas (para mostrarlo en el grid).

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 06-06-2005
Citlalli Citlalli is offline
No confirmado
 
Registrado: may 2005
Posts: 40
Poder: 0
Citlalli Va por buen camino
Lepe, en verdad... muchísimas gracias por tu ayuda.


Saludos
Responder Con Cita
  #7  
Antiguo 06-06-2005
ahkimpech ahkimpech is offline
Miembro
 
Registrado: may 2003
Posts: 14
Poder: 0
ahkimpech Va por buen camino
DecodeTime

Verifia con la función DecodeTime; Sirve para extraer la hora (hh:mm:ss) de una variable o campo de tipo TDateTime (Delphi) o TimeStamp (Interbase).
Existe la contraparte EncodeTime. Delphi tiene muchas funciones para el manejo de campos Fecha y hora.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:23:03.


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
Copyright 1996-2007 Club Delphi