6

我已经开始使用crystal reports. 我可以使用datasetsql.auto-row numbering

这是我的代码:

SqlConnection cnn;
string connectionString = null;
string sql = null;
connectionString = "data source=Kim; initial catalog=DBO;user id=sa; password=passw0rd";
cnn = new SqlConnection(connectionString);
cnn.Open();
sql = "select Name as DataColumn1, Age as DataColumn2,  from tbl1";
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
cnn.Close();

DataSet2 ds = new DataSet2();
dscmd.Fill(ds, "DataTable2");

CrystalReport1 objRpt = new CrystalReport1 ();
objRpt.SetDataSource(ds.Tables[0]);

CrystalReportViewer1.ReportSource = objRpt;
CrystalReportViewer1.RefreshReport();

报告的结果是这样的:

No  Name    Age
    Kim     22
    Ian     29
    Aris    27

需要显示这样的报告:

No  Name    Age
1   Kim     22
2   Ian     29
3   Aris    27

你能告诉我如何添加行号吗?

4

6 回答 6

6
  1. 创建一个新的“运行总字段”
  2. 为字段命名,例如“RowNo”
  3. 选择要汇总的字段
  4. 将“摘要类型”设置为“不同计数”
  5. 在“评估”中选择“对于每条记录”
  6. 在“重置”中选择“从不”

    单击“确定”将字段添加到报告中。 在此处输入图像描述

于 2015-04-29T06:55:17.253 回答
1

在水晶报表中,它们是添加自动增量字段的选项,无需从数据库中获取行号

于 2013-08-30T05:19:05.423 回答
1

创建一个'RecordNumber' 特殊的字段将是实现它的最简单和最容易的方法。记录编号字段用于对报告的详细信息部分中打印的每条记录进行编号。

于 2013-08-30T05:22:32.043 回答
1

水晶报表中的自动序号

  1. 打开水晶报表
  2. Field Explorer,右键单击“Running Total Fieids” - 新建

  3. 配置。

    3.1 选择要设置的字段(选择要汇总的字段)

    3.2 点击选择自定义字段值

    3.3 选择“汇总类型”进行设置(“汇总类型”为“不同计数”)

    3.4 设置“评估”(设置“每条记录”)

    3.5 设置“重置”(设置“从不”)

    3.6 单击确定。

  4. 然后添加要报告的字段

    在此处输入图像描述

于 2016-11-27T10:41:02.647 回答
0

您可以将选择查询更改为

select ROW_NUMBER() OVER(ORDER BY Age) as No, Name, Age from tbl1

这将产生预期的结果。

于 2013-08-30T09:20:57.527 回答
-1

使用 datatable 并获取 DS.tables[0].rows.count 并在内部进行计数,并随着每次循环迭代而增加。

    DataTable tab_lvl = new DataTable();
       tab_lvl.Columns.Add(new DataColumn("NO", typeof(string)));
       tab_lvl.Columns.Add(new DataColumn("Name", typeof(string)));
       tab_lvl.Columns.Add(new DataColumn("AGE", typeof(string)));
       tab_lvl.Columns.Add(newDataColumn("Allot_Asset_Code",typeof(string)));
int count;
        for(int i=0;i<ds.Tables[0].Rows.Count;i++)
    {
        count++;
        DataRow dr = tab_lvl.NewRow();
        dr["NO"] = count;
        dr["NAME"] = ds.Tables[0].Rows[i]["COLname/number"];
        dr["AGE"] = ds.Tables[0].Rows[i]["COLname/number"];
    }

//bind the datatable to the report
objRpt.SetDataSource(tab_lvl);
于 2013-08-30T05:12:36.163 回答