以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  调用后台统计数据  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=121479)

--  作者:实话实说
--  发布时间:2018/7/7 7:45:00
--  调用后台统计数据
以下是在订单模块中统计产品欠货的代码,需要加载产成品仓的模块-产品明细。我不想加载产品明细的表,如何调用后台统计的数据呢?

\'生成产品欠货统计表
Dim dta As New DataTableBuilder("产品欠货统计")
dta.AddDef("产品代码", Gettype(String), 32)
dta.AddDef("产品", Gettype(String), 32)
dta.AddDef("颜色", Gettype(String), 32)
dta.AddDef("订单数量", Gettype(Integer))
dta.AddDef("发货数量", Gettype(Integer))
dta.AddDef("欠货数量", Gettype(Integer))
dta.Build()
\'填充数据
Dim b As New Filler
b.SourceTable = DataTables("销售订单明细")
b.SourceCols = "产品代码,产品,颜色" 
b.DataTable = DataTables("产品欠货统计")
b.DataCols = "产品代码,产品,颜色"
b.ExcludeExistValue = True
b.Fill()
b = New Filler
b.SourceTable = DataTables("产品明细")
b.SourceCols = "产品代码,产品,颜色" 
b.DataTable = DataTables("产品欠货统计")
b.DataCols = "产品代码,产品,颜色"
b.ExcludeExistValue = True
b.Fill()
\'产品欠货统计
For Each dra As DataRow In DataTables("产品欠货统计").DataRows
    dra("订单数量") = DataTables("销售订单明细").Compute("Sum(订单数量)"," [产品代码] = \'" & dra("产品代码") & "\' and [颜色] = \'" & dra("颜色") & "\'")
    dra("发货数量") = DataTables("产品明细").Compute("Sum(出仓数量)"," [产品代码] = \'" & dra("产品代码") & "\' and [颜色] = \'" & dra("颜色") & "\'")
    dra("欠货数量") = dra("订单数量") -  dra("发货数量")
Next
Forms("销售订单统计").Controls("统计表").Table.DataSource = DataTables("产品欠货统计")
Forms("销售订单统计").Controls("统计表").Table.AutoSizeCols() \'设置自动列宽
\'删除数值为空的记录
Tables("销售订单统计_统计表").DataTable.DeleteFor("[欠货数量] = 0" )
Tables("销售订单统计_统计表").DataTable.SysStyles("EmptyArea").BackColor = Color.WhiteSmoke \'表空白区的背景设置为灰色
Tables("销售订单统计_统计表").Sort = "产品代码,颜色"
Tables("销售订单统计_统计表").Appearance.ShowSortIcon = False
Tables("销售订单统计_统计表").Refresh
\'自动列宽
Tables("销售订单统计_统计表").AutoSizeCols()


--  作者:有点蓝
--  发布时间:2018/7/7 9:07:00
--  
用sql直接用数据库取不就行了

select 产品代码,产品,颜色, 0 as 订单数量,0 as 发货数量, 0 as 欠货数量 from 销售订单明细
union all
select 产品代码,产品,颜色, 0 as 订单数量,0 as 发货数量, 0 as 欠货数量 from 产品明细


--  作者:实话实说
--  发布时间:2018/7/7 9:32:00
--  
能不能帮我用到上面的代码中去呢?
--  作者:有点蓝
--  发布时间:2018/7/7 10:00:00
--  
sql,去掉换行,自己用到sqlcommand:
Select *,订单数量 - 发货数量 As 欠货数量 from (
Select 产品代码,产品,颜色,sum(订单数量) As 订单数量,0 As 发货数量 from 销售订单明细 group by 产品代码,产品,颜色
union all
Select 产品代码,产品,颜色,0 As 订单数量,sum(发货数量) As 发货数量 from 产品明细 group by 产品代码,产品,颜色) As a where 订单数量 - 发货数量 <> 0

dim dt as datatable = sqlcommand返回的表

Forms("销售订单统计").Controls("统计表").Table.DataSource = dt 
Forms("销售订单统计").Controls("统计表").Table.AutoSizeCols() \'设置自动列宽
\'删除数值为空的记录
Tables("销售订单统计_统计表").DataTable.SysStyles("EmptyArea").BackColor = Color.WhiteSmoke \'表空白区的背景设置为灰色
Tables("销售订单统计_统计表").Sort = "产品代码,颜色"
Tables("销售订单统计_统计表").Appearance.ShowSortIcon = False
Tables("销售订单统计_统计表").Refresh
\'自动列宽
Tables("销售订单统计_统计表").AutoSizeCols()

--  作者:实话实说
--  发布时间:2018/7/7 11:03:00
--  
还是没弄好,我的数据库名:WgCableERP
--  作者:有点蓝
--  发布时间:2018/7/7 11:04:00
--  
贴出你代码
--  作者:实话实说
--  发布时间:2018/7/7 11:37:00
--  
1楼是加载产品明细表后可以正常运行的代码,数据库名WgCableERP

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


--  作者:有点蓝
--  发布时间:2018/7/7 11:42:00
--  
用4楼的方式。

不然就不要使用filler,用这种方式填充:http://www.foxtable.com/webhelp/scr/1533.htm

--  作者:实话实说
--  发布时间:2018/7/7 12:06:00
--  
4楼的代码一时搞不定,能帮我完善取代1楼的代码吗?或改进1楼的代码.我就是不想加载产品明细表
--  作者:有点蓝
--  发布时间:2018/7/7 14:05:00
--  
不加载就不要使用filler,用这种方式填充:http://www.foxtable.com/webhelp/scr/1533.htm