使用ADOStoredProc控件调用下面这个存储过程:
CREATE PROCEDURE  Sub_tbPdmPlanNum
    @WorkGroupCode VarChar(50),
    @PlanEndDate DateTime,
    @SumNum  Real OutPut
AS
    select 
      @SumNum=Sum(PlanNum)  
    from tbPdm 
    where WorkGroupCode=@WorkGroupCode and PlanEndDate=@PlanEndDate
GO调用程序如下:
    ASSum.Parameters.Refresh;
    ASSum.Parameters.ParamByName('@WorkGroupCode').Value:=WorkGroupCode;
    ASSum.Parameters.ParamByName('@PlanEndDate').Value:=EndDate;
    ASSum.Parameters.ParamByName('@SumNum').Value:=0;
    ASSum.ExecProc;
    i:=ASSum.parameters.ParamByName('@SumNum').value;但是当存储过程的求和结果为空值时(select结果为空),则程序运行出错,提示说类型转换错误,不知道怎样处理,请高手指点:

解决方案 »

  1.   

    --把合计情况进行一个判断:
    CREATE PROCEDURE  Sub_tbPdmPlanNum
        @WorkGroupCode VarChar(50),
        @PlanEndDate DateTime,
        @SumNum  Real OutPut
    AS
        select 
          @SumNum=Case when Sum(PlanNum) is null then  0 else Sum(PlanNum) end
        from tbPdm 
        where WorkGroupCode=@WorkGroupCode and PlanEndDate=@PlanEndDate
    GO
      

  2.   

    ASSum.Parameters.Refresh;
        ASSum.Parameters.ParamByName('@WorkGroupCode').Value:=WorkGroupCode;
        ASSum.Parameters.ParamByName('@PlanEndDate').Value:=EndDate;
        ASSum.Parameters.ParamByName('@SumNum').Value:=0;
        ASSum.ExecProc;
        
        i:=ASSum.parameters.ParamByName('@SumNum').value;//是这句出错。
    加TRY 就可以了
      

  3.   

    TO:qihong_2000(qisirsi) 
    奇怪,我在给分的时候怎么老是说回复次数大于跟贴次数呢,昏,给分都给不出