请大家为我指点一下asp.net中CrystalReport 的设计过程 最近项目中要用到报表,我还是第一次用那东西,在网上搜了一下,基本上就那几篇文章,看的云里雾里的(再加上自己这几天感冒),只知道报表控件连报表数据源再连报表,还以为在.rpt文件中直接拖了数据集中的字段就能用,但是预览了不知道什么东西,(可能是快放假了,没学习的劲了),请大家帮我理一下asp.net报表开发的大体思路,谢谢啦^_^ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 摘要如下:1。第一步是添加新项CrystalReport12。在CrystalReport1.rpt面页右键选择:”数据库”à”添加/删除数据库”出现下面对话框:然后点开OLE DB(ADO)的加号,将弹出选择数据库的对话框其中”项目数据”里面的”当前连接”显示的就是OLE DB(ADO)的连接,这样就可以将表添加到右边的”选定的表”中了(切记:不要既从”OLE DB” 中选表或命令又从”当前连接”中选,如果你用了数据集,也是一样的道理,否则全提示出”登陆失败”的错误!)3。字段资料管理器里面”数据库字段”里把字段直接拖到CrystalReport.rpt里面了.布置好布局.4。回到WebForm1.aspx页面,选择控件CrystalReportViewer将其放到页面上。5。代码using CrystalDecisions.Shared;using CrystalDecisions.CrystalReports.Engine;在WebForm1.aspx.cs的Form_Load里面添加代码:TableLogOnInfo logOnInfo = new TableLogOnInfo(); ReportDocument rpdMy0= new ReportDocument(); logOnInfo.ConnectionInfo.ServerName = "NNN"; logOnInfo.ConnectionInfo.Password="dong"; logOnInfo.ConnectionInfo.DatabaseName="Lab"; logOnInfo.ConnectionInfo.UserID = "sa"; String path = Server.MapPath("CrystalReport2.rpt"); rpdMy0.Load(path); rpdMy0.Database.Tables[0].ApplyLogOnInfo(logOnInfo); CrystalReportViewer1.ReportSource = rpdMy0;其中:TableLogOnInfo类是: 提供属性,以便检索和设置表连接选项.它有一个连接的属性ConnectionInfo,用来设置与数据库的连接.如上面的ServerName等.生成一个报表文档对象将前面我们做好的那个CrystalReport1.rpt赋给它.在这里要注意的是Database属性!然后把报表对象做为CrystalReportViewer1的数据源.或者,获得数据库的方法改为直接从数据库获得DataSetusing System.Data.SqlClient;using System.Collections.Specialized;string strConn=System.Configuration.ConfigurationSettings.AppSettings["DB"].ToString(); using (SqlConnection conn = new SqlConnection(strConn)) { SqlDataAdapter da = new SqlDataAdapter(strSQL,conn);//strSQL是SQL语言"select * from dbo.table1" DataSet ds=new DataSet(); da.Fill( ds); CrystalReport1 cr1 = new CrystalReport1(); cr1.SetDataSource( ds); CrystalReportViewer1.ReportSource = cr1; } 没有连接数据源啊string strConn=System.Configuration.ConfigurationSettings.AppSettings["DB"].ToString(); 这段代码中的DB是要在WebConfig中设置的 在Web.Config中如下设置<configuration><appSettings> <add key="DB" value="Server='IP地址';Database='数据源';UID='用户名';PWD='密码';Application Name='你所应用的项目'"> </add></appSettings></configuration> 我仿写了他的那一段:5。代码using CrystalDecisions.Shared; using CrystalDecisions.CrystalReports.Engine; 在WebForm1.aspx.cs的Form_Load里面添加代码: TableLogOnInfo logOnInfo = new TableLogOnInfo(); ReportDocument rpdMy0= new ReportDocument(); logOnInfo.ConnectionInfo.ServerName = "NNN"; logOnInfo.ConnectionInfo.Password="dong"; logOnInfo.ConnectionInfo.DatabaseName="Lab"; logOnInfo.ConnectionInfo.UserID = "sa"; String path = Server.MapPath("CrystalReport2.rpt"); rpdMy0.Load(path); rpdMy0.Database.Tables[0].ApplyLogOnInfo(logOnInfo); CrystalReportViewer1.ReportSource = rpdMy0; 本地SQL: string strConn="server=local(或本地機器名);database=数据库名;uid=实际用户名;pwd=密码;"; 網絡中的SQL: string strConn="server=服務器名(或IP);database=数据库名;uid=实际用户名;pwd=密码;"; private void Page_Load(object sender, System.EventArgs e) { string strConn=System.Configuration.ConfigurationSettings.AppSettings["DB"].ToString(); using (SqlConnection conn = new SqlConnection(strConn)) { SqlDataAdapter da = new SqlDataAdapter(strSQL,conn);//strSQL是SQL语 言"select * from dbo.table1" DataSet ds=new DataSet(); da.Fill( ds); ReportDocument reportDemo = new ReportDocument(); reportDemo.Load(Server.MapPath("報表名稱.rpt");); reportDemo.SetDataSource(ds); CrystalReportViewer1.ReportSource = reportDemo; CrystalReportViewer1.DataBind(); } }你试下 其中1楼讲的5中,是CrystalReportViewer1的数据源绑定的两个方法,第一个我没有接触过,你可以使用第二种,或者我给你的。报表很简单,1是布局,2是连接数据源,如果你会布局的话,那应该很容易上手的 那么我应该在设计.rpt文件的时候要做些什么呢,比如我只是要一张表显示一下需要的字段,就是在aspx.cs中select查的字段,他们改怎样关联起来呢?谢谢一等一大哥 这个你不需要知道他们怎么关联啊,只要按照1楼的说法把要显示的字段在.rpt页面上拉好,直接在aspx.cs中select要显示的字段,我给你的代码就是把两者相联系的 做报表的一般步骤一般要有三支页面: 第一支页面是用户操作界面,选择要显示资料的条件。 第二支页面只要拉一个CrystalReportViewer控件,只要是根据第一支页面传递过来的条件参数,从数据库中捞取对应的资料,并对第三支页面进行数据库绑定。 第三支页面就是你所要显示的资料,拉水晶报表的控件 可以找些相关资料看看。 <form id="form1" runat="server"> <div> <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" /> </div> </form>public partial class test_Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { string strConn=System.Configuration.ConfigurationSettings.AppSettings["DB"].ToString(); using (SqlConnection conn = new SqlConnection(strConn)) { string strSQL = "select * from area"; SqlDataAdapter da = new SqlDataAdapter(strSQL,conn);//strSQL是SQL语 言"select * from dbo.table1" DataSet ds=new DataSet(); da.Fill(ds); ReportDocument reportDemo = new ReportDocument(); reportDemo.Load(Server.MapPath("hgtj.rpt")); reportDemo.SetDataSource(ds); CrystalReportViewer1.ReportSource = reportDemo; CrystalReportViewer1.DataBind(); } }}js 是解决方案名称,其中bs_jsw好像是以前拖数据源控件自动生成的吧 <location allowOverride="true" > <appSettings> <add key="DB" value="Server='lcg';Database='pdjsw';UID='sa';PWD='123';Application Name='js'"/> <add key="bs_jsw" value="server=lcg; uid=sa; pwd=123; database=pdjsw" /> <add key="CrystalImageCleaner-AutoStart" value="true" /> <add key="CrystalImageCleaner-Sleep" value="60000" /> <add key="CrystalImageCleaner-Age" value="120000" /> </appSettings> </location>下面是我在做表单是用的连接字符串:<add name="pdjswConnectionString" connectionString="Data Source=LCG;Initial Catalog=pdjsw;User ID=sa;Password=123" providerName="System.Data.SqlClient"/> 我在App_Code文件夹中建了一个DataSet1.xsd,一张area表,然后我在.rpt文件中将需要的字段从那个数据集表中拖进去,拖到‘详细资料’一层,其他的没做什么 你把string strConn=System.Configuration.ConfigurationSettings.AppSettings["DB"].ToString(); 改成 string strConn="Server='lcg';Database='pdjsw';UID='sa';PWD='123'";试试还有我们做报表的时候不是直接从数据库拉字段的,是先建立一个数据集.xsd,然后再.xsd中右击选中DataTable,建立一个数据表,在里面手动添加要显示的字段名称,字段名称跟数据库的字段名称一致,然后在.rpt中连接这个.xsd文件,再把对应的字段拉到页面上,结合我给你的代码就能显示了 还是那样子:您请求的报表需要更多信息.-------------------------------------------------------------------------------- DataSet1 服务器名: 数据库名: 用户名: 密码: 使用集成安全性 DataSet1是数据集名 DataSet跟数据库是一点联系都没有的,只是栏位名称相同而已 reportDemo.SetDataSource(ds); 不小心写错了应该是 reportDemo.SetDataSource(ds。table[0]); 请问一下 看看大家都用什么方法实现这个需求, 请进!!! .NET中如何实现SQL上机考试批阅 .NET的代码改PHP Microsoft JScript 运行时错误: 缺少对象 数据库操作超时,求助!!! Session超时后重新登陆,怎么新的框架网页整个出现在原来框架的右边? COMET方式的WEB IM,请达人帮忙~~~ 初学者超简单问题。。不能运行示例 漂亮mm请教showModalDialog的size控制问题,高手请进! 新人提问 如何定义某一列的数据 简单问题:如何在指定时间上增加多少分钟的间隔 公司内网邮件发送问题!
using CrystalDecisions.Shared;using CrystalDecisions.CrystalReports.Engine;在WebForm1.aspx.cs的Form_Load里面添加代码:TableLogOnInfo logOnInfo = new TableLogOnInfo(); ReportDocument rpdMy0= new ReportDocument(); logOnInfo.ConnectionInfo.ServerName = "NNN"; logOnInfo.ConnectionInfo.Password="dong"; logOnInfo.ConnectionInfo.DatabaseName="Lab"; logOnInfo.ConnectionInfo.UserID = "sa"; String path = Server.MapPath("CrystalReport2.rpt"); rpdMy0.Load(path); rpdMy0.Database.Tables[0].ApplyLogOnInfo(logOnInfo); CrystalReportViewer1.ReportSource = rpdMy0;其中:TableLogOnInfo类是: 提供属性,以便检索和设置表连接选项.它有一个连接的属性ConnectionInfo,用来设置与数据库的连接.如上面的ServerName等.生成一个报表文档对象将前面我们做好的那个CrystalReport1.rpt赋给它.在这里要注意的是Database属性!然后把报表对象做为CrystalReportViewer1的数据源.或者,获得数据库的方法改为直接从数据库获得DataSet
using System.Data.SqlClient;
using System.Collections.Specialized;string strConn=System.Configuration.ConfigurationSettings.AppSettings["DB"].ToString();
using (SqlConnection conn = new SqlConnection(strConn))
{
SqlDataAdapter da = new SqlDataAdapter(strSQL,conn);//strSQL是SQL语言"select * from dbo.table1"
DataSet ds=new DataSet();
da.Fill( ds);
CrystalReport1 cr1 = new CrystalReport1();
cr1.SetDataSource( ds);
CrystalReportViewer1.ReportSource = cr1; }
string strConn=System.Configuration.ConfigurationSettings.AppSettings["DB"].ToString(); 这段代码中的DB是要在WebConfig中设置的
<configuration>
<appSettings>
<add key="DB" value="Server='IP地址';Database='数据源';UID='用户名';PWD='密码';Application Name='你所应用的项目'">
</add>
</appSettings>
</configuration>
5。代码using CrystalDecisions.Shared; using CrystalDecisions.CrystalReports.Engine; 在WebForm1.aspx.cs的Form_Load里面添加代码: TableLogOnInfo logOnInfo = new TableLogOnInfo(); ReportDocument rpdMy0= new ReportDocument(); logOnInfo.ConnectionInfo.ServerName = "NNN"; logOnInfo.ConnectionInfo.Password="dong"; logOnInfo.ConnectionInfo.DatabaseName="Lab"; logOnInfo.ConnectionInfo.UserID = "sa"; String path = Server.MapPath("CrystalReport2.rpt"); rpdMy0.Load(path);
rpdMy0.Database.Tables[0].ApplyLogOnInfo(logOnInfo); CrystalReportViewer1.ReportSource = rpdMy0;
string strConn="server=local(或本地機器名);database=数据库名;uid=实际用户名;pwd=密码;";
網絡中的SQL:
string strConn="server=服務器名(或IP);database=数据库名;uid=实际用户名;pwd=密码;";
{
string strConn=System.Configuration.ConfigurationSettings.AppSettings["DB"].ToString();
using (SqlConnection conn = new SqlConnection(strConn))
{
SqlDataAdapter da = new SqlDataAdapter(strSQL,conn);//strSQL是SQL语 言"select * from dbo.table1"
DataSet ds=new DataSet();
da.Fill( ds);
ReportDocument reportDemo = new ReportDocument();
reportDemo.Load(Server.MapPath("報表名稱.rpt"););
reportDemo.SetDataSource(ds);
CrystalReportViewer1.ReportSource = reportDemo;
CrystalReportViewer1.DataBind();
}
}
你试下
报表很简单,1是布局,2是连接数据源,如果你会布局的话,那应该很容易上手的
在aspx.cs中select要显示的字段,我给你的代码就是把两者相联系的
一般要有三支页面:
第一支页面是用户操作界面,选择要显示资料的条件。
第二支页面只要拉一个CrystalReportViewer控件,只要是根据第一支页面传递过来的条件参数,从数据库中捞取对应的资料,并对第三支页面进行数据库绑定。
第三支页面就是你所要显示的资料,拉水晶报表的控件
可以找些相关资料看看。
<div>
<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true"
/>
</div>
</form>public partial class test_Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string strConn=System.Configuration.ConfigurationSettings.AppSettings["DB"].ToString();
using (SqlConnection conn = new SqlConnection(strConn))
{
string strSQL = "select * from area";
SqlDataAdapter da = new SqlDataAdapter(strSQL,conn);//strSQL是SQL语 言"select * from dbo.table1"
DataSet ds=new DataSet();
da.Fill(ds);
ReportDocument reportDemo = new ReportDocument();
reportDemo.Load(Server.MapPath("hgtj.rpt"));
reportDemo.SetDataSource(ds);
CrystalReportViewer1.ReportSource = reportDemo;
CrystalReportViewer1.DataBind();
}
}
}
js 是解决方案名称,其中bs_jsw好像是以前拖数据源控件自动生成的吧 <location allowOverride="true" >
<appSettings>
<add key="DB" value="Server='lcg';Database='pdjsw';UID='sa';PWD='123';Application Name='js'"/>
<add key="bs_jsw" value="server=lcg; uid=sa; pwd=123; database=pdjsw" />
<add key="CrystalImageCleaner-AutoStart" value="true" />
<add key="CrystalImageCleaner-Sleep" value="60000" />
<add key="CrystalImageCleaner-Age" value="120000" />
</appSettings>
</location>
下面是我在做表单是用的连接字符串:<add name="pdjswConnectionString" connectionString="Data Source=LCG;Initial Catalog=pdjsw;User ID=sa;Password=123" providerName="System.Data.SqlClient"/>
string strConn="Server='lcg';Database='pdjsw';UID='sa';PWD='123'";
试试
还有我们做报表的时候不是直接从数据库拉字段的,是先建立一个数据集.xsd,然后再.xsd中右击选中DataTable,建立一个数据表,在里面手动添加要显示的字段名称,字段名称跟数据库的字段名称一致,然后在.rpt中连接这个.xsd文件,再把对应的字段拉到页面上,结合我给你的代码就能显示了
您请求的报表需要更多信息.--------------------------------------------------------------------------------
DataSet1
服务器名:
数据库名:
用户名:
密码:
使用集成安全性
DataSet1是数据集名
应该是 reportDemo.SetDataSource(ds。table[0]);