![]() |
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. |
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 |
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:
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 |
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. |
Cita:
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 |
La franja horaria es GMT +2. Ahora son las 00:01:57. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi