起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 142|回复: 5

【搞定】决策立方数据集修改求和项的问题**

[复制链接]
发表于 2007-12-3 15:41:55 | 显示全部楼层 |阅读模式
用代码修改决策立方数据集的项属性一定要全部清除旧定义,重新增加吗?下面代码为何无效?

说明:下面是决策立方数据集定义:
object DataSetJCSJJ1: TDecisionDataSet
  Relation.DeleteRule = krNoAction
  Relation.UpdateRule = krNoAction
  ID = 'JCSJJ1'
  DisplayName = #20915#31574#25968#25454#38598'1'
  Database.Reference = 'Biz:\CWGLXT\DB_CWSJK.DATABASE'
  CheckConstraints = <>
  Params = <>
  UseBizRange = True
  DecisionDef.DimensionDefs = <
    item
      FieldName = 'Y'
      TableName = 'TBL_GZB'
      FieldType = ftInteger
      DisplayName = #26376
      Origin = 'Y'
      IsPrimaryKey = True
      IsAgg = False
      IsUserField = False
      DimType = dtDataDim
      DimStyleDefType = dfColDim
      DimIndexDef = 0
      ShowSubTotal = True
      CustomDim.FieldType = cdtString
      BinType = binNone
    end
    item
      FieldName = 'N'
      TableName = 'TBL_GZB'
      FieldType = ftInteger
      DisplayName = #24180
      Origin = 'N'
      IsPrimaryKey = True
      IsAgg = False
      IsUserField = False
      DimType = dtDataDim
      DimStyleDefType = dfRowDim
      DimIndexDef = 0
      ShowSubTotal = False
      CustomDim.FieldType = cdtString
      BinType = binNone
    end
    item
      FieldName = 'YG'
      TableName = 'TBL_GZB'
      FieldType = ftString
      DisplayName = #21592#24037
      Origin = 'YG'
      IsPrimaryKey = True
      IsAgg = False
      IsUserField = False
      DimType = dtDataDim
      DimStyleDefType = dfRowDim
      DimIndexDef = 1
      ShowSubTotal = False
      CustomDim.FieldType = cdtString
      BinType = binNone
    end>
  DecisionDef.SummaryDefs = <
    item
      FieldName = 'SFJE'
      TableName = 'TBL_GZB'
      FieldType = ftFMTBcd
      DisplayName = #23454#21457#37329#39069
      Origin = 'SFJE'
      IsPrimaryKey = False
      IsAgg = False
      IsUserField = False
      SummType = dtDataSumm
      SummFlags = sfsum               //注意这行
    end>
  DecisionDef.ShowFieldName = False
  DecisionDef.SummAreaWidth = 1
  DecisionDef.SummAreaHeight = 1
  DecisionDef.MaxDims = 5
  DecisionDef.MaxSums = 10
  DecisionDef.MaxCells = 0
  DecisionDef.Database.Reference = 'Biz:\CWGLXT\DB_CWSJK.DATABASE'
  DecisionDef.DecisionType = dctStatistics
  DecisionDef.DataSetID = 'JCSJJ1'
  DecisionDef.DisplayName = #20915#31574#25968#25454#38598'1'
  DecisionDef.OriginalSQL.Text =
    'SELECT TBL_GZB.YG, TBL_GZB.N, TBL_GZB.Y, TBL_GZB.GZ, TBL_GZB.QT,' +
    ' TBL_GZB.SFGZ, TBL_GZB.SFJJ, TBL_GZB.SFJE'#13#10'  FROM TBL_GZB'
  Left = 146
  Top = 106
end

下面是代码:
procedure TJCLF1.Button1Click(Sender: TObject);
begin
     if Button1.Caption='合计' then
     begin
          Button1.Caption:='平均值';
          DecisionBrokerJCSJJ1.dataset.Close;
          TDecisionDataSet(DecisionBrokerJCSJJ1.dataset).DecisionDef.BeginUpdate;
          TDecisionDataSet(DecisionBrokerJCSJJ1.dataset).DecisionDef.SummaryDefs.Items[0].SummFlags:=TSummFlags.sfAverage;  //注意这行
          dialogs.ShowMessage(TDecisionDataSet(DecisionBrokerJCSJJ1.dataset).DecisionDef.SummaryDefs.Items[0].FieldName.ToString);
          TDecisionDataSet(DecisionBrokerJCSJJ1.dataset).DecisionDef.EndUpdate;
          DecisionBrokerJCSJJ1.dataset.open;
          DecisionGrid.Refresh;
     end
     else
     begin
     end;

end;



代码执行完后,统计依然是合计,而没有变成平均值
回复

使用道具 举报

发表于 2007-12-3 15:55:06 | 显示全部楼层
参考这个代码
可以,但菜单不好屏蔽,
代码参考
var
  ddd: TDecisionDimensionDef;
  dsd: TDecisionSummaryDef;
begin
  DecisionBroker1.DataSet.Close;
  TDecisionDataSet(DecisionBroker1.DataSet).DecisionDef.BeginUpdate;
  try
    dsd:=TDecisionDataSet(DecisionBroker1.DataSet).DecisionDef.SummaryDefs.Add();
    dsd.FieldName := 'SUM(LCB.aa)';
    dsd.TableName := 'LCB';
    dsd.FieldType := TFieldType.ftString;
    dsd.DisplayName := #21512#35745'_aa';
    dsd.Origin := 'aa';
    dsd.IsPrimaryKey := False;
    dsd.IsAgg := True;
    dsd.IsUserField := False;
    dsd.SummType := TdecisionSummtype.dtAggSumm;
    dsd.SummFlags := TSummFlags.sfSum;
  finally
    TDecisionDataSet(DecisionBroker1.DataSet).DecisionDef.EndUpdate;
  end;
  DecisionBroker1.DataSet.open;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-3 16:54:34 | 显示全部楼层
楼上的方法还是不行,结果不变
回复 支持 反对

使用道具 举报

发表于 2007-12-3 17:52:41 | 显示全部楼层
DataSetJCSJJ1.Close;
          DataSetJCSJJ1.DecisionDef.BeginUpdate;

       DataSetJCSJJ1.DecisionDef.SummaryDefs.Clear;
       with DataSetJCSJJ1.DecisionDef.SummaryDefs.Add  do
       begin
           FieldName := 'JE';
            TableName := 'GZB';
            FieldType := TFieldType.ftFMTBcd;
            DisplayName := '#37329#39069';
            Origin := 'JE';
            IsPrimaryKey := False;
            IsAgg := False ;
            IsUserField := False;
            SummType := TDecisionSummType.dtDataSumm;
            SummFlags := TSummFlags.sfAverage;
     end;

          DataSetJCSJJ1.DecisionDef.EndUpdate;
          DataSetJCSJJ1.open;

楼主用clear清一下,重新添加
回复 支持 反对

使用道具 举报

发表于 2007-12-7 08:59:31 | 显示全部楼层
楼主,怎样了?
回复 支持 反对

使用道具 举报

发表于 2007-12-11 14:14:56 | 显示全部楼层
已经电话沟通了,可以了

在设计的时候直接通过聚合项解决了,不需要通过代码
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-2 01:52 , Processed in 0.039756 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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