第一种方式:
TPivotDataSet(dsbReport.DataSet).SQLFilter := sFilter;
if not TPivotDataSet(dsbReport.DataSet).Active then
TPivotDataSet(dsbReport.DataSet).Open
else
TPivotDataSet(dsbReport.DataSet).SQLFiltered := True;
第一次打开数据集根本不按sFilter的条件过滤,第二次打开如果该条件没有数据就报地址错误。
第二种方式:
dsbReport.DataSet.Close;
TPivotDataSet(dsbReport.DataSet).DecisionDef.SQL := sSQL;
dsbReport.DataSet.Open;
这个报错更让人不可理解:"Cannot perform this operation on an open dataset” 明明前面有这句:dsbReport.DataSet.Close了,为什么还要提示不能在打开状态下进行操作??!!