起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 238|回复: 15

【结贴】关于修改数据集字段名的问题**

[复制链接]
发表于 2007-8-6 09:29:33 | 显示全部楼层 |阅读模式
表格字段名由透视数据集取出
例如 地点\时间 | 08.1-08.2  |  08.3-08.4
            北京       XXXX            XXXX
            上海       XXXX            XXXX
在数据集的CreateFieldName事件中可以使用ADisplayName参数修改字段名
如将08.1-08.2 修改成其他数据
但在窗体中无法实现
窗体中数据集的DisplayName为只读属性
如何进行修改?
回复

使用道具 举报

发表于 2007-8-6 09:51:09 | 显示全部楼层
在窗体上加个数据集代理

unit MainForm;

interface

uses
  Business.System, Business.Forms, Business.Model, Business.Data;

type
  TMainForm = class(TForm)
    DataNavigator1: TDataNavigator;
    FuncBroker1: TFuncBroker;
    InfoBroker1: TInfoBroker;
    DataSetBroker1: TDataSetBroker;
    DataGrid1: TDataGrid;
    procedure BizFormCreate(Sender: TObject);
  private
    {private declarations}
    procedure DataSetTSSJJ1CreateFieldName(AKind: TPivotFieldKind; AOriginFields: TOriginFields; const AColumnField, AColumnDisplay: string; var AFieldName, ADisplayName: string);
  public
    {public declarations}
  end;

implementation


procedure TMainForm.BizFormCreate(Sender: TObject);
begin
  TPivotDataSet(DataSetBroker1.DataSet).OnCreateFieldName := DataSetTSSJJ1CreateFieldName;
  DataSetBroker1.DataSet.open;
end;

procedure TMainForm.DataSetTSSJJ1CreateFieldName(AKind: TPivotFieldKind; AOriginFields: TOriginFields; const AColumnField, AColumnDisplay: string; var AFieldName, ADisplayName: string);
begin
  ADisplayName := 'ss';
end;

end.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-6 10:29:10 | 显示全部楼层
代码编译通过,但是没效果
FormCreate里面那个事件好像。。。
设置断点后发现并未走入procedure TMainForm.DataSetTSSJJ1CreateFieldName(...)中
回复 支持 反对

使用道具 举报

发表于 2007-8-6 10:34:21 | 显示全部楼层
TPivotDataSet(DataSetBroker1.DataSet).OnCreateFieldName := DataSetTSSJJ1CreateFieldName;
这一句要放在数据集打开之前。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-6 10:44:50 | 显示全部楼层
顺序没有错,完全参照你的模式
怪了
回复 支持 反对

使用道具 举报

发表于 2007-8-6 10:58:48 | 显示全部楼层
业务信息的 透视数据集 的 模式 设置的是啥,是“决策立方”还是“快速交叉”,设置为“快速交叉”看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-6 11:25:11 | 显示全部楼层
已改为‘快速交叉’,问题依旧
2楼的代码。。。运行后没效果
跟踪发现并未运行到
procedure TMainForm.DataSetTSSJJ1CreateFieldName(AKind: TPivotFieldKind; AOriginFields: TOriginFields; const AColumnField, AColumnDisplay: string; var AFieldName, ADisplayName: string);
begin
  ADisplayName := 'ss';
end;
回复 支持 反对

使用道具 举报

发表于 2007-8-6 11:36:29 | 显示全部楼层
那你跟踪过吗?是否数据集已经打开了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-6 11:49:18 | 显示全部楼层
TPivotDataSet(DataSetBroker1.DataSet).OnCreateFieldName := ;
  DataSetBroker1.DataSet.open;
依照这个执行顺序
根本就没进入
procedure TMainForm.DataSetTSSJJ1CreateFieldName(...)中
回复 支持 反对

使用道具 举报

发表于 2007-8-6 11:59:44 | 显示全部楼层
你做个简单重现的例子,或者把资源传上来,我们恢复环境来看看
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-13 10:53 , Processed in 0.043882 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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