Just went through this exact situation a few weeks ago myself. Suprisingly there is not an easy solution for this although I did find a work around.
There is no way to set the total height of the details section iteself, only the height of the individual item records. So the first thing you want to do is calculate the indivual record height and then the total for all 10 records. So say the height is 136 for each individual details record, total for 10 shown records should equal 1,360.
Ok under the details section add a Footer section to the report. If you are actually using a footer section, you can add an additional footer. You just want to make sure this blank footer is directly underneath the details section. Set this new blank footer to your total size: 1,360
Now Im not sure how your report is set us to draw the data. Are you allowing the report itself to query directly from the database or passing it a filled dataset? I'm doing the latter. Either way before you display the report you need to know how many records will be displayed so you can adjust the height programmiticaly.
Now the footer does allow us to adjust its height from VB. So I'm creating a blank section that would appear to be the size of 10 records if no records at all were returned. Now what we want to do is shrink this footer for each record that is going to be displayed. So if 8 records are returned, the size should be reduced by (8 * 136) 1088. So the total Footer blank space that should still be visible is (2*136) 272.
In my example, I named the Footer "BlankRecords" but you can use the default of change it appropiately. Basically all Im doing is adjusting the size of the footer before sending directly to the printer.
Dim rpt As New rptMyReport
rpt.BlankRecords.Height -= (ds.tblItems.Count * 136)
rpt.SetDataSource(ds)
rpt.PrintToPrinter(1, False, 0, 0)
'rpt.Section4.Height -= (ds.tblItems.Count * 136) 'Another way of call the section