以文本方式查看主题

-  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=134100)

--  作者:2900819580
--  发布时间:2019/4/27 15:26:00
--  [求助] SQL加载有重复数量

Dim cmd As New SQLCommand
cmd.C

cmd.CommandText = "Sel ect v.* "
cmd.CommandText &= ", a.ID as 任务ID,a.车间 as 车间,a.组别 as 组别,a.单据类型 As 单据类型,a.制单 as 制单,a.审核 as 审核"
cmd.CommandText &= " fro m [" & Vars("mes") & "].dbo.生产发料单 as v "
cmd.CommandText &= " left join  [" & Vars("mes") & "].dbo.生产任务单 As a on a.任务单号 = v.任务单号 and a.子阶ID = v.物料ID and v.车间 = a.车间 and v.组别 = a.组别 "
cmd.CommandText &= " where v.批次号 = " & e.Form.Controls("Text批次号").text

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

 


图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看

 

代码如红色字体所示,这样加载进来会有重复的数据,因为生产任务单会有同样的数据多条,
以下代码出现错误!

Dim cmd As New SQLCommand
cmd.C

cmd.CommandText = "Sel ect v.* "

cmd.CommandText &= “ (sele ct a.ID as 任务ID,a.车间 as 车间,a.组别 as 组别,a.单据类型 As 单据类型,a.制单 as 制单,a.审核 as 审核 from [" & Vars("mes") & "].dbo.生产任务单 As a on a.任务单号 = v.任务单号 and a.子阶ID = v.物料ID and v.车间 = a.车间 and v.组别 = a.组别) "
cmd.CommandText &= " fr om [" & Vars("mes") & "].dbo.生产发料单 as v "
cmd.CommandText &= " where v.批次号 = " & e.Form.Controls("Text批次号").text

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


--  作者:有点蓝
--  发布时间:2019/4/27 15:41:00
--  
cmd.CommandText = "Sel ect distinct v.* "
--  作者:2900819580
--  发布时间:2019/4/29 14:48:00
--  

老师,我想你理解错了,生产发料单中是没有重复的,但生产任务单因为  a.任务单号 = v.任务单号 and a.子阶ID = v.物料ID and v.车间 = a.车间 and v.组别 = a.组别

符合这个条件的有很多条,按以下代码加载进来就会重复了。

 

Dim cmd As New SQLCommand
cmd.C

cmd.CommandText = "Sel ect v.* "
cmd.CommandText &= ", a.ID as 任务ID,a.车间 as 车间,a.组别 as 组别,a.单据类型 As 单据类型,a.制单 as 制单,a.审核 as 审核"
cmd.CommandText &= " fro m [" & Vars("mes") & "].dbo.生产发料单 as v "
cmd.CommandText &= " left join  [" & Vars("mes") & "].dbo.生产任务单 As a on a.任务单号 = v.任务单号 and a.子阶ID = v.物料ID and v.车间 = a.车间 and v.组别 = a.组别 "
cmd.CommandText &= " where v.批次号 = " & e.Form.Controls("Text批次号").text

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


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

如果是所有列的值都重复,那就加入关键字 distinct 即可去除重复。

 

如果只是部分重复,本来的数据就是需要重复的,因为你 生产任务单 的数据就是重复的。


--  作者:2900819580
--  发布时间:2019/4/29 17:32:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看

 

老师,数据如上,发料单有一行,我想从任务单中读取a.ID as 任务ID,a.车间 as 车间,a.组别 as 组别,a.单据类型 As 单据类型,a.制单 as 制单,a.审核 as 审核

 

代码应该怎么修改。


--  作者:有点甜
--  发布时间:2019/4/29 18:07:00
--  
不理解你的意思,请做一个实例发上来测试