急!水晶报表多表显示问题???

s006152120 2009-11-05 04:46:48
我现在有几个表。在我的.aspx页中有几个dropdownlist变量,当我在.aspx页中选择dropdownlist之后,我如何把dropdownlist变量传给水晶报表?让水晶报表用传过来的值过滤数据,并显示多个表中符合条件的数据。

问题1、水晶报表如何接收dropdownlist变量并判断???

问题2、我如何把多表的数据用dataset填充???


望能给代码说明:如果能解决,还可加分!


望高手们解答,不胜感激。
...全文
125 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
s006152120 2009-11-07
  • 打赏
  • 举报
回复
自己怎么设啊??我好像不太懂。数据还是多的。
阿泰 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 s006152120 的回复:]
阿泰哥:

    我按你说的做了,在.rpt的数据专家里好像自动按关键字连接了。

    我运行的时候:很长时间都出不来页面,一直都是正在等待回应,那是怎么回事啊,谢谢!
[/Quote]

你自己设置一下关联关系看看。
自动设置的连接对吗?

数据多吗?
s006152120 2009-11-07
  • 打赏
  • 举报
回复
阿泰哥:

我按你说的做了,在.rpt的数据专家里好像自动按关键字连接了。

我运行的时候:很长时间都出不来页面,一直都是正在等待回应,那是怎么回事啊,谢谢!
阿泰 2009-11-07
  • 打赏
  • 举报
回复
在职.xsd里有四个表,且有关联。

去掉xsd里的关系关系,把表关系放到水晶报表的数据专家里设置。
s006152120 2009-11-07
  • 打赏
  • 举报
回复
谢谢楼主们!您请求的报表需要更多信息.的报表已解决!晚点给你们分!

不过多表的时候双出现了一个问题:

请高手们再帮我看看:

我的代码:

Dim ds As New DataSet1()
Dim da As New SqlDataAdapter
'Dim sql As String = "Select * from ScoreInfo"
Dim conn As String = "Server=PC-200909042129;uid=sa;pwd=123456;database=Delax"
Dim sqlCon As New SqlConnection(conn)

da = New SqlDataAdapter("Select StuID,Exam1 from ScoreInfo", conn)
da.Fill(ds, "ScoreInfo")

da = New SqlDataAdapter("Select StuName from StudentInfo", conn)
da.Fill(ds, "StudentInfo")

da = New SqlDataAdapter("Select ClassName from ClassInfo", conn)
da.Fill(ds, "ClassInfo")

da = New SqlDataAdapter("Select CourseName from CourseInfo", conn)
da.Fill(ds, "CourseInfo")

Dim rs As New scoreCrystal()
Dim myReport As New ReportDocument
Dim reportPath As String = Server.MapPath("CrystalReport.rpt")
myReport.Load(reportPath)

myReport.SetDataSource(ds)
CrystalReportViewer1.ReportSource = myReport

出现的问题:

未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.ConstraintException: 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。

源错误:


行 15:
行 16: da = New SqlDataAdapter("Select StuID as StuID,Exam1 as Exam1 from ScoreInfo", conn)
行 17: da.Fill(ds, "ScoreInfo")
行 18:
行 19: 'da = New SqlDataAdapter("Select StuName from StudentInfo", conn)


这 是怎么回事啊!不太明白!


在职.xsd里有四个表,且有关联。
s006152120 2009-11-06
  • 打赏
  • 举报
回复
非常感谢楼主们!你们的资料太有用了,不过我还没有看!但是我马上就去试了!谢谢你们!
wangan2008 2009-11-06
  • 打赏
  • 举报
回复
up
阿泰 2009-11-06
  • 打赏
  • 举报
回复
1:使用参数接收droplist传来的值
在水晶报表中新建一个参数,pa1
代码中这样即可
myReport.SetParameterValue("pa1", droplist的值);

参数的操作方法可参考
http://topic.csdn.net/u/20090705/14/745f6153-e120-41af-a28b-75b09355b663.html
后半部分之参数操纵

2:多表填充

OleDbDataAdapter da = new OleDbDataAdapter();
OleDbConnection cn = new OleDbConnection(connstr);
DataSet ds = new DataSet();
//表1
da = new OleDbDataAdapter("SELECT * From mytable1", cn);
da.Fill(ds, "mytable1");
//表2
da = new OleDbDataAdapter("SELECT * From mytable2", cn);
da.Fill(ds, "mytable2");
//。。。
3:多表情况下的过滤,这个有不少情况
一是多表直接关联作为一个表传给报表,这个其实就是类似于
Select a.*,b.* from a,b where a.x=b.x

这样的语句最终是返回一个表数据

而过滤条件,完全可以在sql中直接就实现的
Select a.*,b.* from a,b where a.x=b.x and a.条件=droplist的值

另外一种是多表,在水晶报表里设置好关联关系后,再加条件过滤。
这个稍微复杂一些。
当然, 本身也可以直接用
select * from a where a.条件=droplist的值
的方法获取过滤后的数据集,放到dataset 中就可以了
也可参考
http://topic.csdn.net/u/20090713/01/15a1a826-b3d9-45f9-9557-c278245176fa.html?09713942810725492
rockyvan 2009-11-05
  • 打赏
  • 举报
回复
2、Dataset本身可以存放多个表,不太明白你指什么
rockyvan 2009-11-05
  • 打赏
  • 举报
回复
vb6andvc6 2009-11-05
  • 打赏
  • 举报
回复
dropdownlist变量传给生成dataset的存贮过程
生成多个表的dataset在commandtext中写成:
select * from a;select * from b;...

4,818

社区成员

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

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