The VirtualData property allows to determine whether the control should read the entire recordset at once (synchronously), or in small chunks, on an as-needed basis (asynchronously). If VirtualData is set to False, the entire recordset is read immediately. For large recordsets (over 1000 records or so), this can be time-consuming, so this setting is rarely used. If VirtualData is set to True, the data is read only when the control needs it (to display or edit, for example), in chunks of 100 rows at a time. The default value for the VirtualData property is True, and you should rarely have to change it.