. 我想在前台用一个ADOStoredProc1在不同时间连接后台多个存储过程,在前台应怎么动态设置Paramerters?
  我是这样写的,但出错,什么原因?  km:='c'+copy(datetimetostr(date),1,4)+copy(datetimetostr(date),6,2);
  ADOStoredProc1.Active :=false;
ADOStoredProc1.Parameters.clear;
ADOStoredProc1.Parameters.add;
  ADOStoredProc1.Parameters[0].Value :=km;if jkglstate='ys' then
   begin
     ADOStoredProc1.ProcedureName :='yssfk_txt;1';
     ADOStoredProc1.ExecProc ;
     Application.messagebox('节水办应收数据导出完毕!  ','information',MB_ICONINFORMATION);
   end;if jkglstate='ss' then
   begin
     ADOStoredProc1.ProcedureName :='sssfk_txt;1';
     ADOStoredProc1.ExecProc ;
     Application.messagebox('节水办实收数据导出完毕!  ','information',MB_ICONINFORMATION);
   end;我分析是否否是动态设置ADOStoredProc1.Parameters时出的错?

解决方案 »

  1.   

    放几个TListBox让用户选,根据选项判断怎么设置
      

  2.   

    给你个Demo:
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      ADOStoredProc1: TADOStoredProc;
    begin
      ADOStoredProc1 := TADOStoredProc.Create(Self);
      ADOStoredProc1.Close;
      ADOStoredProc1.ConnectionString := 'Provider=SQLOLEDB.1;Password=hhsm;Persist 
    ' +
        'Security Info=True;User ID=sa;Initial Catalog=hhbs;Data Source=192.168.3.19
    7';
      ADOStoredProc1.ProcedureName := 'DeleteBill';
      ADOStoredProc1.Parameters.Refresh;
      ADOStoredProc1.Parameters.ParamByName('@BillNo').Value := '203031700110002';
      //单据编号
      ADOStoredProc1.Parameters.ParamByName('@DeleteEmpID').Value :=
        '{AF13E648-20DD-4F09-88E7-4580033E61CB}';
      //作废人ID
      ADOStoredProc1.Parameters.ParamByName('@UpdateNum').Value := 0;
      //返回值
      try
        ADOStoredProc1.ExecProc;
      finally
        showmessage(ADOStoredProc1.Parameters.ParamByName('@UpdateNum').Value);
        //根据返回值判断执行情况
        {@UpdateNum = 0  --执行SQL错误!
         @UpdateNum = 1 --作废成功!
         @UpdateNum = 2 --可能已经入库了,此单据不能作废!
         @UpdateNum = 3 -- 批发和零售单据是全款,不作废,只能退货
         @UpdateNum = 4 --此单据已经作废了!}
        ADOStoredProc1.Free;
      end;
    end;
      

  3.   

    既然你都这样了,何不连ADOStoredProc1也动态产生,那样岂非更省事!