难度高的问题(关于DataGrid以及DataSet和数据库的问题)
废话少说,直接进入主题,大家的时间都比较忙吗!
1,我想实现以下功能,
我读取数据库里面的表中其中一个字段,以该字段的值为DataGrid的表格中一列,同时根据该字段的值
自动计算统计相应的结果。例如Sql sum等等功能。
例如:(仓库ABC 的数字都是自动统计出来的,不是读取数据库的)
物品 仓库A总计 仓库B 仓库C
1 50 50 50
2 100 100 100
3 200 200 200
以下是我的思路。
我搜索了msdn和csdn的相关资料
发现了一个方法,也就是DataTable的函数compute.
不知道是不是应该使用这种方法呢?
还是有其他方法?
各位高手可否给个思路或者MSDN相关资料啊?
不胜感激!
谢谢!
我会高分回赠的!
如果已经有人做出类似的,不妨告知
谢谢!
问题点数:100、回复次数:10Top
1 楼xzq686(★_瞬_★)回复于 2005-06-02 00:33:24 得分 5
你的表结构没有。可以根据表结构直接在SQL里面计算。也就是在SQL里面计算完生成你所要的记录集
:
物品 仓库A总计 仓库B 仓库C
1 50 50 50
2 100 100 100
3 200 200 200Top
2 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2005-06-02 00:34:57 得分 0
不用劳驾写那么多代码。SQL服务器计算,直接查询结果。SQL可以在需求很复杂的时候仍然很简单清晰地表现计算,但是用编程代码就需要随着需求的变化大量修改。
假设“需要统计的物品”由prodSql(它应该是形如 select id from product where ...的样子)来表示:
dim sql="select a.id as [物品编号],a.name as [品名规格],"+ _
"(select sum(quanlity) from [库存] where pid=a.id and stk='A') as [仓库A],"+ _
"(select sum(quanlity) from [库存] where pid=a.id and stk='B') as [仓库B],"+ _
"(select sum(quanlity) from [库存] where pid=a.id and stk='C') as [仓库C] "+ _
"from ("+prodSql+") as a order by a.id"
然后用sql生成datatable或者datareader,再绑定。
Top
3 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2005-06-02 00:39:10 得分 90
不用劳驾写那么多代码。SQL服务器计算,直接查询结果。SQL可以在需求很复杂的时候仍然很简单清晰地表现计算,但是用编程代码就需要随着需求的变化大量修改。
假设“需要统计的物品”由prodSql(它应该是形如 select id from product where ...的样子)来表示:
dim sql="select a.id as [物品编号],a.name as [品名规格],"+ _
"(select sum(quanlity) from [库存] where pid=a.id and stk='A') as [仓库A],"+ _
"(select sum(quanlity) from [库存] where pid=a.id and stk='B') as [仓库B],"+ _
"(select sum(quanlity) from [库存] where pid=a.id and stk='C') as [仓库C] "+ _
"from ("+prodSql+") as a order by a.id"
然后用sql生成datatable或者datareader,再绑定。
呵呵。大家写这个页面不要像csdn这样左右留这么多余白,应该自动使用窗口宽度。尤其是那个广告,应该自动收缩到左边窗口之外,待鼠标靠近了再自动像鬼一样伸出头来。Top
4 楼zeusvenus()回复于 2005-06-02 01:13:20 得分 0
用水晶报表,这些功能都已经集成实现了啊。Top
5 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2005-06-02 01:53:47 得分 0
交互界面也很需要呀!Top
6 楼scorpion007(沉默天蝎)回复于 2005-06-02 08:26:25 得分 0
待鼠标靠近了再自动像鬼一样伸出头来!! = =b
这里先谢谢sp1234()
我去试一下先!
看可否!Top
7 楼scorpion007(沉默天蝎)回复于 2005-06-02 10:31:35 得分 0
唉,现在才发现要求不是这样的。
郁闷
例如:
原来的要求是这样:
物品 仓库A总计 仓库B 仓库C
1 50 50 50
2 100 100 100
3 200 200 200
现在改为这样:
物品1总金额 物品2总金额 物品3总金额
仓库A 50 50 50
仓库B 100 100 100
仓库C 200 200 200
而表的设计是如下,
一个仓库表只记录仓库名加所在区域。注:所在区域还有一个值为空,该值意思代表全部区域!
而物品的总金额是另外一个明细表计算统计获得。2个表之间只有区域有关,其余无关。
这样该怎么写呢?
Top
8 楼brando_beat(Eの懒龙)回复于 2005-06-02 12:10:09 得分 5
upTop
9 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2005-06-02 13:23:35 得分 0
交叉表的查询你可以去 SQL 板块问问,直接得到自动产生宏并使用 EXEC 查询的结果。我上面只是说明程序中可以用SQL替代大段的代码。Top
10 楼zdliang(zdliang)回复于 2005-06-02 13:54:33 得分 0
数据库里面建立存储过程,建立临时表,把要查的结果插入到临时表里面
执行存储过程,返回的就是你需要的数据了,难吗??Top




