Ver Mensaje Individual
  #11  
Antiguo 19-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 28
Lepe Va por buen camino
No hay que especificar el "Datatype" del parámetro, eso solo hay que hacerlo con ADO, porque ADO no tiene la opción de parambyname(...).AsDateTime. El resto de componentes de acceso, si tienen dicho método y al poner AsDateTime := datetimepicker.date, ya le estás diciendo a delphi que es un parámetro de fechas.

Al asignar el SQL, delphi internamente hace el parser y crea los parámetros automáticamente.

Esta forma NO la recomiendo para nada:
Código Delphi [-]
Query1.close;
Query1.sql.Add('select venta.fecha, stock.codigo, stock.descrip');
Query1.sql.Add('from ventas, stock');
Query1.sql.Add('where stock.codigo = venta.codigo and fecha = '+StrToDate(datetimepicker1.Date));
ya que incrustas la fecha directamente en el SQL, pero estas usando StrToDate, que depende de la configuración de windows para establecer el formato de fecha, leasé mm/dd/yyyy o bien dd/mm/yyyy o bien yyyy/mm/dd, y por ahí empiezan los problemas, dado que puede interpretar 01/02/2007 como el uno de febrero o como el 2 de enero devolviendo registros que no esperas, y este fallo es difícil de localizar.

Delphi sabe que ":fec" es algo especial porque lleva los dos puntos delante. Sabe que no es un campo porque ha mirado los campos del Select de la consulta y "fec" no aparece en ellos, por tanto, creará un parámetro.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita