szpzr 发表于 2016-6-16 10:36:38

区域报表问题

本帖最后由 Lenka.Guo 于 2016-6-16 11:21 编辑

报表头和细节数据来源于不同数据表;表头用参数指定:sReport1.Parameters.Value = dr1["ItemName"].ToString();
                sReport1.Parameters.Value = dr1["ProjectName"].ToString();

细节用:文本框的DataFile已设置为MaterialNo
SqlStr = "select MaterialNofrom PurchaseApplyMx where NoteNo='16060015'";
            Cmd = new SqlCommand(SqlStr, sqlcon);
            SqlDataAdapter Da = new SqlDataAdapter();
            DataSet ds = new DataSet();
            Da = new SqlDataAdapter(SqlStr, sqlcon);
            Da.Fill(ds, "PurchaseApplyMx");
            if (ds.Tables .Rows .Count >0)
            {
                sReport1.DataSource = ds;
            }
但报表运行时出现:DataMember '' 在报表 ''中没有找到。 行 66:             sReport1.Run();
如果代码放在报表文件中;private void SectionReport1_ReportStart(object sender, EventArgs e)
      {
            
            SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["db_sbglConnectionString"].ConnectionString);
            sqlcon.Open();
            SqlStr = "select * from PurchaseApplyMx where NoteNo='16060015'";
            Cmd = new SqlCommand(SqlStr, sqlcon);
            SqlDataAdapter Da = new SqlDataAdapter();
            DataSet ds = new DataSet();
            Da = new SqlDataAdapter(SqlStr, sqlcon);
            Da.Fill(ds, "PurchaseApply");
            if (ds.Tables.Rows.Count > 0)
            {
                this.DataSource = ds;
也一样错误(注:代码没有齐)
加上foreach (DataRow mDr in ds.Tables.Rows)
                {
                  txtMaterialNo.Text = mDr["MaterialNo"].ToString();
                }
                只能打印一条记录,不知何故?





Lenka.Guo 发表于 2016-6-16 11:32:40

1. 报DataMemeber 错误, 报表参数是否在报表中定义,还有 引用的变量不存在报表中,可通过选中报表,查看代码排查。

2. 在Detail 区域中 不需要添加循环语句,只需要将 TextBox的DataFiled 设置为字段名称, Detail 会根据字段的值,自动添加行。

szpzr 发表于 2016-6-16 13:04:05

请问?定义 sReport1.DataSource = ds;的代码在含有WebViewer控件的页面的Load事件中正确吗?应该在那个过程中定义?谢谢!

szpzr 发表于 2016-6-16 13:08:53

看到博客的过程:
private void ToolStripMenuItem_Click(object sender, EventArgs e)

{

    SectionReport_DataSource_RunTime sReport1 = new SectionReport_DataSource_RunTime();

    sReport1.DataSource = GetDataSource();

    sReport1.Run();


    viewer1.Document = sReport1.Document;

}
的事件是那个页面控件发生的?是否这个原因?

szpzr 发表于 2016-6-16 13:26:38

ar显示控件是webView,博客代码中为何为viewer1?

SunDream° 发表于 2016-6-16 13:47:40

szpzr 发表于 2016-6-16 13:26
ar显示控件是webView,博客代码中为何为viewer1?

HI~ WebView是web页面的标签, Viewer是winfrom控件,你所看的这个Demo是以winfrom为主的

szpzr 发表于 2016-6-16 14:03:54

哦!不知道自己错在哪里?

Lenka.Guo 发表于 2016-6-16 14:11:47

szpzr 发表于 2016-6-16 13:26
ar显示控件是webView,博客代码中为何为viewer1?

谢谢 @SunDream 的热心回答~

WebViewer 是报表浏览器控件的名称,viewer1 是Webviewer 实例化对象ID,通过这个ID 才能使用报表浏览器。

SunDream° 发表于 2016-6-16 14:14:27

szpzr 发表于 2016-6-16 14:03
哦!不知道自己错在哪里?

你是需要做到什么样的效果呢?可以在描述一下吗?

szpzr 发表于 2016-6-16 14:20:44

谢谢您的指教!我建立的报表表头、细节、表尾数据来自不同表,表头、表尾利用参数传递可以实现,细节部分有多条记录,现在细节部分不知代码哪里错误,无法实现。
页: [1] 2
查看完整版本: 区域报表问题