起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 898|回复: 4

获取决策数据集一些方法

[复制链接]
发表于 2008-7-3 17:52:11 | 显示全部楼层 |阅读模式
代码修改决策数据集项的显示名称
dsDecision.DataSet.Close;
  TDecisionDataSet(dsDecision.DataSet).DecisionDef.SummaryDefs.Items.DisplayName := 'aa';
  dsDecision.DataSet.open;
// i 是要修改的第几个项,从0 开始,根据决策数据集项定义的排序


维的显示名称
TDecisionDataSet(dsDecision.DataSet).DecisionDef.DimensionDefs.Items.DisplayName := 'cc';
// i 是要修改的第几个项,从0 开始,根据决策数据集维定义的排序


这样的修改是一次性的,
回复

使用道具 举报

 楼主| 发表于 2008-7-3 17:52:45 | 显示全部楼层

根据传入的ADecisionBroker,将所有展开的维关闭、将所有关闭的维展开

procedure OpenCloseDim(ADecisionBroker: TDecisionBroker);
var
  I: Integer;
  lMsg, lDimName: string;
  lDS: TDecisionSource;
begin
  lMsg := '';
  lDS := ADecisionBroker.DecisionSource;
  //遍历所有的维,nDims是维的总数
  for I := 0 to lDS.nDims - 1 do
  begin
    //根据“维绝对索引”获取维显示名称
    lDimName := lDS.GetDimensionName(I);
    //根据“维绝对索引”获取维的状态,并判断是否处于打开状态
    if (lDS.GetState(I) = TDimState.dmOpen) then
      lMsg := lMsg + 'Close: ' + lDimName + #13#10 else
      lMsg := lMsg + 'Open: ' + lDimName + #13#10;
    //根据“维索引”来切换维的状态
    lDS.ToggleDimIndex(lDS.GetGroup(I), lDS.GetIndex(I, False), False);
  end;
  jsDialogs.ShowMsg(lMsg, '');
end;

{
  用到的枚举类型和方面声明:

  TDimState = (dmClosed, dmOpen, dmDrilled, dmPaged, dmNone);
  TDimGroup = (dgRow, dgCol, dgSum, dgPage, dgNone);

  function TDecisionSource.GetDimensionName(iDim: Integer): String;
  function TDecisionSource.GetState(iDim: Integer): TDimState;
  function TDecisionSource.GetGroup(iDim: Integer): TDimGroup;
  function TDecisionSource.GetIndex(iDim: Integer; bOpen: Boolean): Integer;
  procedure TDecisionSource.ToggleDimIndex(dimGroup: TDimGroup; Index: Integer; bOpen: Boolean);

}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-3 17:55:31 | 显示全部楼层

代码控制行维或者列维的缩进

dsDecisionBroker.DecisionSource.DrillDimIndex(TDimGroup.dgRow,0,-1,true);
参数说明
第一个参数是要缩进行还是列
第二个参数是要缩进第几个行或者列(从0还是)
第三个参数是要缩进第几个值,全部为-1(从0还是)
第四个参数true为缩进,false取消缩进
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-4 09:37:20 | 显示全部楼层

动态行维和列维的转换

dsDecisionBroker.DecisionSource.SwapDimIndexes(Tdimgroup.dgCol,TDimgroup.dgRow,0,0,true);

第一个参数是从啥维转换
第二个参数是转换成啥维
第三个参数是要转换的第几个维(从0还是)
第四个参数是要转换成第几个维(从0还是)
第五个参数是否需要展开到该行或者该列
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-4 11:34:26 | 显示全部楼层

获取当前决策数据集的维、项、目前展开几个等

获取当前决策数据集的维、项、目前展开几个等的方法都在
dsDecisionBroker.DecisionSource 这个下

nDataCols
nDataRows        
nDims                  整个的维的个数
nSums                 项个数
nRowDims           行维个数
nColDims              列维个数
nOpenRowDims   展开了几个行维
nOpenColDims     展开了几个列维
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-3-28 21:41 , Processed in 0.038218 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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