我在SQL存储过程中定义了一个变量@comb,在存储过程中我是是以它为查询的
我如何把@comb传到窗体中的ComboBox2.text 值来查询
这样调用可以吗(GetSomeSearch 是存储过程名)
var
  mDate: TDateTime;
mYear, mMonth, mDay:word;
 @comb:STRING;begin
 @comb:=ComboBox1.text;
ADOQuery1.SQL.Add('Exec GetSomeSearch ' + FloattoStr(mYear) + ',' + FloattoStr(mMonth));
应该如何写呢

解决方案 »

  1.   

    ADOQuery1.SQL.Add('Exec GetSomeSearch ' + FloattoStr(mYear) + ',' + FloattoStr(mMonth)) + ',' + ComboBox1.text;
      

  2.   

    从哪传到哪,@comb是不是输出参数,如果不是,下面的就行1.用存储过程,分别传递三个参数
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      with ADOStoredProc1 do
      begin
        Close;
        ProcedureName := 'GetSomeSearch;1';
        Parameters.Refresh;
        Parameters.ParamByName('@mYear').Value:=mYear;
        Parameters.ParamByName('@mMonth').Value:=mMonth;
        Parameters.ParamByName('@comb').Value:=ComboBox1.text;
        Open;//如果插入更新为ExecSql;
      end;
    end;
    2.
    ADOQuery1.SQL.Add('Exec GetSomeSearch ' + FloattoStr(mYear) + ',' + FloattoStr(mMonth)) + ',' + QuotedStr(ComboBox1.text);
      

  3.   

    procedure TForm1.btn1Click(Sender: TObject);
    begin
      With ADOQuery1 Do Begin
        Close;
        SQL.Clear ;
        SQL.Add(' EXECUTE Test :aa, :bb, :cc Output, :dd Output ') ;
        Parameters.Items[0].Value := 'Test aa';
        Parameters.Items[1].Value := 1234;
        Prepared;
        ExecSQL;
        Edit1.Text := Parameters.Items[2].Value + ' : ' + IntToStr(Parameters.Items[3].Value);
        Close;
      end;
    end;