d'abord je tiens à souligner que ce code fonctionne dans 99% des cas, mais de temps en temps les clients se plaignent de recevoir cette erreur. J'ai le code ci-dessous pour passer 2 paramètres à une procédure stockée. frmSetLoggerTime est un formulaire avec un datetimepicker (dtpToDate). Quelqu'un est-il déjà tombé sur ce problème? J'utilise Borland Delphi 7 avec SQL Server 2008.Parfois, je reçois l'erreur suivante: Procédure ou fonction attend paramètre qui n'a pas été fourni
procedure TFormDBManager.ActionSetLoggerTimeExecute(Sender: TObject);
var
frmSetLoggerTime: TfrmSetLoggerTime;
var
RecAffected, tmpOleVar:OleVariant;
cmdObj: _Command;
ParDataLoggerID, ParUdapteTime :_Parameter;
begin
tmpOleVar:=OleCtrls.EmptyParam;
frmSetLoggerTime := TfrmSetLoggerTime.Create(self);
try
frmSetLoggerTime.dtpToDate.DateTime := now;
if frmSetLoggerTime.ShowModal = mrOK then
begin
cmdObj := CoCommand.Create;
cmdObj.Set_ActiveConnection(DBRemoteModule.SLogConnection.ConnectionObject);
cmdObj.CommandType := adCmdStoredProc;
cmdObj.CommandText := 'UpdateRebelDateTime';
ParUdapteTime := cmdObj.CreateParameter('@UdapteTime', adDate, adParamInput, 3, frmSetLoggerTime.dtpToDate.DateTime);
cmdObj.Parameters.Append(ParUdapteTime);
ParDataLoggerID := cmdObj.CreateParameter('@DataLoggerID', adInteger, adParamInput, 4, QueryLogger.FieldByName('DataLoggerID').AsInteger);
cmdObj.Parameters.Append(ParDataLoggerID);
cmdObj.Execute(RecAffected, tmpOleVar, 0);
end;
finally
frmSetLoggerTime.free;
end;
end;
Voici la procédure stockée:
ALTER PROCEDURE [dbo].[UpdateRebelDateTime] @UpdateDateTime datetime, @DataLoggerID int
AS
SET NOCOUNT ON
UPDATE tblDataLoggers SET UpdateDateTime = @UpdateDateTime, UpdateDateTimeDelay = GETUTCDATE()
WHERE DataLoggerID = @DataLoggerID
Si tel est le cas pourquoi il fonctionne la plupart du temps? – ppetkov