2017-03-29 1 views
0

먼저이 코드가 99 %의 시간에 작동하지만이 오류를 수신하는 동안 클라이언트가 불만을 제기하는 것을 강조하고 싶습니다. 저장 프로 시저에 2 개의 매개 변수를 전달하기위한 벨로우즈 코드가 있습니다. frmSetLoggerTime은 datetimepicker (dtpToDate)가있는 양식입니다. 누구든지이 문제를 겪었습니까? 나는 SQL Server와 볼랜드 델파이 7을 사용하고 2008 년때때로 다음과 같은 오류가 나타납니다. 프로 시저 또는 함수에 제공된 매개 변수가 필요하지 않습니다.

enter image description here

다음
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; 

는 저장 프로 시저입니다 :

ALTER PROCEDURE [dbo].[UpdateRebelDateTime] @UpdateDateTime datetime,  @DataLoggerID int 
AS 
SET NOCOUNT ON 
    UPDATE tblDataLoggers SET UpdateDateTime = @UpdateDateTime,  UpdateDateTimeDelay = GETUTCDATE() 
    WHERE DataLoggerID = @DataLoggerID 

답변

0

당신은 다른 매개 변수 이름 사용 : @UdapteTime

당신의 코드 :

ParUdapteTime := cmdObj.CreateParameter('@UdapteTime', adDate, adParamInput, 3, frmSetLoggerTime.dtpToDate.DateTime); 

그리고 기대 :

@UpdateDateTime 
+0

을이이 시대의 대부분의 작업 왜 인 경우에? – ppetkov

관련 문제