![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
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 + ',');
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;
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 |
|
#2
|
||||
|
||||
|
Cita:
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. |
|
#3
|
|||
|
|||
|
gracias lepe, me podrias mostrar un ejemplo?
saludos |
|
#4
|
||||
|
||||
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. |
|
#5
|
|||
|
|||
|
Lepe, en verdad... muchísimas gracias por tu ayuda.
Saludos |
|
#6
|
|||
|
|||
|
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. |
|
#7
|
|||
|
|||
|
Gracias ahkimpech pero esas funciones las conozco muy bien y para este caso no me sirven.
Lepe, oye fijate que me funcionó muy bien lo que me dijiste del GetText, pero ahora tengo otro problema... que problemática verdad jaja, fijate que no encuentro como comparar ahora dicho campo, mira tengo un timer en el que pongo: Código:
procedure TMain.t_agendaTimer(Sender: TObject);
begin
with DM.qryWork_Agenda_Aux, DM.qryWork_Agenda_Aux.SQL do
begin
Close;
Clear;
Add('SELECT');
Add('Hora');
Add('FROM');
Add('Agenda');
Add('WHERE');
Add('Fecha = ' + sep + FormatDateTime('MM/dd/yyyy',Date) + sep);
Open;
First;
while not eof do
begin
if DM.qryWork_Agenda_Aux.FieldByName('Hora').AsDateTime = Date then
Showmessage(timetostr(time));
next;
end;
end;
end;
Estoy insertando la hora en la tabla mediante parámetros como te mencioné antes. Te explico exactamente que es lo que quiero desarrollar: una agenda que funciona como un catalogo, el usuario da click en el boton insertar y aparece un cuadro de dialogo que le pide el mensaje y la hora en que quiere el aviso; listo, él sigue trabajando y cuando el timer detecta la hora del aviso, se debe mostrar una ventana con el mensaje que él capturó. ojala me haya explicado, no soy muy buena describiendo verdad!! muchas gracias Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|