数据传给子报表出错,急!!!

vb6andvc6 2009-10-27 01:37:01
(1)不传数据给报表及其子报表时,显示的数据正确。
(2)只传数据给主报表,不传给子报表时,显示的数据也正确。
(3)不传数据给主报表,只传给子报表时,主报表数据显示也正确,
但子报表显示的数据不正确:
(已查证)数据源中的数据是正确的,但显示出来的数值比较大,完全不是数据源中的数据,也不是设计时的数据
(4)传数据给主报表,也传给子报表时,不能显示报表,
并出现如下提示:
Invalid Argument Provided.
Failed to Open a rowset.
Error in ... .rpt:
Invalid argument for database

下面是传数据的语句:
myR.SetDataSource(myTable)
myR.Subreports("test_sub1").SetDataSource(myTable2)
直到此句才出错。(也就是viewer显示不出来了。)
CrystalReportViewer1.ReportSource = myR

这是什么原因呢?
...全文
245 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
llsen 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 vb6andvc6 的回复:]
如何识别pull模式还是push模式?
是不是将rpt放到viewer中,不写任何代码,若能显示数据就是pull,不能就是push呢?
[/Quote]


http://topic.csdn.net/u/20090622/13/dced6fe3-3fe7-4501-9a81-be20d2f5d504.html?68934
vb6andvc6 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 babyt 的回复:]
vb6andvc6 能否分享一下解决方法呢?
[/Quote]

没有所谓的方法!!!
原因在于那个表名中有空格[order detail]。
采用变通方法:
(1)将表名修改为order_details。
(2)用存储过程取数据。[order detail] as order_detail

不存在pull与push的事,至于如何采用full或push只须在数据源那里设置一下就行了。
无论是哪一种均可正确传数据.也没有顺序问题。

阿泰 2009-10-28
  • 打赏
  • 举报
回复
vb6andvc6 能否分享一下解决方法呢?
vb6andvc6 2009-10-28
  • 打赏
  • 举报
回复
如何识别pull模式还是push模式?
是不是将rpt放到viewer中,不写任何代码,若能显示数据就是pull,不能就是push呢?
vb6andvc6 2009-10-28
  • 打赏
  • 举报
回复
此问题已解决。但不是各位所讲任何一种原因。
vb6andvc6 2009-10-28
  • 打赏
  • 举报
回复
谢谢楼上推荐,也谢谢阿泰。
曾用程序调用过许多的rpt,全是由VB6传数据给rpt及subrpt,但对如何设计rpt就没有深入过(以前),因有专人设计报表。
我只简单的问一下,VS8中若设计的报表在main report preview时显示的数据与实际库中一致时,是否就可以说这报表是pull模式的呢?
vs8中数据源的project项下的dataset也有一个current connection项下的dataset,且同名,是否用current connection下的dataset设计的就是pull模工的呢?
vb6andvc6 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 babyt 的回复:]
引用 11 楼 vb6andvc6 的回复:
引用 10 楼 llsen 的回复:
设计时和数据库练了,就是Pull了,根本就不用后台在指定数据了
后台指定数据源是Push
二者不要混了


设计时pull是为了好验证,现在要push数据给它。


不幸的是PULL和PUSH是不能混用的,所以出现了问题。
你可以直接用PULL的方式来解决,一样也可以进行数据过滤之类的操作。
[/Quote]
愚以为pull和push是两种给报表加载数据的方式,
至于报表是如何设计的(用虚拟的字段或是实际的数据表字段)应当不重要,只要加载数据时表名.字段与设计时一致应可以了。
如果报表的设计方式会影响到使用方式,那这种耦合就太紧,水晶也就没可能会有今天的局势。

草民愚见,欢迎拍砖。
vb6andvc6 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 llsen 的回复:]
引用 16 楼 vb6andvc6 的回复:
如何识别pull模式还是push模式?
是不是将rpt放到viewer中,不写任何代码,若能显示数据就是pull,不能就是push呢?



http://topic.csdn.net/u/20090622/13/dced6fe3-3fe7-4501-9a81-be20d2f5d504.html?68934
[/Quote]

你迷失了吗?
vb6andvc6 2009-10-27
  • 打赏
  • 举报
回复
对这两种方式总是很迷惑:
通常来说,为了让报表通用性强,我们总是在程序运行时给它传数据。
而full方式的报表可能也就只能用在总表(所有数据)
更让我迷惑的是,你如何识别这报表是full的还是push的,在设计时又有什么差别呢?
我知道,可以用txt文件代替数据库的表结构,这或许就应当是push式报表吧,但是在实际设计中我还是习惯于联上数据库,不然总觉得有点虚。当然若已经是专业级超级老手,就例外了。
阿泰 2009-10-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 vb6andvc6 的回复:]
引用 10 楼 llsen 的回复:
设计时和数据库练了,就是Pull了,根本就不用后台在指定数据了
后台指定数据源是Push
二者不要混了


设计时pull是为了好验证,现在要push数据给它。
[/Quote]

不幸的是PULL和PUSH是不能混用的,所以出现了问题。
你可以直接用PULL的方式来解决,一样也可以进行数据过滤之类的操作。
vb6andvc6 2009-10-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 llsen 的回复:]
设计时和数据库练了,就是Pull了,根本就不用后台在指定数据了
后台指定数据源是Push
二者不要混了
[/Quote]

设计时pull是为了好验证,现在要push数据给它。
llsen 2009-10-27
  • 打赏
  • 举报
回复
设计时和数据库练了,就是Pull了,根本就不用后台在指定数据了
后台指定数据源是Push
二者不要混了
vb6andvc6 2009-10-27
  • 打赏
  • 举报
回复
总结一下就是,
(1)只给子报表传数据,则数据传不到,也不知它取到了哪里的数据..
(2)同时给主/子服表传数据,则出错

Invalid Argument Provided.
Failed to Open a rowset.
Error in ... .rpt:
Invalid argument for database
vb6里给5个子报表传数据也没问题啊。。。
vb6andvc6 2009-10-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 babyt 的回复:]
不传数据的时候,主报表和子报表都能正确显示数据?

你的模板是怎么做的,直接连了数据库吗?
[/Quote]

(1)是的,眯示数据正确,与sql查询对照过。
(2)设计时是与数据库联接了的。(不是采用txt域)
vb6andvc6 2009-10-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 z307755214 的回复:]
  你先给子报表传个..1  撒的,,测试下,,看输出是什么
[/Quote]

只要同时主\子报表传数据就出错,若只给子报表传数据主报表显示的是设计时数据,子报表数据就来历不明。
llsen 2009-10-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 babyt 的回复:]
不传数据的时候,主报表和子报表都能正确显示数据?

你的模板是怎么做的,直接连了数据库吗?
[/Quote]

我今儿也纳闷,都不赋值时竟然可以。
呵呵
不过我记得是要先给子报表指定数据源
阿泰 2009-10-27
  • 打赏
  • 举报
回复
不传数据的时候,主报表和子报表都能正确显示数据?

你的模板是怎么做的,直接连了数据库吗?
雷肿么了 2009-10-27
  • 打赏
  • 举报
回复
你先给子报表传个..1 撒的,,测试下,,看输出是什么
vb6andvc6 2009-10-27
  • 打赏
  • 举报
回复
按楼上的顺序也是一样的。
Invalid Argument Provided.
Failed to Open a rowset.
Error in ... .rpt:
Invalid argument for database
加载更多回复(1)

4,818

社区成员

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

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