Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Seleccionar los registros con una fecha determinada (https://www.clubdelphi.com/foros/showthread.php?t=41330)

Novat0 13-03-2007 07:42:14

Seleccionar los registros con una fecha determinada
 
Me gustaría saber cómo elegir los registros que tienen una fecha concreta, elegida a través de un TCalendar.

Mi fallida sentencia SQL es:
Código SQL [-]
SQL.Add('SELECT * FROM REGISTROS');
SQL.Add('WHERE FECHA_ENTRADA = ' + DatetoStr(Calendario.Date));
SQL.Add('ORDER BY ID_REGISTRO');
También he intentado entrecomillar el DatetoStr(Calendario.Date), pero falla igualmente.

¿Cuál es la sentencia SQL correcta?

Gracias.

Héctor Randolph 13-03-2007 07:51:24

Hola Novat0

Prueba con esto:

Código SQL [-]
SQL.Add('SELECT * FROM REGISTROS');
SQL.Add('WHERE FECHA_ENTRADA = ' +QuotedStr(DatetoStr(Calendario.Date)));
SQL.Add('ORDER BY ID_REGISTRO');


Saludos

Novat0 13-03-2007 07:57:29

Gracias por contestar tan rápido.

Tu solución debería ser la correcta y cuando hago una búsqueda sin resultados no sucede nada incorrecto.

El problema se produce cuando sí hay un registro en esa fecha, ya que me salta el error "Database Server Error: conversion error from string "14/02/2007"".

Héctor Randolph 13-03-2007 08:01:47

Prueba con una consulta parametrizada, por ejemplo:

Código Delphi [-]
with Query1 do
begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT * FROM REGISTROS');
  SQL.Add('WHERE FECHA_ENTRADA =:MiFecha');
  SQL.Add('ORDER BY ID_REGISTRO');
  ParamByName('MiFecha').AsDateTime:=Calendar.Date;
  Open;
end;

Saludos

Novat0 13-03-2007 08:49:42

Gracias de nuevo. Ahora esa búsqueda funciona, pero ha provocado otro problema.

Otras búsquedas que usan el mismo DataSet se descontrolan debido a la inserción del parámetro MiFecha y, después de relizar una búsqueda por fecha (antes no pasa nada), el resto de búsquedas (por nombre) dejan de funcionar y aparece el mensaje 'unknown ISC error 0'.

¿Cómo puedo quitar el parámetro 'MiFecha' después de haberlo usado?

Un saludo y gracias.

Ivanzinho 13-03-2007 09:44:07

Si no quieres usar el parametro puedes hacer lo siguiente
Código Delphi [-]
SQL.Add('SELECT * FROM REGISTROS');
SQL.Add('WHERE FECHA_ENTRADA = ' +QuotedStr(FormatDateTime('mm/dd/yyyy',Calendario.Date)); 
SQL.Add('ORDER BY ID_REGISTRO');

Un saúdo


La franja horaria es GMT +2. Ahora son las 15:02:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi