The last time I tried to change a field's value dynamically was in VB6 but I would think the same principle applies. The approach I took was to set up all the data fields on the CR report that I needed and then I dynamically was able to control what went on the report by supplying the report with a recordset (under the old ADO).
In terms of .Net, set up your report based on the data needed and then set the Data Source for the CR from VB.Net with the appropriate dataset (containing the data that you want to appear on the report). If you change the dataset, you change the data that appears on the report.
That would be the approach that I take. I always found it better (performance wise) to have CR do as little data manipulation as possible. Let the VB format your data and then pass the data to CR for presentation.