存储过程:
CREATE   PROCEDURE [DBO].[user_returnsum]
@sn char(14) ,
@roomname char(20),
@allsum int output,
@localsum int output
 AS
  set @allsum=
  (SELECT  SUM(金额) from 消费明细表 where 流水号=@sn)
  set @localsum=
  (SELECT  SUM(金额) from 消费明细表 where 流水号=@sn and 包间名称=@roomname )
GODELPHI 调用存储过程:
  with ADOStoredProc1 do
  begin
    close;
    ProcedureName:='user_returnsum';
    Parameters.parambyname('@sn').value:=SN;
    Parameters.parambyname('@roomname').value:=RoomName;
    ExecProc;
    Edit1.Text:=inttostr(Parameters.parambyname('@allsum').value);
    Edit2.Text:=inttostr(Parameters.parambyname('@localsum').value);
  end;ADOStoredProc1 在使用Build 获紧 ConnectionString 后,再OBJECT INSPECTOR 里设定好存储过程名(user_returnsum),再运行没有错误。一看(Parameters)属性里已经填好了以上四个参数及RETURN 参数。  但是,如果我在把 Connection 属性设置成 ADOConnection1 后,就不能执行了,说@sn Not found! 在座的高手请指点一二!

解决方案 »

  1.   


    我也不会一点建议:
    ProcedureName:='user_returnsum';
    连接后看看你的过程名称能不能在程序里面选择出来?然后在看看你得Prameters!!!有几个参数!~!
    正常应该没有问题的.
      

  2.   

    ProcedureName:='user_returnsum;1';
    params.refresh
    先刷新一下参数
      

  3.   

    改成下面这样搞定了,
    特别感谢 “Changefish(问题总会解决的)”。
    在我眼里,比我懂的人都是高手。我只希望解决问题的人,能在最后把正确的解决方法公布一下,省得以后遇到同样问题的低手再次提出这个问题!在我试验的过程中,如果不加以下两句,程序还是会提示@Allsum 没有找到!
        Parameters.parambyname('@Allsum').value:=i;
        Parameters.parambyname('@localsum').value:=j;
      with ADOStoredProc1 do
      begin
        close;
        ProcedureName:='user_returnsum';
        parameters.refresh;
        Parameters.parambyname('@sn').value:=SN;
        Parameters.parambyname('@roomname').value:=RoomName;
        Parameters.parambyname('@Allsum').value:=i;
        Parameters.parambyname('@localsum').value:=j;
        ExecProc;
        EditThisRoomSUM.Text:=inttostr(Parameters.parambyname('@Localsum').value);
        EditAllRoomSum.Text:=inttostr(Parameters.parambyname('@Allsum').value);
      end;