起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 328|回复: 17

【搞定】如何编写代码对决策数据集新增自定义维?急急**

[复制链接]
发表于 2007-11-1 13:01:36 | 显示全部楼层 |阅读模式
如何编写代码对决策数据集新增自定义维?急急
回复

使用道具 举报

发表于 2007-11-1 13:26:53 | 显示全部楼层
参考 http://bbs.justep.com/forum.php?mod=viewthread&tid=13876  15楼有个例子

关于自定义维,可以直接在决策数据集设置一下,然后复制这个数据集,粘贴到记事本上,就能看到相关代码了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-1 15:09:07 | 显示全部楼层
这个帖子我看了,但是没有设置自定义维的代码!
能不能提供一个例子或代码?
回复 支持 反对

使用道具 举报

发表于 2007-11-1 15:45:27 | 显示全部楼层
是,所以我才后面说了,让你直接在决策数据集上模拟定义自定义维,然后复制粘贴到记事本就看到代码了,然后参考链接的例子就可以了,你做了吗?遇到啥问题呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-1 16:11:13 | 显示全部楼层
我做了!还是不行,出错!

error.jpg

15.02 KB, 下载次数: 165

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-1 16:13:36 | 显示全部楼层
这是我的代码:
var
    ddd: TDecisionDimensionDef;
    dsd: TDecisionSummaryDef;
begin
    DecisionBrokerJCSJJ1.DataSet.Close();
TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.BeginUpdate;
try
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.DimensionDefs.Clear();  //出错语句
    ddd:=TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.DimensionDefs.Add;
    ddd.FieldName:= 'FPRIORITY';
    ddd.TableName:= 'TTask';
    ddd.FieldType:= TFieldType.ftString;
    ddd.DisplayName:='重要度';
    ddd.IsPrimaryKey := False;
    ddd.Origin := 'FPRIORITY';
    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(DecisionBrokerJCSJJ1.DataSet).DecisionDef.DimensionDefs.Add;
    ddd.FieldName:= '_ZD_1';
    ddd.FieldType:=TFieldType.ftString;
    ddd.DisplayName:='自定义维1';
    ddd.IsPrimaryKey := False;
    ddd.IsAgg := False;
    ddd.IsUserField := False;
    ddd.DimType := TDecisionDimType.dtDataDim;
    ddd.DimStyleDefType := TDecisionDimstyleDefType.dfRowDim;
    ddd.DimIndexDef := 0;
    ddd.ShowSubTotal := False;

    ddd.CustomDim.Strings.Add('已完成,TTASK.FSTATE = ''tsFinished''');
    ddd.CustomDim.Strings.Add('已退回,TTASK.FSTATE = ''tsReturned''');

    ddd.CustomDim.FieldType := TCustomDimType.cdtString;
    ddd.BinType := TBinType.binNone;

    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.SummaryDefs.Clear();
    dsd:=TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.SummaryDefs.Add();
    dsd.FieldName := 'FSPERSONNAME';
    dsd.TableName := 'TTask';
    dsd.FieldType := TFieldType.ftString;
    dsd.DisplayName :='提交人';
    dsd.Origin := 'FSPERSONNAME';
    dsd.IsPrimaryKey := False;
    dsd.IsAgg := True ;
    dsd.SummType := TdecisionSummtype.dtAggSumm;
    dsd.SummFlags := TSummFlags.sfSum;

    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).Database.URL:= 'Biz:\SYSTEM\System.DataBase';
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).SQL.Text:='SELECT FSTATE AS "状态", FKIND AS "类型", "已完成" AS "自定义维1", FSPERSONNAME AS "提交人" FROM TTASK WHERE (TTASK.FSTATE = "tsFinished") GROUP BY FSTATE, FKIND, FSPERSONNAME UNION SELECT FSTATE AS "状态", FKIND AS "类型", "已退回" AS "自定义维1", FSPERSONNAME AS "提交人" FROM TTASK WHERE (NOT(TTASK.FSTATE = "tsFinished") AND (TTASK.FSTATE = "tsReturned")) GROUP BY FSTATE, FKIND, FSPERSONNAME';
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.ShowFieldName := False;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.SummAreaWidth := 1;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.SummAreaHeight := 1;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.MaxDims := 5;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.MaxSums := 10;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.MaxCells := 0;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.DecisionType := TDecisionType.dctStatistics;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.DatabaseURL := 'Biz:\SYSTEM\System.DataBase';
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.OriginalSQL.Text := 'SELECT * FROM TTASK';
finally
  TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.EndUpdate;
end;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).Open();
回复 支持 反对

使用道具 举报

发表于 2007-11-1 17:27:00 | 显示全部楼层
5楼的错误,是因为你创建的是自定义维,不是实际的维护,所以
    //ddd.DimType := TDecisionDimType.dtDataDim;
    ddd.DimType := TDecisionDimType.dtCustomDim;
这你模拟自定义维后,应该能看到代码的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-1 17:50:40 | 显示全部楼层
这个问题我已经改了,但还是提示出错!

自定义维的维值怎么定义?
我是这样做的,不知道对不对,代码:
var
    Strs  : TStrings;  

  Strs := TStringList.Create;
    Strs.CommaText := '已完成,TTASK.FSTATE=''tsFinished''';
    ddd.CustomDim.Strings.AddStrings(Strs);
    Strs.Clear;
    Strs.CommaText := '已退回,TTASK.FSTATE=''tsReturned''';
    ddd.CustomDim.Strings.AddStrings(Strs);

自定义维值代码怎么写?

error1.jpg

13.13 KB, 下载次数: 143

回复 支持 反对

使用道具 举报

发表于 2007-11-2 10:21:58 | 显示全部楼层
自定义维的增加代码,参考


  ddd:=TDecisionDataSet(DecisionBrokerJCSJJ1.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 := 1;
    ddd.ShowSubTotal := False;
    ddd.CustomDim.Strings.Add('bb;TTASK.FPREEMPTMODE = '+#39+'omFirstProcess'+#39);
    ddd.CustomDim.Strings.Add('aa;TTASK.FPREEMPTMODE = '+#39+'omFirstOpen'+#39);
    ddd.CustomDim.FieldType := TCustomDimType.cdtString;
    ddd.BinType := TBinType.binNone;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-2 12:06:09 | 显示全部楼层
还是出错!提示同样的问题
代码:
procedure TJCLF1.Button4Click(Sender: TObject);
var
  ddd: TDecisionDimensionDef;
  dsd: TDecisionSummaryDef;
begin
  DecisionBrokerJCSJJ1.DataSet.Close();
  TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.BeginUpdate;
  try
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.DimensionDefs.Clear();  //出错语句
    ddd:=TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.DimensionDefs.Add;
    ddd.FieldName:= 'FPRIORITY';
    ddd.TableName:= 'TTask';
    ddd.FieldType:= TFieldType.ftString;
    ddd.DisplayName:='重要度';
    ddd.IsPrimaryKey := False;
    ddd.Origin := 'FPRIORITY';
    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(DecisionBrokerJCSJJ1.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('aa;TTASK.FPREEMPTMODE = '+#39+'omFirstOpen'+#39);
    ddd.CustomDim.Strings.Add('bb;TTASK.FPREEMPTMODE = '+#39+'omFirstProcess'+#39);
    ddd.CustomDim.FieldType := TCustomDimType.cdtString;
    ddd.BinType := TBinType.binNone;

    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.SummaryDefs.Clear();
    dsd:=TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.SummaryDefs.Add();
    dsd.FieldName := 'FSPERSONNAME';
    dsd.TableName := 'TTask';
    dsd.FieldType := TFieldType.ftString;
    dsd.DisplayName :='提交人';
    dsd.Origin := 'FSPERSONNAME';
    dsd.IsPrimaryKey := False;
    dsd.IsAgg := True ;
    dsd.SummType := TdecisionSummtype.dtAggSumm;
    dsd.SummFlags := TSummFlags.sfSum;

    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).Database.URL:= 'Biz:\SYSTEM\System.DataBase';
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).SQL.Text:='SELECT FPRIORITY AS "重要度","aa" AS "自定义维", FSPERSONNAME AS "提交人" FROM TTASK WHERE (TTASK.FPREEMPTMODE = ''omFirstOpen'') GROUP BY FSPERSONNAME, FPRIORITY UNION SELECT FPRIORITY AS "重要度", "bb" AS "自定义维", FSPERSONNAME AS "提交人" FROM TTASK WHERE (NOT(TTASK.FPREEMPTMODE = ''omFirstOpen'') AND (TTASK.FPREEMPTMODE = ''omFirstProcess'')) GROUP BY FSPERSONNAME, FPRIORITY';
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.ShowFieldName := False;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.SummAreaWidth := 1;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.SummAreaHeight := 1;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.MaxDims := 5;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.MaxSums := 10;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.MaxCells := 0;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.DecisionType := TDecisionType.dctStatistics;
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.DatabaseURL := 'Biz:\SYSTEM\System.DataBase';
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.OriginalSQL.Text := 'SELECT * FROM TTASK';
  finally
    TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).DecisionDef.EndUpdate;
  end;
  TDecisionDataSet(DecisionBrokerJCSJJ1.DataSet).Open();
end;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-29 19:26 , Processed in 0.045775 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表