Ver Mensaje Individual
  #3  
Antiguo 11-12-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Reputación: 20
efelix Va por buen camino
Hola Poliburro, muchas gracias por tu respuesta, se nota que eres una persona aventajada en sql sever. Modifiqué el procedimiento almacenado como me indicaste y logré algo que no sabía. Es decir poner el formato de fecha a día-mes-año, porque sql server por defecto lo pone en mes-día-año, es decir que aprendí algo nuevo. Ahora en cuanto a delphi modifiqué el código segun me sugeriste y nada el mismo error. Tengo mis dudas en cuanto a lo que me dices, pues en mi aplicación he utilizado otros procedimientos almacenados que tienen como parámetros campos del tipo datetime, los cuáles les paso a través de un datetimepicker y nunca me dieron ese tipo de error, la única diferencia es que aquellos devuelven un conjunto de resultados y en este caso estoy tratando de actualizar la base de datos. Yo creía que delphi internamente se encargaba de hacer el cambio. Por ejemplo tengo un formulario donde tengo un dbgrid donde muestro un conjunto de registros que cumplen una determinada condición a través de un procedimiento almacenado, el código es el siguiente:
Código Delphi [-]
begin
ADOSPPendientesPago.Close;
if DTPFecha2.Date  < DTPFecha1.Date  then
begin
 MessageDlg('La fecha final debe ser superior a la inicial',mterror,[mbok],0);
 Exit;
end;
ADOSPPendientesPago.Parameters.ParamByName('@FechaRecepcion').Value := Trunc(DTPFecha1.Date);
ADOSPPendientesPago.Parameters.ParamByName('@FechaRecepcion1').Value := Trunc(DTPFecha2.Date);
ADOSPImporteTotal.Parameters.ParamByName('@Fecha').Value := Trunc(DTPFecha1.Date);
ADOSPImporteTotal.Parameters.ParamByName('@Fecha1').Value := Trunc(DTPFecha2.Date);
ADOSPImporteTotal.ExecProc;
EditImporteTotal.Text := ADOSPImporteTotal.Parameters.ParamValues['@ImporteTotal'];
ADOSPPendientesPago.Open;
end;
Esto me funciona perfectamente bien.
Y el código del procedimiento almacenado que me devuelve el conjunto de registros es este:
Código SQL [-]
CREATE PROCEDURE spPendientesPago 
               @FechaRecepcion datetime,
               @FechaRecepcion1 datetime
                               
AS
              SELECT      Facturas.IdFactura, Proveedores.NombreProveedor, Facturas.Descripcion, Facturas.Importe
              FROM         Facturas INNER JOIN
                     Proveedores ON Facturas.IdProveedor = Proveedores.IdProveedor
WHERE     (Facturas.Aplicada = 0) AND Facturas.FechaRecepcion>=@FechaRecepcion AND Facturas.FechaRecepcion<=@FechaRecepcion1
GO
Por eso te digo que no se donde está el problema. Te reitero la diferencia es que este evuelve un conjunto de resultados y el otro es para actualizar. No se si esa es la causa como tu mismo dijiste soy nuevo en ambas cosas, tanto en sql server como en delphi. El error que se origina te lo pongo textualmente: 'Aplication uses a value of the wrong type for the current operation', cuando le doy ok se detiene en la línea que ya expliqué en el mensaje anterior aún cuando ya hizé el cambi que me sugeriste:ADOSPDebCheque.Parameters.ParamByName('@FechaDebito').Value := FormatDateTime('yyyy-dd-mm',DTPFechaDebitoPanel.Date). Espero puedas ayudarme y hayas entendido mi explicación. Te reitero las gracias.
Responder Con Cita