How to pass parameters to an ADOQuery object?

前端 未结 3 849
执念已碎
执念已碎 2020-12-21 04:31

I am using ADOQuery in Delphi 7 and Oracle. I am getting error while passing parameters to ADOQuery. I have used following line. Please help me to identify error.

         


        
相关标签:
3条回答
  • 2020-12-21 04:34

    We have the same problem, we ended "masking" the class TParameters like this:

    Declaration:

    TMyParameter = class(TParameter)
    private
      function GetAsValue: variant;
      Procedure SetAsValue(const Value: variant);
    public
      property Value: variant read GetAsValue write SetAsValue;
    end;
    

    Implementation:

    procedure TMyParameter.SetAsValue(const Value: variant);
    var
      iPar: Integer;
    
    begin
      for iPar:= 0 to Collection.Count - 1 do
        if (Name = TParameter(Collection.Items[iPar]).Name) then
          TParameter(Collection.Items[iPar]).Value:= Value;
    end;
    
    function TMyParameter.GetAsValue: variant;
    begin
      Result:= inherited Value;
    end;
    

    And how to use:

    TMyParameter(ADOQuery.Parameters.ParamByName('id')).AsValue:= 'abc';
    

    I hope it helps.

    0 讨论(0)
  • 2020-12-21 04:37

    You need to distinguish between the two id;s:

    ADOQuery.Sql.text:= 'select * from temp_table a where column1 in (select column from table2 b where b.id=:id) and a.id=:id'; 
    ADOQuery.Parameters.ParamByValue('id').value= 'abc'; 
    ADOQuery.open;
    
    0 讨论(0)
  • 2020-12-21 04:46
    for i:=0 to ADOQuery.Parameters.Count-1 do
    begin
      if ADOQuery.Parameters.Items[i].Name = 'id' then
        ADOQuery.Parameters.Items[i].Value := 'abc';
    end;
    
    0 讨论(0)
提交回复
热议问题