Hola krewer.
Primero que nada agradezco que hayas compartido tu solución.
Aunque el último código es mas compacto, es vulnerable a la
inyección SQL. El uso de parámetros evita totalmente esa posibilidad.
Usándo parámetros:
Código Delphi
[-]
with fdata do
begin
Close;
SQL.Clear;
SQL.Add('select NICK, HORA, MENSAJE, ESTADO ');
SQL.Add('from BITACORA ');
SQL.Add('where nick = :PNOMBRE and FECHA = :PFECHA');
ParamByName('PNOMBRE').AsString:= nombre;
ParamByName('PFECHA').AsString:= FormatDateTime('YYYY/MM/DD', fecha.Date);
Open;
end;
Generámos un código un poco más extenso, pero mucho más seguro.
También hay que destacar que si el valor de '
nombre' es tomado internamente por la aplicación y no ingresado por el usuario, no hay posibilidad de inyección SQL. De todos modos, el uso de parámetros es una buena costumbre.
Un saludo.