以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SELECT问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=56727)

--  作者:utcxray
--  发布时间:2014/9/11 13:31:00
--  SELECT问题
SELECT 字段列表 FROM {表1} INNER JOIN {表2} ON {表1}.列名 = {表2}.列名

这句话意思:对所有表1和表2都有对应列名的数据在表1中查询 字段列表要求的数据。我的理解对吗?

问题:表1中有型号,数量,但无该型号对应的供应商列,表2中有供应商和型号。
目的:生成一个表,该表含供应商,型号,及表1中的数量。

下述代码出库是表1,采购明细是表2,出库表中有型号,出库数量,出库日期,金额,但没有供应商。采购明细表中有供应商及型号,想按出库日期统计每个供应商的出库数量及金额,代码实际执行中报SELECT错误。请指点。
\'SQL语句生成临时表
Dim 
cmd As New SQLCommand
Dim 
dt As DataTable
‘cmd.ConnectionName = 
"Sale"
cmd
.CommandText = "Select *,型号 FROM {出库} INNER JOIN {出库} ON {采购明细}.型号= {出库}.型号"
dt = cmd.ExecuteReader()

\'
对临时进行分组统计
Dim 
b As New CrossTableBuilder("统计表111",dt)
b
.HGroups.AddDef("供应商")
b
.VGroups.AddDef("日期","{0}")
b.Totals.AddDef(
"数量") 
b.HorizontalTotal = 
True
b.VerticalTotal = 
True
<!--[if !supportLineBreakNewLine]-->b.Build() <!--[endif]-->

--  作者:有点甜
--  发布时间:2014/9/11 14:28:00
--  
cmd.CommandText = "Select * FROM {出库} INNER JOIN {采购明细} ON {采购明细}.型号= {出库}.型号"
[此贴子已经被作者于2014-9-11 14:28:37编辑过]

--  作者:utcxray
--  发布时间:2014/9/11 16:32:00
--  
谢谢,大问题已解决,但无法再添加分组,怎么回事
--  作者:有点甜
--  发布时间:2014/9/11 16:35:00
--  
以下是引用utcxray在2014-9-11 16:32:00的发言:
谢谢,大问题已解决,但无法再添加分组,怎么回事

 

什么意思?


--  作者:utcxray
--  发布时间:2014/9/11 16:37:00
--  

cmd.CommandText = "Select * FROM {出库} INNER JOIN {采购明细} ON {采购明细}.型号= {出库}.型号"
上述代码生成后,dt应该已包含出库表中和采购明细表型号对应的供应商的所有数据,我按供应商按月统计数量没问题,再添加按供应商按型号按月统计数量就说无型号列,统计金额也不行。

--  作者:utcxray
--  发布时间:2014/9/11 16:40:00
--  

Dim b As New CrossTableBuilder("统计表111",dt)
b.HGroups.AddDef("
供应商")
b.VGroups.AddDef("
日期","{0}")
b.Totals.AddDef("
数量") 
b.HorizontalTotal =
 True


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

这样可以。


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

Dim b As New CrossTableBuilder("统计表111",dt)
b.HGroups.AddDef("
供应商")

b.HGroups.AddDef("型号")
b.VGroups.AddDef("日期","{0}")
b.Totals.AddDef("
数量") 
b.HorizontalTotal =
 True

这样不行


--  作者:utcxray
--  发布时间:2014/9/11 16:41:00
--  
怎么刚发的消息多了些莫名其妙的东西,像上楼的带<>中间的
--  作者:有点甜
--  发布时间:2014/9/11 16:45:00
--  

改一下

 

cmd.CommandText = "Select {出库}.*, {采购明细}.供应商 FROM {出库} INNER JOIN {采购明细} ON {采购明细}.型号= {出库}.型号"


--  作者:utcxray
--  发布时间:2014/9/11 17:18:00
--  

Dim cmd As New SQLCommand

Dim dt As DataTable

cmd.CommandText = "Select {出库}.*, {采购明细}.供应商 FROM {出库} INNER JOIN {采购明细} ON {采购明细}.型号= {出库}.型号"

dt = cmd.ExecuteReader()

\'对临时进行分组统计

Dim b As New CrossTableBuilder("统计表111",dt)

b.HGroups.AddDef("供应商")

b.HGroups.AddDef("型号")

b.VGroups.AddDef("出库日期","{0}月")

b.Totals.AddDef("出库数量")

b.HorizontalTotal = True

b.VerticalTotal = True

Tables("采购管理_Table18").DataSource = b.BuildDataSource()


代码执行没问题,但有个疑问:上述代码生成的是供应商月出库数量表吗?如果是,那统计数字就不对呀。


--  作者:有点甜
--  发布时间:2014/9/11 17:33:00
--  

 数据肯定正确,是不是你还要加上年?

 

Dim cmd As New SQLCommand

Dim dt As DataTable

cmd.CommandText = "Select {出库}.*, {采购明细}.供应商 FROM {出库} INNER JOIN {采购明细} ON {采购明细}.型号= {出库}.型号"

dt = cmd.ExecuteReader()

\'对临时进行分组统计

Dim b As New CrossTableBuilder("统计表111",dt)

b.HGroups.AddDef("供应商")

b.HGroups.AddDef("型号")
b.VGroups.AddDef("出库日期",DateGroupEnum.Year,"{0}年")
b.VGroups.AddDef("出库日期","{0}月")

b.Totals.AddDef("出库数量")

b.HorizontalTotal = True

b.VerticalTotal = True

Tables("采购管理_Table18").DataSource = b.BuildDataSource()