起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 254|回复: 7

【结】[请求]表格文档中生成序号的问题.求高手解决(急!)**

[复制链接]
发表于 2008-3-28 16:13:44 | 显示全部楼层 |阅读模式
现在对一个数据表做成报表显示,用表格文档,但数据表中无序号字段,但表格文档上要体现,请问高手们有解决方案或是相关的案例吗?   谢谢!
回复

使用道具 举报

发表于 2008-3-29 16:47:19 | 显示全部楼层
可以在数据集上添加一个计算字段,用代码为其赋值为记录集的行号就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-9 15:10:36 | 显示全部楼层
不大具体,我也问过了,好象实现不了,建议我只能用DataGrid控件来设计序号,没办法了,希望你们的下一个版本能加上此功能,结帖吧.
回复 支持 反对

使用道具 举报

发表于 2008-4-9 15:15:55 | 显示全部楼层
2楼说的就可以了
在计算字段事件上
Value := DataSet.RecNo;
回复 支持 反对

使用道具 举报

发表于 2008-4-9 15:47:26 | 显示全部楼层
楼主的意思是实现每个分组都从1开始,
方法一、用DataGrid来表现,然后分组,最后设置显示行号就可以了

方法二、用表格文档表现,就需要写代码来实现,步骤:
1、设置数据集以分组字段进行排序,
2、在数据集上增加一个临时字段,用来显示排序号,
3、循环数据集,判断下一个记录的排序字段的值跟前面一条一样,如果不一样,序号从1开始,如果一样,序号加1(代码写在哪里需要根据你的业务需求了,如果数据一次性全取,且不进行然后过滤,那么可以写在数据集的AfterOpen,如果要进行过滤,那么过滤后,还需要执行这段代码)
参考代码
var
  i,j:integer;
  lStr:String;
begin
   DataSetBroker1.DataSet.First;
   j := 1;
   DataSetBroker1.DataSet.DisableControls;
   for i:=0 to DataSetBroker1.DataSet.RecordCount-1 do
   begin
     lStr := DataSetBroker1.DataSet.FieldbyName('ID').AsString;
     DataSetBroker1.DataSet.Edit;
     DataSetBroker1.DataSet.FieldbyName('LSZD').AsInteger := j;
     DataSetBroker1.DataSet.next;
     if lStr = DataSetBroker1.DataSet.FieldbyName('ID').AsString then
        j:=j+1
     else
        j:=1;
   end;
   DataSetBroker1.DataSet.EnableControls;
end;

//其中ID是分组字段的ID,LSZD是存储序号的临时字段的ID
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-14 11:05:38 | 显示全部楼层
DataSetBroker1.DataSet改为数据集的ID就行了,搞定,多谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-14 11:08:09 | 显示全部楼层
大家注意一下,就是在数据集中加入代码后只保存不编译的话,表格调用时就不走代码,必需要编辑一下才行,希望以后的版本解决这样的问题,现在在X3上做东西总是这样,Ctrl+F9,操作上多了这一步.不大明白.
回复 支持 反对

使用道具 举报

发表于 2008-4-14 11:08:13 | 显示全部楼层
ok,不客气,结帖
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-10 07:16 , Processed in 0.046339 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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