When you use parameters, you need to define them in the "Parameters" property, but when you need to make some changes you need to, for example, load the fields in your table you may have problems, you need to reset everything again in the same way as if you need to set field masks you must use the Before Open event. Usually I use (ADOQuery + DataSetProvider + ClientDataSet). I do not use parameters, I make queries using pure sql.
You can mount up a procedure so you can do all your queries, usually I create an ADOQuery for queries only as follows: (sqlGeneric + dspGeneric + cdsGeneric);
//adicionar no type
procedure ConsultaDadosGenerico(NomeDoClienteDataSet:TClientDataSet; sqlConsulta :String);
procedure TForm1.Button1Click(Sender: TObject);
begin
ConsultaDadosGenerico(cdsCliente, 'Select * from controle where ribbons = ' + QuotedStr(Trim(Edit1.Text)) );
end;
procedure TForm1.ConsultaDadosGenerico(NomeDoClienteDataSet: TClientDataSet; sqlConsulta :String);
begin
NomeDoClienteDataSet.Close;
NomeDoClienteDataSet.CommandText := '';
NomeDoClienteDataSet.CommandText := sqlConsulta;
NomeDoClienteDataSet.Open;
end;