以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 窗口表的SQL语句求助  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=133217)

--  作者:2900819580
--  发布时间:2019/4/9 19:43:00
--  [求助] 窗口表的SQL语句求助

Dim tb As Table = Tables(e.Form.Name & "_Table1")

Dim tb1 As Table = Tables(e.Form.Name & "_Table11")
Dim dt1 As DataTable = tb1.DataTable

Dim cmd As new SQLCommand
cmd.CommandText = "sele ct DISTINCT 子阶ID,车间,组别,sum(需求数量) as 需求数量 from {" & dt1.Name & "}  " 
MessageBox.Show(cmd.CommandText)
tb.DataSource  = cmd.ExecuteReader


--  作者:有点蓝
--  发布时间:2019/4/9 20:27:00
--  
cmd.CommandText = "select 子阶ID,车间,组别,sum(需求数量) as 需求数量 from {" & dt1.Name & "} group by  子阶ID,车间,组别" 
--  作者:2900819580
--  发布时间:2019/4/9 21:10:00
--  
Microsoft Jet 数据库引擎找不到输入表或查询 \'~TMPCLP领料单新增_Table11\'。 确定它是否存在,以及它的名称的拼写是否正确。
--  作者:有点蓝
--  发布时间:2019/4/9 21:22:00
--  
如果不是主表,或者副本表,只能写入表名

cmd.CommandText = "select 子阶ID,车间,组别,sum(需求数量) as 需求数量 from {某某表} group by  子阶ID,车间,组别" 

--  作者:2900819580
--  发布时间:2019/4/9 22:05:00
--  

Dim cmd As new SQLCommand
cmd.C
cmd.CommandText = "Sel ect * From {生产任务单} where 任务单号 = \'" & tb.Rows(0)("任务单号") & "\'"
Tables(e.Form.Name & "_Table11").DataSource  = cmd.ExecuteReader

数据是通知以上代码加载进来的。

 

 

cmd.CommandText = "sel ect 子阶ID,车间,组别,sum(需求数量) as 需求数量 from {领料单新增_Table11} group by 子阶ID,车间,组别" 

表是副本表,MessageBox.Show(cmd.CommandText) 出来的结果如下图所示。


图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/4/9 22:07:16编辑过]

--  作者:有点蓝
--  发布时间:2019/4/9 22:20:00
--  
使用数据库真正的表名呀,设置DataSource  之后就不是副本了,和原来的主表已经没有任何关系

cmd.CommandText = "sel ect 子阶ID,车间,组别,sum(需求数量) as 需求数量 from {生产任务单} group by 子阶ID,车间,组别" 



--  作者:2900819580
--  发布时间:2019/4/10 13:48:00
--  


Dim sz As String
For Each r As Row In Tables(e.Form.Name & "_Tab订单").Rows
    If sz > "" Then sz &= ","
    sz &= "\'" & r("任务单号") & "\'"
Next
Dim cmd As new SQLCommand
cmd.C

cmd.CommandText = "sele ct a.子阶ID,a.车间,a.组别,sum(a.需求数量) as 需求数量 "
cmd.CommandText &=", b.FNumber As 代码,b.FName As 名称,b.Fmodel as 规格型号,c.Fnote as 库位号,e.FName as 仓库名称,f.FName as 单位 "

cmd.CommandText &= "from {生产任务单} as a "
cmd.CommandText &= " left join [" & Vars("Kis") & "].dbo.t_ICItemCore as b on a.子阶ID = b.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 d on a.子阶ID = d.FItemID "
cmd.CommandText &= " left join [" & Vars("Kis") & "].dbo.t_Stock As e on d.FDefaultLoc = e.FItemID "
cmd.CommandText &= " left join [" & Vars("Kis") & "].dbo.t_MeasureUnit As f on d.FUnitID = f.FItemID "
cmd.CommandText &= " where 任务单号 In ( " & sz & " ) group by 子阶ID,车间,组别,代码,名称,规格型号,库位号,仓库名称,单位 "
MessageBox.Show(cmd.CommandText)
Tables(e.Form.Name & "_Table11").DataSource  = cmd.ExecuteReader

 

老师,以上代码会再现以下错误 提示

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2018.3.9.1
错误所在事件:
详细错误信息:
列名 \'单位\' 无效。
列名 \'仓库名称\' 无效。
列名 \'库位号\' 无效。
列名 \'规格型号\' 无效。
列名 \'名称\' 无效。
列名 \'代码\' 无效。


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

可执行的实例发上来测试。

 

 


--  作者:2900819580
--  发布时间:2019/4/10 18:45:00
--  
以下是引用有点甜在2019/4/10 15:16:00的发言:

可执行的实例发上来测试。

 

 

老师,是SQL的数据库,不知如何发上来,如果只用这一行,是没有问题的,增加了其它列就有问题了:
cmd.CommandText = "sel ect 子阶ID,车间,组别,sum(需求数量) as 需求数量 from {" & dt1.Name & "} group by  子阶ID,车间,组别"
代码就只有上面一段。 以下是MessageBox.Show(cmd.CommandText) 的值
 sele ct a.子阶ID,a.车间,a.组别,sum(a.需求数量) as 需求数量 , b.FNumber As 代码,b.FName As 名称,b.Fmodel as 规格型号,c.Fnote as 库位号,e.FName as 仓库名称,f.FName as 单位 from {生产任务单} as a  left join [AIS20181207194554].dbo.t_ICItemCore as b on a.子阶ID = b.FItemID  left join [AIS20181207194554].dbo.t_ICItemMaterial As c on a.子阶ID = c.FItemID  left join [AIS20181207194554].dbo.t_ICItemBase As d on a.子阶ID = d.FItemID  left join [AIS20181207194554].dbo.t_Stock As e on d.FDefaultLoc = e.FItemID  left join [AIS20181207194554].dbo.t_MeasureUnit As f on d.FUnitID = f.FItemID  where 任务单号 In ( \'RW1904048\',\'RW1904014\' ) group by 子阶ID,车间,组别,代码,名称,规格型号,库位号,仓库名称,单位

[此贴子已经被作者于2019/4/10 18:50:00编辑过]

--  作者:有点甜
--  发布时间:2019/4/10 21:35:00
--  

拷贝sql语句,在你的数据库那里执行,报什么错?

 

如果报错,那删减你的sql语句测试,直到可以正常执行为止。定位写错的位置。