找回密码
 立即注册

QQ登录

只需一步,快速开始

szpzr

高级会员

139

主题

554

帖子

1763

积分

高级会员

积分
1763

活字格认证

[已处理] 区域报表问题

szpzr
高级会员   /  发表于:2016-6-16 10:36  /   查看:6297  /  回复:12
本帖最后由 Lenka.Guo 于 2016-6-16 11:21 编辑

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

细节用:文本框的DataFile已设置为MaterialNo
SqlStr = "select MaterialNo  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, "PurchaseApplyMx");
            if (ds.Tables [0].Rows .Count >0)
            {
                sReport1.DataSource = ds;
            }
但报表运行时出现:DataMember '' 在报表 '[PurchaseApplyNew_Prt]'中没有找到。 行 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[0].Rows.Count > 0)
            {
                this.DataSource = ds;

也一样错误(注:代码没有齐)
加上foreach (DataRow mDr in ds.Tables[0].Rows)
                {
                    txtMaterialNo.Text = mDr["MaterialNo"].ToString();
                }
                只能打印一条记录,不知何故?






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

12 个回复

倒序浏览
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
5#
ar显示控件是webView,博客代码中为何为viewer1?
回复 使用道具 举报
SunDream°
社区贡献组   /  发表于:2016-6-16 13:47:40
6#
szpzr 发表于 2016-6-16 13:26
ar显示控件是webView,博客代码中为何为viewer1?

HI~ WebView是web页面的标签, Viewer是winfrom控件,  你所看的这个Demo是以winfrom为主的
回复 使用道具 举报
szpzr
高级会员   /  发表于:2016-6-16 14:03:54
7#
哦!不知道自己错在哪里?
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-6-16 14:11:47
8#
szpzr 发表于 2016-6-16 13:26
ar显示控件是webView,博客代码中为何为viewer1?

谢谢 @SunDream 的热心回答~

WebViewer 是报表浏览器控件的名称,viewer1 是Webviewer 实例化对象ID,通过这个ID 才能使用报表浏览器。
回复 使用道具 举报
SunDream°
社区贡献组   /  发表于:2016-6-16 14:14:27
9#
szpzr 发表于 2016-6-16 14:03
哦!不知道自己错在哪里?

你是需要做到什么样的效果呢?可以在描述一下吗?
回复 使用道具 举报
szpzr
高级会员   /  发表于:2016-6-16 14:20:44
10#
谢谢您的指教!我建立的报表表头、细节、表尾数据来自不同表,表头、表尾利用参数传递可以实现,细节部分有多条记录,现在细节部分不知代码哪里错误,无法实现。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部