不通过vs.net,自已创建的数据集内容如何显示在Crystal Report中?

namhyuk 2003-09-11 04:10:19
就是说,像下例代码自己创建数据集(而不是通过vs.net环境里拖SqlDataAdapter到Form去创建数据)。这时如何把数据集内容显示在Crystal Report?

sqlConn = new SqlConnection("server=Server;database=Database;uid=sa;pwd=");
sqlConn.Open();

sqlCmd = new SqlCommand();
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "select * from MyTable";
sqlCmd.Connection = sqlConn;

da = new SqlDataAdapter();
da.SelectCommand = sqlCmd;

ds = new DataSet();

da.Fill(ds,"MyTable");

dataGrid1.DataSource = ds;
dataGrid1.DataMember = "MyTable";

//MyTable的内容怎样显示在Crystal Report里?
...全文
54 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
namhyuk 2003-09-12
  • 打赏
  • 举报
回复
顶++;
meetweb 2003-09-12
  • 打赏
  • 举报
回复
步骤如下.
1.新建立一个DataSet,可以直接使用vs,从服务器资源管理器来过来生成
2.新建立一个rpt报表文件,把数据源换为xml文件,指向新生成的DataSEt
3.新建立一个cs. or vb文件
代码大概如你写的一样
6. 把原来的Form1.Load改为
SqlConnection sqlConn = new SqlConnection();
sqlConn.ConnectionString = "server=namhyuk;database=consciousness;uid=sa;pwd=";
sqlConn.Open();

SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = sqlConn;
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "select * from MyTable";

MyDataSet ds = new MyDataSet();

SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = sqlCmd;

da.Fill(ds.MyTable);

CrystalReport1 cr = new CrystalReport1();
cr.SetDataSource(ds.MyTable);

crystalReportViewer1.ReportSource = cr;

此建议没有经过测试,如有问题请把问题贴出来
namhyuk 2003-09-11
  • 打赏
  • 举报
回复
to meetweb:

1. 我用ds.WriteXml("MyDataSet.xsd");生成了一个.xsd文件。
2. 编辑MyDataSet.xsd,把自动生成的NewDataSet,更改为MyDataSet(XML视图)。
3. 然后在命令行,xsd MyDataSet.xsd /d /n:my_namespace后生成一个MyDataSet.cs
4. 项目/添加新项/Crystal Report。。。/更多数据源/ADO.NET(XML)/建立新连接/XML文件路径:MyDataSet.xsd
5. 项目/添加现有项,把MyDataSet.cs和MyDataSet.xsd包含进来(这一步骤有必要吗?)
6. 把原来的Form1.Load改为
SqlConnection sqlConn = new SqlConnection();
sqlConn.ConnectionString = "server=namhyuk;database=consciousness;uid=sa;pwd=";
sqlConn.Open();

SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = sqlConn;
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "select * from MyTable";

MyDataSet ds = new MyDataSet();

SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = sqlCmd;

da.Fill(ds.MyTable);

CrystalReport1 cr = new CrystalReport1();
cr.SetDataSource(ds.MyTable);

crystalReportViewer1.ReportSource = cr;

//自己瞎整的,这方面正规的介绍文档还没找到。请meetweb,snof,还有大家看看,是这么实现吗?
雪狼1234567 2003-09-11
  • 打赏
  • 举报
回复
你要先生成一个固定的dataset然后设置好栏位,然后再用你的方法,如果你想创建任意字段的那么只有你自己写控件,毕竟一般的报表格式都差不多在设计时固定啦,
meetweb 2003-09-11
  • 打赏
  • 举报
回复
一样的道理,你做报表时用的数据源是ADO数据[xsd文件],
然后把你的数据集重新写进xsd里,然后调用报表
使用Crystal Report.net进行开发的一些预备知识:执行模式 水晶报表取数据可以使用下面的方法实现: Pull 模式: 被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些数据。

110,524

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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