找回密码
 立即注册

QQ登录

只需一步,快速开始

gotoStudy

注册会员

16

主题

46

帖子

148

积分

注册会员

积分
148
gotoStudy
注册会员   /  发表于:2016-3-25 10:34  /   查看:7845  /  回复:11
本帖最后由 Lenka.Guo 于 2016-3-25 10:52 编辑

报表是使用带参数存储过程来获取数据源的,这个参数该怎么传

11 个回复

倒序浏览
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-3-25 11:25:27
沙发
使用存储过程和 常规的SQL 查询语句的方法是相同的,只要能够返回查询结果的语句ActiveReports都是支持的。

我理解您的意思是: 存储过程中带有参数,这个参数值是通过用户输入获取的,如果是这样,可以通过设置报表参数,将报表参数值传给存储过程中的参数

评分

参与人数 1满意度 +5 收起 理由
gotoStudy + 5

查看全部评分

回复 使用道具 举报
gotoStudy
注册会员   /  发表于:2016-3-25 12:00:18
板凳
Lenka.Guo 发表于 2016-3-25 11:25
使用存储过程和 常规的SQL 查询语句的方法是相同的,只要能够返回查询结果的语句ActiveReports都是支持的。 ...

那个报表参数不是报表出来后用来做筛选的吗?那样加载报表的时候不是会拿到所有的数据,数据量很大,报表会加载很慢啊
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-3-25 12:18:08
地板
不是啊,报表参数呢,是可以用在查询语句中来过滤数据的,
可以参考产品文档: http://www.gcpowertools.com.cn/d ... !Documents/_308.htm
回复 使用道具 举报
gotoStudy
注册会员   /  发表于:2016-3-25 23:25:32
5#
Lenka.Guo 发表于 2016-3-25 12:18
不是啊,报表参数呢,是可以用在查询语句中来过滤数据的,
可以参考产品文档: http://www.gcpowertools.co ...

比如我的存储过程是 exec P_GetData @ids ,那这个@ids该怎么传
回复 使用道具 举报
gotoStudy
注册会员   /  发表于:2016-3-26 17:13:20
6#
本帖最后由 gotoStudy 于 2016-3-27 20:30 编辑

vs2015 + ActiveReport10+MVC

还有几个问题向您一并请教下:
1、报表中有没有自带的排名函数啊;2、矩表宽度的能自适应吗:我的表格列很多,而且是不定的,经常会被换到第二页,甚至第三页
3、矩表适用隔行不同颜色显示,设置的表达式:=IIF( RowNumber() MOD 2,"lightgray",""),第一页显示正常,到第二页就乱了,越到后面越乱,70来页到最后一页基本就没效果了,而且,报表换页很卡;见附图

4、由于我报表设置了表头每页重复显示,但导出成excel的时候我不想显示重复表头,可以设置吗;
5、最后就是上面提到的存储过程参数的问题,我的参数是从另外的页面传过来的,能教我下该怎么把参数存给存储过程吗,基本的代码如下
public ActionResult Report(string ids)
        {
            PageReport report = new PageReport(new FileInfo(Server.MapPath("~/RDLX/Report.rdlx")));                        
            ViewData.Model = report;         
            return View();
        }

报表页面怎么拿到这个ids,数据源哪里又该怎么传

麻烦您解答下,非常感谢

本帖子中包含更多资源

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

x
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-3-28 10:21:04
7#
您好,
1.  您指的是对矩表分组进行排序?如果是这样,您可以通过选中矩表分组,在属性窗口中设置SortExpression,点击...按钮;




2. 因为很多报表涉及打印功能,常用的打印的纸张尺寸是固定的,所以报表在设计时,需要指定报表的纸张大小。
矩表列出现换页,则表明矩表本身的宽度超出了页面纸张的宽度。而矩表的宽度无法自动根据页面纸张的宽度来调节。所以为了避免换页,可以将报表纸张设置的足够宽。
或是在后台代码中,根据列数来动态调整纸张宽度。
代码示例:

// 根据数据源调整报表纸张大小
            this.PageSettings.Margins = new GrapeCity.ActiveReports.Document.Section.Margins(0.5f, 0.5f, 0.5f, 0.5f);
            this.PageSettings.DefaultPaperSize = false;
            this.PageSettings.PaperHeight = 12F;
            this.PageSettings.PaperKind = System.Drawing.Printing.PaperKind.Custom;
            this.PageSettings.PaperName = "自定义纸张";
            int pageWidthAdd = 0;
            if (dt.Columns.Count == 1)
            {
                pageWidthAdd = 5;
            }
            else if (dt.Columns.Count == 2)
            {
                pageWidthAdd = 4;
            }
            else if (dt.Columns.Count == 3)
            {
                pageWidthAdd = 2;
            }
            else
            {
                pageWidthAdd = 0;
            }
            this.PageSettings.PaperWidth = dt.Columns.Count * 2 + pageWidthAdd;
            this.PrintWidth = this.PageSettings.PaperWidth;




3. 谢谢您的反馈,矩表隔行换色问题已经重现,初步判断这是产品的Bug,会尽快反馈给产品组,并跟踪此问题的进展。
4. 可以在导出Excel 时,设置Pagination 属性为False.
GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings excelSetting = new ExcelRenderingExtensionSettings();
excelSetting.Pagination = false;

5. 在存储过程中使用参数,分为按以下步骤执行:
    1. 在报表中添加报表参数 ReportParameter1,确认类型;
     2. 在添加数据集时,并选择“参数”,添加数据集参数:Parameter1,并让Parameter1 值=[@ReportParameter1]; 输入存储过程,并将数据集参数引入Parameter1 语句中,验证存储过程是否正确。
     3. 在后台代码中:可参考博客: http://blog.gcpowertools.com.cn/ ... er_MultiValues.aspx
     public ActionResult Report(string ids)
        {
            PageReport report = new PageReport(new FileInfo(Server.MapPath("~/RDLX/Report.rdlx")));                        
            
            report.Report.ReportParameter[0].DefaultValues.Values.Add(ids);
            ViewData.Model = report;         
            return View();
        }
     
      



本帖子中包含更多资源

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

x

评分

参与人数 1满意度 +5 收起 理由
gotoStudy + 5

查看全部评分

回复 使用道具 举报
gotoStudy
注册会员   /  发表于:2016-4-5 11:48:56
8#
本帖最后由 gotoStudy 于 2016-4-5 11:50 编辑
Lenka.Guo 发表于 2016-3-28 10:21
您好,
1.  您指的是对矩表分组进行排序?如果是这样,您可以通过选中矩表分组,在属性窗口中设置SortExpr ...

参数在查询语句中该怎么写,详见附图

本帖子中包含更多资源

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

x
回复 使用道具 举报
gotoStudy
注册会员   /  发表于:2016-4-5 12:04:47
9#
Lenka.Guo 发表于 2016-3-28 10:21
您好,
1.  您指的是对矩表分组进行排序?如果是这样,您可以通过选中矩表分组,在属性窗口中设置SortExpr ...

还有就是对于自适应宽度,您给的代码应该是用在那种动态给报表赋数据源的那种吧,我的报表数据源是在报表设计中用的存储过程绑定的数据源,您上面那段代码能用吗,如果可以用,用在什么地方,麻烦了
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-4-5 15:20:04
10#
您好:

1. ActiveReports 在创建数据集中,支持任何返回结果集的SQL 语句。
您在8#中引用存储过程的语法不正确;存储过程应放在查询语句中,改为:
select * from table ([dbo].[P_GetStudentScoreReport]) where 字段=?;
2. 在7#第二点中说明了根据“动态绑定数据源”,给出了示例代码;一般情况下无法通过属性直接设置,使报表页面宽度根据内容来自适应;
如果需要实现自适应宽度,只能在后台代码中,根据数据集的列数,确定报表的的 PageWidth,并修改。

因此如果需要实现报表宽度自适应, 需要将代码写在生成报表对象后报表加载前

建议采用简单的方法:在报表设计时,估算一个最合适的报表宽度,预先设置好。

评分

参与人数 1满意度 +5 收起 理由
gotoStudy + 5

查看全部评分

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部