以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] SQL加载数据后再查找统计数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133914)

--  作者:2900819580
--  发布时间:2019/4/23 15:22:00
--  [求助] SQL加载数据后再查找统计数据

\'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dim cmd As New SQLCommand
cmd.C

cmd.CommandText = "Sele ct a.* "
cmd.CommandText &= ", d.FName As 名称,d.Fmodel as 规格型号,d.FNumber as 物料代码"
cmd.CommandText &= ", c.Fnote as 库位号,e.FName as 仓库"
cmd.CommandText &= ", (Sel ect sum(实发数量) from [" & Vars("mes") & "].dbo.生产发料单 as j where j.源单ID = a.ID) as 已发料 "
cmd.CommandText &= ", ([需求数量] - [已发料]) As 应发数量 "
\'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
cmd.CommandText &= " from [" & Vars("mes") & "].dbo.生产领料单 As a "

cmd.CommandText &= " left join [" & Vars("Kis") & "].dbo.t_ICItemCore As d on a.物料ID = d.FItemID "
cmd.CommandText &= " left join [" & Vars("Kis") & "].dbo.t_ICItemMaterial As c on a.物料ID = c.FItemID "
cmd.CommandText &= " left join [" & Vars("Kis") & "].dbo.t_ICItemBase As b on a.物料ID = b.FItemID "
cmd.CommandText &= " left join [" & Vars("Kis") & "].dbo.t_Stock As e on b.FDefaultLoc = e.FItemID "

cmd.CommandText &= " where 任务单号 = \'" & e.Form.Controls("Text任务单号").text & "\'"

\'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`

Dim Sqldt As DataTable = cmd.ExecuteReader
Dim tb As Table = Tables(e.Form.Name & "_Tab料单")

 

 红色代码出错!

 

[此贴子已经被作者于2019/4/23 16:10:34编辑过]

--  作者:2900819580
--  发布时间:2019/4/23 16:35:00
--  

老师,如上代码,如果我想查找出,筛选条件又应该如何修改。

cmd.CommandText &= " where 已发料 > 需求数量 "


--  作者:有点甜
--  发布时间:2019/4/23 16:38:00
--  

 

弹出你合成的sql语句,在数据库那里执行,看报什么错。

 

 


--  作者:2900819580
--  发布时间:2019/4/23 17:01:00
--  


列名 \'已发料\' 无效。

cmd.CommandText &= ", ([需求数量] - [已发料]) As 应发数量 "

 

cmd.CommandText &= " where 已发料 > 需求数量 "

老师,通过删除比对,是上面这行有错误,是不是已发料是合成的,所以不能做公式。

 

[此贴子已经被作者于2019/4/23 17:01:43编辑过]

--  作者:有点甜
--  发布时间:2019/4/23 17:34:00
--  

 

你数据库那里没有【已发料】列。表达式列,不能直接使用。

 

 


--  作者:2900819580
--  发布时间:2019/4/23 19:26:00
--  

If dt.DataCols.Contains("应发数量") = False Then dt.DataCols.Add("应发数量",Gettype(Single),"[需求数量] - isnull([已发料],0)")  

 

cmd.CommandText &= " where  需求数量 >  (Sel ect sum(实发数量) from {生产发料单} as v where v.源单ID = a.ID)"

 

变通解决,谢谢老师!