Executing an MDX query can either result in a dataset, or it can result in the flattened rowset. The application can control which object (rowset or a dataset) can result from a query. The following rules determine the object resulting from ICommandText::Execute when the GUID specified in the rguidDialect argument of ICommandText::SetCommandText is MDGUID_MDX. (The provider applies the following rules in the sequence shown below, and exits if any rule is satisfied.)
Therefore, the guaranteed way for a consumer to get the flattened rowset of a dataset is by setting the DBPROP_IRowset property to VARIANT_TRUE. The guaranteed way for a consumer to get a dataset is to set DBPROP_IRowset property to VARIANT_FALSE (or leave it untouched) and ask for an interface on the Dataset object.