en el codigo que usas lape:
existe un error a mi parecer pues como el tomara los valores si para consultar si los estas asignando despues de consultar.
ademas para mí es mejor pasar parametros creando los parametros en ejecucion
me explico eje:
Código:
dm.dataset1.Parameters.AddParameter.Index:=0 ;
dm.dataset1.Parameters.Items[0].Name:='parametro';
dm.dataset1.Parameters.Items[0].DataType:=fttipo de datos;
dm.dataset1.Parameters.Items[0].Direction:=pdinput;
dm.dataset1.Parameters.ParamByName('pr').Value:=componente;
dm.dataset1.Close;
dm.dataset1.CommandText:='select * from 10rhacci where campo =:pr' dm.dataset1.Open;
dm.dataset.Parameters.Clear;