泰哥,请教你个问题(大家也进来发表下自己的看法啊)

tangserver 2009-07-10 04:20:14
VS2008 WEBFROM做的报表,运行时总是要我输入数据库密码才可以正常查看.我看了你的文章说:
a:如果是多表的话,可能是部分表没有赋值。
水晶报表需要对用到的每个表进行验证,即使没数据。没有的话,传个空的记录集也行。
b:代码没有放到Page_Load或Page_init里,或者是放到了,但是控制了 postback。
因为http是无状态的,如果控制了postback,水晶报表就丢失了前面的设置,会导致出现此情况的


第一种情况应该不会的,我是用的视图
b这个我不太懂.我是页面上一个BUTTON按钮,代码都写在这里面,下面我把代码贴出来你看看指点下吧

测试用的,页面很简单就一个button一个CrystalReportViewer

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
public partial class TimeSheet : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{


}
protected void Button1_Click(object sender, EventArgs e)
{
string sql = String.Format("SELECT * FROM dbo.V_工时报表");
DataSet ds = Maticsoft.DBUtility.DbHelperSQL.Query(sql);//一个获取DataSet数据的类
ReportDocument rpt = new ReportDocument();
rpt.Load(Server.MapPath("TimeSheet.rpt"));
rpt.SetDataSource(ds);

CrystalReportViewer1.ReportSource = rpt;
CrystalReportViewer1.DataBind();
}
}

...全文
109 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
呆虫 2011-12-22
  • 打赏
  • 举报
回复
都是高手啊。。
阿泰 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 llsen 的回复:]
引用 38 楼 babyt 的回复:
可以用arraylist之类的结构化数据。

...

然后指定数据源给报表就可以了,不用dataset,但是设计界面下是要dataset,
我这样运行是可以的

不止是否就是泰兄说的arraylist做数据源的本意?

[/Quote]

不一样,呵呵。arrayList也只是其中一种,
实质上用的是数据源里面,"项目数据"里的 ".Net Objects",简单点说,就是一个类(相当于一个数据库或者是dataset)
有一个和多个可以返回数据的方法(这个方法就类似于表了)。当然不是所有的类和方法都适用。

当然,用dataset做报表,传arraylist进去做数据源,也是完全可以的。并不一定非要ds.
llsen 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 babyt 的回复:]
可以用arraylist之类的结构化数据。
[/Quote]

我试了试,
用Push模式,新建数据源dataset,里面列名为Column1,Column2
然后加到报表上面。

后台代码,定义一个struct类S
public struct S
{
public DateTime Column1;
public int Column2;
}

里面包含两个属性,名称为Column1,Column2
然后数据源的话,可以如下获取array
ArrayList array = new ArrayList();
System.Random rd = new Random();
for (int i = 0; i < 200; i++)
{
S s;
t.Column1 = new DateTime(rd.Next(2000, 2010), rd.Next(1, 12), rd.Next(1, 28));
t.Column2 = rd.Next(100);

array.Add(t);
}
return array;


然后指定数据源给报表就可以了,不用dataset,但是设计界面下是要dataset,
我这样运行是可以的

不止是否就是泰兄说的arraylist做数据源的本意?
yanm7788 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 llsen 的回复:]
引用 38 楼 babyt 的回复:
可以用arraylist之类的结构化数据。


泰兄,有arraylist的例子吗,参考下。
[/Quote]
想学习下这方面的...能不能给个例子..
llsen 2009-07-14
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 babyt 的回复:]
可以用arraylist之类的结构化数据。
[/Quote]

泰兄,有arraylist的例子吗,参考下。
阿泰 2009-07-14
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 tangserver 的回复:]
引用 36 楼 llsen 的回复:
引用 35 楼 tangserver 的回复:
想问一句push模式是不是一定要用DataSet数据集?


我用的都是ds
感觉其他的应该也可以。不过好像没见人用过


如果用DS每次做一个报表我就要重新编译一次上传服务器,这样很多用户会掉线,如果能只是上传一个文件不重新编译就好了
[/Quote]

系统升级应该在系统空闲时(如用户下班,用户较少时)进行,边改边上传是不可取的。
阿泰 2009-07-14
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 llsen 的回复:]
引用 35 楼 tangserver 的回复:
想问一句push模式是不是一定要用DataSet数据集?


我用的都是ds
感觉其他的应该也可以。不过好像没见人用过
[/Quote]

可以用arraylist之类的结构化数据。
tangserver 2009-07-14
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 llsen 的回复:]
引用 35 楼 tangserver 的回复:
想问一句push模式是不是一定要用DataSet数据集?


我用的都是ds
感觉其他的应该也可以。不过好像没见人用过
[/Quote]

如果用DS每次做一个报表我就要重新编译一次上传服务器,这样很多用户会掉线,如果能只是上传一个文件不重新编译就好了
llsen 2009-07-13
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 tangserver 的回复:]
想问一句push模式是不是一定要用DataSet数据集?
[/Quote]

我用的都是ds
感觉其他的应该也可以。不过好像没见人用过
tangserver 2009-07-13
  • 打赏
  • 举报
回复
想问一句push模式是不是一定要用DataSet数据集?
tangserver 2009-07-13
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 llsen 的回复:]
貌似讨论很激烈
楼主不厚道,问了问题,周末两天没来,还讨论

引用 32 楼 tangserver 的回复:
欧啦,走了这么多弯路还是因为pull模式模板push模式代码的问题,顺便弱弱的问一句,如果要按条件赛选数据好像只能用push模式吧

看阿泰的新文章啊
【水晶报表内功心法】--数据过滤
好像就是讲这个的
[/Quote]

呵呵,不好意思啊,双休没有上网所以就没来啦
llsen 2009-07-13
  • 打赏
  • 举报
回复
貌似讨论很激烈
楼主不厚道,问了问题,周末两天没来,还讨论

[Quote=引用 32 楼 tangserver 的回复:]
欧啦,走了这么多弯路还是因为pull模式模板push模式代码的问题,顺便弱弱的问一句,如果要按条件赛选数据好像只能用push模式吧
[/Quote]
看阿泰的新文章啊
【水晶报表内功心法】--数据过滤
好像就是讲这个的
tangserver 2009-07-13
  • 打赏
  • 举报
回复
欧啦,走了这么多弯路还是因为pull模式模板push模式代码的问题,顺便弱弱的问一句,如果要按条件赛选数据好像只能用push模式吧
tangserver 2009-07-13
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 babyt 的回复:]
也不一定非要重定向啊。。

不过差不多就是这个意思,不传值区分怎么知道是显示哪个报表呢,呵呵
[/Quote]

呵呵,多谢啦,我按正确思路试试
阿泰 2009-07-13
  • 打赏
  • 举报
回复
也不一定非要重定向啊。。

不过差不多就是这个意思,不传值区分怎么知道是显示哪个报表呢,呵呵
tangserver 2009-07-13
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 babyt 的回复:]
“一个web页面根据不同条件显示不同报表”

是不同的报表还是不同的数据呢,当然,都可以实现

不同的报表也只是Load起不同的rpt文件,然后设置数据库信息
(如果是同一个数据库的话,代码都可以共用的)



[/Quote]

你的意思是不是每次用户选择报表的时候我就重定向到这个页面并且传个值过来获取显示的报表?
阿泰 2009-07-13
  • 打赏
  • 举报
回复
“一个web页面根据不同条件显示不同报表”

是不同的报表还是不同的数据呢,当然,都可以实现

不同的报表也只是Load起不同的rpt文件,然后设置数据库信息
(如果是同一个数据库的话,代码都可以共用的)


tangserver 2009-07-13
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 tangserver 的回复:]
还有一个地方我不太明白,我做的是在一个web页面根据不同条件显示不同报表,这样代码肯定要写在一个button事件里,但pull模式的话我代码应该怎么写呢
[/Quote]

pull模式可以实现我的要求吗
阿泰 2009-07-13
  • 打赏
  • 举报
回复
要说区别,就是Asp.net CrystalReports站点就是在Asp.net 站点的基础上,自动添加了相关的组件,并且自动加了一个水晶报表模板。
主要是把我们必须的几个动作,事先放进去了,其余没什么特别。

你完全可以再现有的网站上增加水晶报表功能,就是要手工添加相关的dll的引用。

tangserver 2009-07-13
  • 打赏
  • 举报
回复
还有一个地方我不太明白,我做的是在一个web页面根据不同条件显示不同报表,这样代码肯定要写在一个button事件里,但pull模式的话我代码应该怎么写呢
加载更多回复(24)
内容概要:本文详细介绍了一种融合灰狼优化算法(GWO)、BP神经网络与AdaBoost集成学习的复合预测模型,旨在通过Matlab代码实现高效、高精度的非线性系统预测。该模型首先利用GWO算法优化BP神经网络的初始权重与阈值,有效缓解传统BP网络易陷入局部最优、收敛速度慢的问题;随后引入AdaBoost集成策略,通过对弱学习器的迭代加权训练,进一步提升模型的泛化能力、鲁棒性与预测稳定性。该方法适用于能源、环境、金融等领域的时间序列预测任务,文中提供了完整的算法实现流程与案例分析,便于科研人员复现、验证并拓展至其他应用场景。; 适合人群:具备一定机器学习理论基础与Matlab编程能力,从事科研工作的研究生、高校教师及工程技术人员,尤其适合工作1-5年、致力于发表高水平学术论文的研发人员。; 使用场景及目标:①解决传统BP神经网络在复杂数据下收敛缓慢、精度不足的问题;②构建高精度、强鲁棒性的预测模型,服务于科研项目申报、高水平论文撰写或工程实际预测需求;③深入理解GWO优化机制、AdaBoost集成思想及其在神经网络中的融合应用,掌握智能优化与集成学习的协同建模范式。; 阅读建议:建议读者结合提供的Matlab代码逐模块实践,重点剖析GWO的种群更新机制、BP网络的结构设计与训练过程、AdaBoost的误差反馈与权重调整逻辑,同时尝试将模型迁移至风电预测、负荷预测等具体场景,以深化理解并激发创新研究思路。
代码下载链接: https://pan.quark.cn/s/c03e96dffc10 在信息技术行业中,操作系统的部署是一项核心且关键的任务,对于服务器设备而言,恰当的系统配置能够保障服务的持续、高效运作。本文将深入阐述在戴尔服务器平台上部署Ubuntu 18.04 Server无桌面版本的方法,该系统是针对服务器应用场景而设计的,不包含图形操作界面,因而更为精简且性能优越。 我们必须熟悉戴尔服务器的基本启动机制。当服务器启动时,一般会展示BIOS配置界面,此时通过按下F11键可以进入启动设备选择列表。这一操作旨在从不同的存储设备中选择启动目标,例如光盘(DVD)或USB移动存储设备,具体取决于你的安装媒介。 进入启动选项菜单后,选择第二项以推进安装流程。随后,系统会要求你确定操作系统的主要语言,此处我们选择“English”。接下来,需要设定键盘的布局,同样选择“English”。 接下来的核心环节是安装类型的确定。Ubuntu 18.04 Server提供了多种安装路径,但通常推荐选择“Install Ubuntu Server”,这将指导你完成服务器的个性化安装。在网络设置环节,倘若默认的DHCP动态获取IP地址方式失效,你需要手动设定静态IP地址。选定网络接口“eth0”,然后选择采用静态配置,接着进行网络参数的设定,涵盖IP地址、子网掩码、默认网关及DNS服务器的信息。 完成配置后,点击“Done”进入下一阶段,在核实所有信息准确无误后再次点击“Done”。其后,文件系统的配置极为关键。Ubuntu 18.04 Server提供了自动分区和自定义分区两种模式,若希望迅速安装并利用全部磁盘空间,可以选择“Use entire disk”,然后选定用于安...

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧