日期:2014-05-20  浏览次数:20815 次

【原创】水晶报表动态表扩展 之 任意SQL及任意有关联表,任意列 及其他
本文是在 <动态水晶报表:任意表,任意列,以及动态格线> 
http://www.cnblogs.com/babyt/archive/2009/04/08/1431328.html 
原理基础上的一个扩展。 
如果你之前没有看过此文,请务必仔细研读。否则你将无法理解本文。 


在我写了第一篇《动态(万能)水晶报表:任意表,任意列,以及动态格线》,
回帖里有朋友问到:
你这个是单表的,那么有关联的多表和无关联的多表如何操作的呢?

我在《水晶报表动态表扩展 之 任意无关联表,任意列,任意数据源》  
http://topic.csdn.net/u/20090423/01/df01d702-5f29-437b-abb8-107dc3be9b2a.html解答了无关联的多表的操作方法。

本文中,我将说一下有关联多表的做法。

跟前面的两篇不同,这篇里,没有大段代码,也没有图。仍然是思路问题。

我们来比较一下下面两个SQL

SQL code
Select f1,f2,f3 from tableA


SQL code
Select a.f1,a.f2,a.f3,b.f1,b.f2 from tableA as a,tableB as b Where a.Id=b.Id


这两个有什么不同吗?是的。
第一个是1个表,第二是是有关联的2个表
语法上是有不同的,但是对于最终结果集来说,他们都是一个表。

既然都是一个表了,那么,对我们的报表来说,是一样的。

当然,可能有展现上的不同,这个就是报表端上的操作了。
比如说可以是一个横向的展示,也可以做成是分组的主从报表。

扩展开来,任意的一个单表或关联SQL,都可以纳入此方法
(当然,我们要保障SQL返回列的数目要小于等于我们的datatable的数目)

返回头来看
http://www.cnblogs.com/babyt/archive/2009/04/08/1431328.html 
对于单表和有关系的多表,所谓代码上的区别,就是这么一点点

C# code
da = new OleDbDataAdapter("SELECT * From " + tblName, cn);


=>

C# code
String SQL="Select a.f1,a.f2,a.f3,b.f1,b.f2 from tableA as a,tableB as b Where a.Id=b.Id";
da = new OleDbDataAdapter(SQL, cn);


其余皆可不变。

好了,这个话题就说到这里了。

说点别的

如果你是水晶报表新手,或者遇到了一些数据传递上的问题,建议你看一下
【原创+分享】VS2005水晶报表PUSH模式(DataSet)视频教程+源代码工程示例
http://topic.csdn.net/u/20081118/10/49a1751d-1d86-44e4-969f-a847c2316dd3.html虽然很简单,但是我多年的实践所得。
初学者花点时间看一遍,跟着做一遍,花点时间去思考一下,领会了,基本上所有的数据传递方面的问题就能解决了。
可惜不是所有的人都有耐心。
当然水晶报表一般只是项目中的一小部分,可能很快会从你手边滑过。也无须花费太多的时间去深究。

如果你在做报表的时候遇到问题,欢迎到图表区(http://forum.csdn.net/SList/DotNETReport)来提问,
也欢迎到我的博客 http://babyt.cnblogs.com 去翻一翻找点灵感。

最后,祝各位使用水晶报表的朋友好运。



------解决方案--------------------
无语...........用心良苦啊,阿泰老大
------解决方案--------------------
認真學習!
------解决方案--------------------
学习中
------解决方案--------------------
認真學習!
------解决方案--------------------
探讨
学习中

------解决方案--------------------
不太懂 慢慢看
------解决方案--------------------
xuexizhong
------解决方案--------------------
pass the way
------解决方案--------------------
强人
------解决方案--------------------
很好很强大
------解决方案--------------------
不錯,收藏。。
------解决方案--------------------
study
------解决方案--------------------
up
------解决方案--------------------