Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-08-2004
Ariatna Ariatna is offline
Registrado
 
Registrado: ago 2004
Posts: 7
Poder: 0
Ariatna Va por buen camino
Ayuda, para manejar fechas, en sql

Hola



Necesito su Ayuda.



Utilizo la Versión de Delphi5, estoy haciendo un sistema que utiliza una base de datos en paradox. Para manejar la información de mi base de datos utilizo los Query .



Mi problema es este: Mi tabla1, tiene una llave formada por los campos numemp y fecha, al modificar un registro necesito seleccionar el numemp y la fecha determinada (DateTimePicker), utilizo un filtro para especificar la fecha, pero no me funciona, y no encuentro otra forma de hacerlo,o algun carácter especial para manejar fechas, espero me puedan orientar.

Este es el código que empleo:




Query1.SQL.Clear;

Query1.Filtered:=TRUE;

Query1.SQL.Add('update tabla1');

Query1.SQL.Add('set numemp=: numemp,fecha=:fecha,edad=:edad,

entrada=:entrada,salida=: salida);

Query1.filter:='Fecha = ''' + DateToStr(DTPFech.Date) + '''' + '';

Query1.SQL.Add(format('where codpac="%s"',[eEmp.text]));



De antemano Gracias.
Responder Con Cita
  #2  
Antiguo 27-08-2004
moebius moebius is offline
Miembro
 
Registrado: jun 2004
Posts: 11
Poder: 0
moebius Va por buen camino
Nose porqué has definido la clave de esa manera, y lo que es peor tampoco tengo idea de como utilizar la clave de la tabla como queres.

Sin embargo te sugiero que redefinas la tabla y utilices un campo clave autoincremental. Para la busqueda podés definir un índice o hacerlo a traves de una instruccion sql que contenga los campos deseados.

No se si t he sito util, espero que si

Suerte
Responder Con Cita
  #3  
Antiguo 27-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Definitivamente Filter no te servirá. Esta propiedad se usa para filtrar los registros que te regresa una consulta SQL pero en en este caso la consulta es un UPDATE que no regresa filtros.

Por otro lado ten cuidado al escribir la consulta. Para indicar los parámetros no debe haber espacios entre los dos puntos ':' y el nombre del parámetro.

Finalmente, lo único que necesitas saber es cómo sustituir los parámetros. Para ello debes usar el método ParamByName del query, por ejemplo:

Código Delphi [-]
Query1.ParamByName('edad').AsInteger := 26;
Query1.ParamByName('fecha').AsDate := DTPFech.Date;

Y no olvides que para ejecutar este tipo de consultas debes usar Query1.ExecSQL en lugar de Query1.Open ya que son consultas que no regresan resultados.

// Saludos
Responder Con Cita
  #4  
Antiguo 27-08-2004
CORBATIN CORBATIN is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 131
Poder: 21
CORBATIN Va por buen camino
Hola, trabajar con fechas es en ocasiones un fastidio, aunque la mayoría ya hemos aprendido a hacerlo después de tanto tropezar, me refiero sobre todo a resolver consultas sql.

Después de tropezar muchas veces como ya te digo, tomé la determinación de traducir esas fechas a días julianos, de tal forma que lo que tengo que comparar, buscar o cualquier otra cosa, son cantidades tal cuál.

De esta forma no hay posibles errores, tan solo crearte una función de traducir en ambos sentidos las fechas y punto. A la hora de comparar solo tienes que decir que fecha > 1245 o fecha between 1254 and 1278, así de simple.

Un saludo.
__________________
No hay vientos favorables para quién no conoce su rumbo.
Responder Con Cita
  #5  
Antiguo 27-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por CORBATIN
tan solo crearte una función de traducir en ambos sentidos las fechas y punto. A la hora de comparar solo tienes que decir que fecha > 1245 o fecha between 1254 and 1278, así de simple.
No alcanzo a ver cómo esto facilita las cosas. Las comparaciones de fechas en una consulta SQL tienen que hacerse en el formato adecuado para la base de datos en particular.

La dificultad en realidad se evita si usamos adecuadamente los parámetros y asignamos sus valores con ParamByName ya que este método es quien se encargará de la traducción correcta.

Si hablamos de fechas fuera del contexto de consultas SQL, esto es, únicamente en tipos TDate o TDateTime, entonces ciertamente funciones como las que mencionas peden ser útiles.

Afortunadamente, las últimas versiones de Delphi ya proveen multitud de rutinas para compaaciones de fechas y horas y cálculo de intervalos.

// Saludos
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 04:11:01.


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