我想实现下面的效果:品种 名称 规格编号 流水编号 入库单编号 入库时间 购入量 单价 金额 已使用
大料 丁苯 丁苯 RKM20081224001 NO 1 2008-12-24 20 1 20 20
大料 丁苯 丁苯 RKM20081224002 NO 2 2008-12-24 22 1 22 22
大料 丁苯 丁苯 RKM20081224003 NO 3 2008-12-24 33 1 33 33
大料 丁苯 丁苯 RKM20081224004 NO 4 2008-12-24 50 1 50 50
大料 丁苯 丁苯 RKM20081224005 NO 5 2008-12-24 30 1 30 30
大料 丁苯 丁苯 RKM20081224006 NO 6 2008-12-24 15 1 15 1
大料 丁苯 丁苯 汇总信息 170 170 156 (这一条为汇总信息)
大料 丁晴 丁晴 RKM20081224001 NO 1 2008-12-24 22 2 44 0
大料 顺丁 顺丁 RKM20081224005 NO 5 2008-12-24 20 1 20 0
大料 顺丁 顺丁 RKM20081224006 NO 6 2008-12-24 30 1 30 0
大料 顺丁 顺丁 汇总信息 50 50 0 (这一条也为汇总信息)当按照前三列分组时,如果记录数大于1条,则自动添加一条汇总信息,否则不添加汇总信息!!想了半天也想不出来,请那位高人指点一下,不胜感激!!最好能有源码,谢谢!!!!!
下面是建表脚本
CREATE TABLE [dbo].[InCome_M_Detail](
[Detail_ID] [int] IDENTITY(1,1) NOT NULL,
[AutoCode] [nvarchar](50) NOT NULL,
[Product_Class_ID] [nvarchar](20) NOT NULL,
[Product_Info_ID] [nvarchar](20) NOT NULL,
[Product_Size_ID] [nvarchar](20) NOT NULL,
[Unit] [nvarchar](50) NULL,
[UnitPrice] [decimal](18, 2) NOT NULL,
[Quantity] [decimal](18, 3) NOT NULL,
[TotalPrice] [decimal](18, 2) NOT NULL,
[Re] [nvarchar](500) NULL,
[Use_Quantity] [decimal](18, 3) NULL,
CONSTRAINT [PK_INCOME_DETAIL] PRIMARY KEY CLUSTERED
(
[Detail_ID] ASC
)
) ON [PRIMARY]
select * from InCome_M_Detail
--truncate table InCome_M_Detailinsert into InCome_M_Detail
select 'RKM20081224001','大料','丁苯','丁苯','吨',1.00,20.000,20.00,'',20.000 union
select 'RKM20081224001','大料','丁晴','丁晴','吨',2.00,22.000,44.00,'',0 union
select 'RKM20081224002','大料','丁苯','丁苯','吨',1.00,22.000,22.00,'',22.000 union
select 'RKM20081224003','大料','丁苯','丁苯','吨',1.00,33.000,33.00,'',33.000 union
select 'RKM20081224004','大料','丁苯','丁苯','吨',1.00,50.000,50.00,'',50.000 union
select 'RKM20081224005','大料','丁苯','丁苯','吨',1.00,30.000,30.00,'',30.000 union
select 'RKM20081224006','大料','丁苯','丁苯','吨',1.00,15.000,15.00,'',10.000 union
select 'RKM20081224006','大料','顺丁','顺丁','吨',1.00,30.000,30.00,'',0.000 union
select 'RKM20081224005','大料','顺丁','顺丁','吨',1.00,20.000,20.00,'',0.000
大料 丁苯 丁苯 RKM20081224001 NO 1 2008-12-24 20 1 20 20
大料 丁苯 丁苯 RKM20081224002 NO 2 2008-12-24 22 1 22 22
大料 丁苯 丁苯 RKM20081224003 NO 3 2008-12-24 33 1 33 33
大料 丁苯 丁苯 RKM20081224004 NO 4 2008-12-24 50 1 50 50
大料 丁苯 丁苯 RKM20081224005 NO 5 2008-12-24 30 1 30 30
大料 丁苯 丁苯 RKM20081224006 NO 6 2008-12-24 15 1 15 1
大料 丁苯 丁苯 汇总信息 170 170 156 (这一条为汇总信息)
大料 丁晴 丁晴 RKM20081224001 NO 1 2008-12-24 22 2 44 0
大料 顺丁 顺丁 RKM20081224005 NO 5 2008-12-24 20 1 20 0
大料 顺丁 顺丁 RKM20081224006 NO 6 2008-12-24 30 1 30 0
大料 顺丁 顺丁 汇总信息 50 50 0 (这一条也为汇总信息)当按照前三列分组时,如果记录数大于1条,则自动添加一条汇总信息,否则不添加汇总信息!!想了半天也想不出来,请那位高人指点一下,不胜感激!!最好能有源码,谢谢!!!!!
下面是建表脚本
CREATE TABLE [dbo].[InCome_M_Detail](
[Detail_ID] [int] IDENTITY(1,1) NOT NULL,
[AutoCode] [nvarchar](50) NOT NULL,
[Product_Class_ID] [nvarchar](20) NOT NULL,
[Product_Info_ID] [nvarchar](20) NOT NULL,
[Product_Size_ID] [nvarchar](20) NOT NULL,
[Unit] [nvarchar](50) NULL,
[UnitPrice] [decimal](18, 2) NOT NULL,
[Quantity] [decimal](18, 3) NOT NULL,
[TotalPrice] [decimal](18, 2) NOT NULL,
[Re] [nvarchar](500) NULL,
[Use_Quantity] [decimal](18, 3) NULL,
CONSTRAINT [PK_INCOME_DETAIL] PRIMARY KEY CLUSTERED
(
[Detail_ID] ASC
)
) ON [PRIMARY]
select * from InCome_M_Detail
--truncate table InCome_M_Detailinsert into InCome_M_Detail
select 'RKM20081224001','大料','丁苯','丁苯','吨',1.00,20.000,20.00,'',20.000 union
select 'RKM20081224001','大料','丁晴','丁晴','吨',2.00,22.000,44.00,'',0 union
select 'RKM20081224002','大料','丁苯','丁苯','吨',1.00,22.000,22.00,'',22.000 union
select 'RKM20081224003','大料','丁苯','丁苯','吨',1.00,33.000,33.00,'',33.000 union
select 'RKM20081224004','大料','丁苯','丁苯','吨',1.00,50.000,50.00,'',50.000 union
select 'RKM20081224005','大料','丁苯','丁苯','吨',1.00,30.000,30.00,'',30.000 union
select 'RKM20081224006','大料','丁苯','丁苯','吨',1.00,15.000,15.00,'',10.000 union
select 'RKM20081224006','大料','顺丁','顺丁','吨',1.00,30.000,30.00,'',0.000 union
select 'RKM20081224005','大料','顺丁','顺丁','吨',1.00,20.000,20.00,'',0.000
解决方案 »
- 二维数组中如何查找最近的点
- 串口通信使用JustinIO.cs类遇到问题
- 需要很多次str1+=str2操作,有没有这比+=这方式节省资源的方法呢?
- Dictionary<TKey, TValue> 不能被“串行化”,有什么办法解决呢?
- 如何在windows消息中传递字符串?
- 在线等,outlook expree存放电子邮件的默认目录是啥?你可以在“工具-》选项-》维护->存储文件夹"中看到。我因为以前改掉了,所以不知
- 急:使用InstallShield X打包的问题
- 有一个问题好急了各位大佬帮下吧!急了,谢谢
- 如何做大数据并发测试
- 谁能解释特性ATTRIB[]的含义、用法
- datagridview 分组显示
- 如何把winform中的控件的所有数据存储起来
在构造的时候遇到统计行 将统计数据写入到需要的列 不需要的置空
笨办法 希望能帮到你了
你这样的其实最好的做法是填充的时候把dataGridView的数据源重新构造。
比如dataGridView1.DataSource的数据源是ds.Tables[0],那么你可以在ds.Tables[0]里增加一统计行
重新构建之后再填充,直接使用Convert.ToInt32(dt.Compute("要统计列的列名",""))得到汇总的信息
赋级新增行的sum就行了,然后再将这个数据源绑定dataGridView
返回两个ds.然后对两个ds进行比对插入数据
自己试下
(
select name,sum([Quantity]) as [Quantity],sum([TotalPrice])as [TotalPrice],sum([Use_Quantity])as [Use_Quantity],0 as [Detail_ID] ,'合计' as [AutoCode]
, '' as [Product_Class_ID],'' as [Product_Info_ID] ,'' as [Product_Size_ID]
,'' as [Unit], 0 as [UnitPrice],'' as[Re]
from(
select [Product_Class_ID]+[Product_Info_ID]+[Product_Size_ID] as name
,[Quantity],[TotalPrice],[Use_Quantity]
from InCome_M_Detail
)
t
group by name having count(name)>1union allselect [Product_Class_ID]+[Product_Info_ID]+[Product_Size_ID] as name,
[Quantity] ,[TotalPrice] ,[Use_Quantity]
,[Detail_ID] ,[AutoCode]
,[Product_Class_ID],[Product_Info_ID] ,[Product_Size_ID]
,[Unit], [UnitPrice],[Re]
from InCome_M_Detail)a order by name
先求出统计的值,再用UNION与名细合并.