日期:2014-05-18  浏览次数:20495 次

征集思路;把sql的表名传进去,通过勾勾点点就可以得到报表,(如根据表名得到字段,对字段选择,和限制字段的条)
征集思路;把sql的表名传进去,通过勾勾点点就可以得到报表,(如根据表名得到字段,对字段选择,和限制字段的条等等)

------解决方案--------------------
支持2楼的
去sys_objects里面,可以查到表的相关信息,其他的就看你的需要了
------解决方案--------------------
你想的可能是拼SQL语句吧,然后再传进去执行了,只要你的SQL拼的没问题就OK
------解决方案--------------------
就是动态列是吗?

举个例吧

单表的

须要两个表来实现
表1 基本信息表嘛   例20个字段
表2 表1的字段数据   20条数据 每条数据 就是表1的每个字段的信息

在表2中 增加一个字段 用来控制 该列的状态 1为显示 2为不显示

他在勾勾选选的时候 就是修改表2中字段的状态 勾中了 状态改为1 没勾到的 状态为2

在select * from 表2 where 状态= '1 '

再for 刚查询来的数据的 来升成表1的查询SQL

这样就能实现一个动态列的操作

如果是多张表的话 也是同样的方法 但在生成SQL的时候 可以使用多数据集 的方法来合[这种方法比较简单也容易懂]

这样把几个DS的数据 合在一起显示出来就OK了

------解决方案--------------------
单表的话就那样了,多表的时候可以考虑做成view,然后解决方法就和单表一样了

可以用Adapter.FillSchema取到表结构,根据字段类型的不同,设置显示方式、格式化方式、空值时内容,对齐方式等等

此外还有报表输出的检索条件也需要动态生成,这个需要单独的一张表来保存相关的信息
根据字段类型的不同,可能需要定义检索的输入方式是textbox、combobox、checkbox等等
combobox的时候还要考虑列表值是固定的1,2,3呢,还是根据某个条件从另外的code表中检索出来的

恩,lz加油~~ ^_^

------解决方案--------------------
根本上都是动态生成sql,汇总列就是在拼sql的时候麻烦些而已
当然,如果是表关联比较多的话,不推荐直接在sql中groupby,那样效率好低的
------解决方案--------------------
如果简单的肯定可以的,人家根据这个动态生成窗体都可以
------解决方案--------------------
楼主你在考虑软件功能需求的时候:
应该有所取舍,你可以设计一个查询管理分析器,以向导的方式让用户选择那些数据表名,选择表以后,给表之间建立关系(这里就是重点了,你不用考虑无限级的表关联,应该有范围和子表级数限制,不然效率低、而且也不一定是用户需要的,不要过分设计),关系建立好以后 ,剩下的就是拼装SQL了,然后保存该配置,做成报表。
------解决方案--------------------
DataTable dt = getdata( "select * from " + table + " where 1 <> 1 ");
foreach(DataColumn col in dt.Columns){
//绑定吧
}