|
不知道什么原因?这段代码创建自定义维是正常的:
procedure TJCLFZDYW.Button1Click(Sender: TObject);
var
ddd: TDecisionDimensionDef;
dsd: TDecisionSummaryDef;
begin
DecisionBrokerJCFXZDYWSJJ.DataSet.Close();
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.BeginUpdate;
try
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.DimensionDefs.Clear();
ddd:=TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.DimensionDefs.Add;
ddd.FieldName:= 'FDEPTID';
ddd.TableName:= 'TPERSON';
ddd.FieldType:= TFieldType.ftString;
ddd.DisplayName:='部门编号';
ddd.IsPrimaryKey := False;
ddd.Origin := 'FDEPTID';
ddd.IsAgg := False;
ddd.DimType :=TDecisionDimType.dtDataDim;
ddd.DimStyleDefType :=TDecisionDimstyleDefType.dfColDim;
ddd.DimIndexDef := 0;
ddd.ShowSubTotal := False;
ddd.CustomDim.FieldType :=TCustomDimType.cdtString;
ddd.BinType := TBinType.binNone;
ddd:=TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.DimensionDefs.Add;
ddd.FieldName := '_ZD_1';
ddd.FieldType := TFieldType.ftString;
ddd.DisplayName := '部门名称';
ddd.IsPrimaryKey := False;
ddd.IsAgg := False;
ddd.IsUserField := False;
ddd.DimType := TDecisionDimType.dtCustomDim;
ddd.DimStyleDefType := TDecisionDimstyleDefType.dfRowDim;
ddd.DimIndexDef := 0;
ddd.ShowSubTotal := False;
ddd.CustomDim.Strings.Add('部门A>10;TPERSON.FDEPTID = '+#39+'SDLGS01'+#39);
ddd.CustomDim.Strings.Add('部门B>10;TPERSON.FDEPTID = '+#39+'530000000000'+#39);
ddd.CustomDim.Strings.Add('部门C>10;TPERSON.FDEPTID = '+#39+'530000000009'+#39);
ddd.CustomDim.FieldType := TCustomDimType.cdtString;
ddd.BinType := TBinType.binNone;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.SummaryDefs.Clear();
dsd:=TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.SummaryDefs.Add();
dsd.FieldName := 'ESEX';
dsd.TableName := 'TPERSON';
dsd.FieldType := TFieldType.ftInteger;
dsd.DisplayName :='部门人数';
dsd.Origin := 'ESEX';
dsd.IsPrimaryKey := False;
dsd.IsAgg := True;
dsd.IsUserField := False;
dsd.SummType := TdecisionSummtype.dtDataSumm;
dsd.SummFlags := TSummFlags.sfUnknown;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).Database.URL:= 'Biz:SYSTEMSystem.DataBase';
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).SQL.Text:='SELECT FDEPTID AS "部门编号", '
+'"部门A>10" AS "部门名称", ESEX AS "部门人数" FROM TPERSON '
+'WHERE (TPERSON.FDEPTID = ''SDLGS01'') GROUP BY FDEPTID, ESEX'
+' UNION '
+'SELECT FDEPTID AS "部门编号", "部门B>10" AS "部门名称", ESEX AS "部门人数" FROM TPERSON '
+'WHERE (NOT(TPERSON.FDEPTID = ''SDLGS01'') AND (TPERSON.FDEPTID = ''530000000000'')) GROUP BY FDEPTID, ESEX'
+' UNION '
+'SELECT FDEPTID AS "部门编号", "部门C>10" AS "部门名称", ESEX AS "部门人数" FROM TPERSON '
+'WHERE (NOT(TPERSON.FDEPTID = ''SDLGS01'') AND NOT(TPERSON.FDEPTID = ''530000000000'')'
+' AND (TPERSON.FDEPTID = ''530000000009'')) GROUP BY FDEPTID, ESEX';
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.ShowFieldName := False;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.SummAreaWidth := 1;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.SummAreaHeight := 1;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.MaxDims := 5;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.MaxSums := 10;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.MaxCells := 0;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.DecisionType := TDecisionType.dctStatistics;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.DatabaseURL := 'Biz:SYSTEMSystem.DataBase';
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.OriginalSQL.Text := 'SELECT * FROM TPERSON';
finally
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.EndUpdate;
end;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).Open();
end;
但我对代码做了一下修改,以下代码就不行,出错:
procedure TJCLFZDYW.Button3Click(Sender: TObject);
var
ddd: TDecisionDimensionDef;
dsd: TDecisionSummaryDef;
begin
DecisionBrokerJCFXZDYWSJJ.DataSet.Close();
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.BeginUpdate;
try
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.DimensionDefs.Clear();
ddd:=TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.DimensionDefs.Add;
ddd.FieldName:= 'XMLB';
ddd.TableName:= 'PRCDP_XMJHSQB';
ddd.FieldType:= TFieldType.ftString;
ddd.DisplayName:='项目类别';
ddd.IsPrimaryKey := False;
ddd.Origin := 'XMLB';
ddd.IsAgg := False;
ddd.DimType :=TDecisionDimType.dtDataDim;
ddd.DimStyleDefType :=TDecisionDimstyleDefType.dfRowDim;
ddd.DimIndexDef := 0;
ddd.ShowSubTotal := False;
ddd.CustomDim.FieldType :=TCustomDimType.cdtString;
ddd.BinType := TBinType.binNone;
ddd:=TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.DimensionDefs.Add;
ddd.FieldName := '_ZD_1';
ddd.FieldType := TFieldType.ftString;
ddd.DisplayName := '建设规模区间';
ddd.IsPrimaryKey := False;
ddd.IsAgg := False;
ddd.IsUserField := False;
ddd.DimType := TDecisionDimType.dtCustomDim;
ddd.DimStyleDefType := TDecisionDimstyleDefType.dfColDim;
ddd.DimIndexDef := 0;
ddd.ShowSubTotal := False;
ddd.CustomDim.Strings.Add('X小于等于100 RCDP_XMJHSQB.XMJSGM<=100');
ddd.CustomDim.Strings.Add('X大于100 RCDP_XMJHSQB.XMJSGM>100');
ddd.CustomDim.FieldType := TCustomDimType.cdtString;
ddd.BinType := TBinType.binNone;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.SummaryDefs.Clear();
dsd:=TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.SummaryDefs.Add();
dsd.FieldName := 'COUNT(PRCDP_XMJHSQB.XMBH)';
dsd.TableName := 'PRCDP_XMJHSQB';
dsd.FieldType := TFieldType.ftInteger;
dsd.DisplayName :='项目个数';
dsd.Origin := 'XMBH';
dsd.IsPrimaryKey := False;
dsd.IsAgg := True;
dsd.IsUserField := False;
dsd.SummType := TdecisionSummtype.dtDataSumm;
dsd.SummFlags := TSummFlags.sfCount;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).Database.URL:= 'Biz RCDPZHYWGLJJCPJXXXTPRCDPDB.DATABASE';
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).SQL.Text:='SELECT XMLB AS "项目类别", "X小于等于100" AS "建设规模区间", COUNT(PRCDP_XMJHSQB.XMBH) AS "项目个数" FROM PRCDP_XMJHSQB WHERE (PRCDP_XMJHSQB.XMJSGM<=100) GROUP BY XMLB UNION SELECT XMLB AS "项目类别", "X大于100" AS "建设规模区间", COUNT(PRCDP_XMJHSQB.XMBH) AS "项目个数" FROM PRCDP_XMJHSQB WHERE (NOT(PRCDP_XMJHSQB.XMJSGM<=100) AND (PRCDP_XMJHSQB.XMJSGM>100)) GROUP BY XMLB';
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.ShowFieldName := False;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.SummAreaWidth := 1;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.SummAreaHeight := 1;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.MaxDims := 5;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.MaxSums := 10;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.MaxCells := 0;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.DecisionType := TDecisionType.dctStatistics;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.DatabaseURL := 'Biz RCDPZHYWGLJJCPJXXXTPRCDPDB.DATABASE';
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.OriginalSQL.Text := 'SELECT * FROM PRCDP_XMJHSQB';
finally
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).DecisionDef.EndUpdate;
end;
TDecisionDataSet(DecisionBrokerJCFXZDYWSJJ.DataSet).Open();
end;
出错提示:
|
|