以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  合并数据操作问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=187970)

--  作者:lin98
--  发布时间:2023/8/24 10:31:00
--  合并数据操作问题
表A的字段:单号,料号,品名,数量,日期,审核
表B的字段:单号,料号,品名,数量,日期,审核,客户


注:
2.合并后在,单号,料号,品名,在同一行


\'Dim cmd As New SQ-LCommand
\'Dim dt As DataTable
\'Dim sCols() As String = {"单号", "料号", "品名", "数量", "日期"}
\'Dim dCols() As String = {"单号", "料号", "品名", "表A数量", "日期"}
\'cmd.C\'"
\'cmd.CommandText = "SELEC-T * From {表A}WHERE 审核 = \'未审核"
\'dt = cmd.ExecuteReader()
\'For Each dr As DataRow In dt.DataRows
\'    Dim nr As DataRow = DataTables("员工").AddNew()
\'    For i As Integer = 0 To sCols.Length - 1
\'        nr(dCols(i)) = dr(sCols(i))
\'    Next
\'Next
[此贴子已经被作者于2023/8/25 16:51:23编辑过]

--  作者:有点蓝
--  发布时间:2023/8/24 10:49:00
--  
如果是SqlServer,直接使用SQL生成表D参考

sel
ect a.单号,a.料号,a.品名,a.数量 as 表A数量,a.日期 as 表A日期,表B数量,表C数量,a.审核 from 表A as a inner join ( select 单号,料号,品名,sum(数量) as 表B数量 from 表B group by 单号,料号,品名) as b on a.单号=b.单号 and a.料号=b.料号 and a.品名=b.品名 inner join ( select 单号,料号,品名,sum(数量) as 表C数量 from 表C group by 单号,料号,品名) as c on a.单号=c.单号 and a.料号=c.料号 and a.品名=c.品名 
--  作者:lin98
--  发布时间:2023/8/24 11:42:00
--  
Dim cmd As New SQ-LCommand
cmd.C\'
Dim dt As DataTable
cmd.CommandText = select a.单号,a.料号,a.品名,a.数量 as 表A数量,a.日期 as 表A日期,表B数量,表C数量,a.审核 from 表A as a inner join ( select 单号,料号,品名,sum(数量) as 表B数量 from 表B group by 单号,料号,品名) as b on a.单号=b.单号 and a.料号=b.料号 and a.品名=b.品名 inner join ( select 单号,料号,品名,sum(数量) as 表C数量 from 表C group by 单号,料号,品名) as c on a.单号=c.单号 and a.料号=c.料号 and a.品名=c.品名 
Tables("表D").DataSource = cmd.ExecuteReader()
执行报错
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:
详细错误信息:
SELEC-T 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确
[此贴子已经被作者于2023/8/24 11:42:10编辑过]

--  作者:有点蓝
--  发布时间:2023/8/24 11:45:00
--  
各种中文的符号改为英文符号,如逗号等改为英文逗号。

另外这种语法适合SqlServer,其它数据库的多表关联用法请自行百度

--  作者:lin98
--  发布时间:2023/8/24 11:59:00
--  
现数据源是ACCESS,还有一个,以表A:单号,料号,品名,数量,日期,审核=未审核,审核=未审核,要加在哪位置?
--  作者:有点蓝
--  发布时间:2023/8/24 14:24:00
--  
加到最后面
.........=c.料号 and a.品名=c.品名  where a.审核=\'未审核\'

--  作者:lin98
--  发布时间:2023/8/24 15:10:00
--  
Dim cmd As New SQ-LCommand
cmd.C\'
Dim dt As DataTable
cmd.CommandText = select a.单号,a.料号,a.品名,a.数量 as 表A数量,a.日期 as 表A日期,表B数量,表C数量,a.审核 from 表A as a inner join ( select 单号,料号,品名,sum(数量) as 表B数量 from 表B group by 单号,料号,品名) as b on a.单号=b.单号 and a.料号=b.料号 and a.品名=b.品名 inner join ( select 单号,料号,品名,sum(数量) as 表C数量 from 表C group by 单号,料号,品名) as c on a.单号=c.单号 and a.料号=c.料号 and a.品名=c.品名 where a.审核=\'未审核\'
msgbox(cmd.CommandText) \'
Tables("表D").DataSource = cmd.ExecuteReader()\'
MsgBox(1)\'

执行后,没报错,也没有数据显示,调试也没显示内容,如何解决?据源是ACCESS

--  作者:有点蓝
--  发布时间:2023/8/24 15:12:00
--  
https://www.baidu.com/baidu?ie=UTF-8&word=access%20%E5%A4%9A%E8%A1%A8%E5%85%B3%E8%81%94
--  作者:lin98
--  发布时间:2023/8/24 15:27:00
--  
老师,找不到问题,还是没有数据显示,如何解决?
--  作者:有点蓝
--  发布时间:2023/8/24 16:23:00
--  
cmd.CommandText = select a.单号,a.料号,a.品名,a.数量 as 表A数量,a.日期 as 表A日期,表B数量,表C数量,a.审核 from (表A as a inner join ( select 单号,料号,品名,sum(数量) as 表B数量 from 表B group by 单号,料号,品名) as b on a.单号=b.单号 and a.料号=b.料号 and a.品名=b.品名) inner join ( select 单号,料号,品名,sum(数量) as 表C数量 from 表C group by 单号,料号,品名) as c on a.单号=c.单号 and a.料号=c.料号 and a.品名=c.品名 where a.审核=\'未审核\'