My co-worker, Jeff Chojnacki, bumped into this problem today. Basically, if you have a 2-tier setup with ClientDataset, DatasetProvider, SQLQuery, etc., and have code that looks similar to this:
cds1.Close;
q1.SQL.Text := 'SELECT * FROM COUNTRY WHERE COUNTRY LIKE :COUNTRY';
q1.Params.ParamByName('COUNTRY').AsString := eCountry.Text+'%';
cds1.Open;
you will find that the data in cds1 never updates. IOW, if you first pass an 'A', and then pass an 'F', the data will always return as if you are passing the 'A' param.
I used Jeff's test-case and did some debugging and found a work-around, and I believe, the true solution. The work-around is to just call cds1.Params.Clear after cds1.Close. The solution is that TDatsetProvider is returning ptInput Params improperly in DoGetRecords. For all of the gory details, see QC 22335. Hopefully this gets resolved in Update 2.