【原创】水晶报表动态表扩展 之 任意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
------解决方案--------------------