以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  数据分析 求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=81363)

--  作者:凡夫俗子
--  发布时间:2016/2/25 20:26:00
--  数据分析 求助
Dim cmd As New SQLCommand
cmd.C
cmd.CommandText="sel ect FItemID,FStockID,sum(FQty) as 数量 from ICInventory group by FItemID,FStockID HAVING sum(FQty) > 0 and FStockID < 739"
Dim dt As DataTable = cmd.ExecuteReader

对K3即时库存进行条件取数后获得了一个 数据表 dt

如何 对dt表的 FItemID 进行 数量求和 并将数据写入 tb 表中。

"sel ect FItemID,FStockID,sum(FQty) as 数量 from ICInventory group by FItemID,FStockID HAVING sum(FQty) > 0 and FStockID < 739"
这个语句能修改一下 直接对 FItemID 的 FQty 求和不,条件是 FStockID < 739 即对原数据表中的部份数据进行分组求和。

--  作者:大红袍
--  发布时间:2016/2/25 20:32:00
--  

这个意思?

 

cmd.CommandText="sel ect FItemID, sum(FQty) as 数量 from ICInventory Where FStockID < 739 group by FItemID HAVING sum(FQty) > 0"


--  作者:凡夫俗子
--  发布时间:2016/2/25 21:01:00
--  
Dim tb As Table = e.Form.Controls("Table1").Table
Dim st rSQLcmd As String = "sel ect FItemID, sum(FQty) as 数量 from ICInventory Where FStockID < 739 group by FItemID HAVING sum(FQty) > 0"
tb.Fill(strSQLcmd,"K3SJ", False)

\'以上代码运行正确


Dim cmd1 As New SQLCommand
cmd1 .Co nnec tionNa me = "K3SJ"
cmd1.Com mandText=strSQLcmd
Dim dt1 As DataTable = cmd1.ExecuteScalar(False)

\'以上代码报错
\'.NET Framework 版本:2.0.50727.5485
\'Foxtable 版本:2015.12.22.1
\'错误所在事件:窗口,即时库存,Button2,Click
\'详细错误信息:
\'无法将类型为"System.Int32"的对象强制转换为类型"Foxtable.DataTable".


代码哪里错了,原因在哪里
[此贴子已经被作者于2016/2/25 21:01:39编辑过]

--  作者:大红袍
--  发布时间:2016/2/25 21:04:00
--  

ExecuteScalar 得到的,不是datatable,而是一个具体的值。

 

Dim a As String = cmd1.ExecuteScalar

 

要得到datatable,要用 ExecuteReader