Foxtable(狐表)用户栏目专家坐堂 → 如何把后台未加载数据填充到当前表?


  共有4699人关注过本帖树形打印复制链接

主题:如何把后台未加载数据填充到当前表?

帅哥哟,离线,有人找我吗?
shixia
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
如何把后台未加载数据填充到当前表?  发帖心情 Post By:2014/5/14 9:02:00 [只看该作者]

有一进销存项目,出库和入库数据都在后台未加载,想建立一个出入库明细表,把后台的出库入库数据直接填充到该表中,以前数据都加载到前台时,我是用DataTableBuilder建立一个临时表,再用Filler填充,现在所有数据都在后台,想在不将数据加载到前台的情况下实现相同功能,我看了几遍帮助,大部分后台统计工具都是对数据进行求和等统计加工,我只想简单的罗列,有那几种解决方案,那种方案最优,请大家帮助我

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/14 9:05:00 [只看该作者]

用SQL语句实现, 看下你具体想生成怎么样的统计表,上个例子.我帮你完成.

 回到顶部
帅哥哟,离线,有人找我吗?
shixia
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
  发帖心情 Post By:2014/5/14 9:19:00 [只看该作者]

例子
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar

[此贴子已经被作者于2014-5-14 9:20:33编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/14 9:41:00 [只看该作者]

能否描述一下你想怎么统计,看着有点费劲.

 回到顶部
帅哥哟,离线,有人找我吗?
shixia
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
  发帖心情 Post By:2014/5/14 14:40:00 [只看该作者]

1、建立临时表:
Dim dtb As New DataTableBuilder("仓库明细")
dtb.AddDef("商品类别", Gettype(String), 32)
dtb.AddDef("商品名称", Gettype(String), 32)
dtb.AddDef("商品代码", Gettype(String), 32)
dtb.AddDef("规格", Gettype(String), 32)
dtb.AddDef("年度", Gettype(Integer))
dtb.AddDef("月份", Gettype(Integer))
dtb.AddDef("日期", Gettype(Date))
dtb.AddDef("类别", Gettype(String), 32)
dtb.AddDef("编号", Gettype(String), 32)
dtb.AddDef("摘要", Gettype(String), 32)
dtb.AddDef("领货人", Gettype(String), 32)
dtb.AddDef("客户供应商", Gettype(String), 32)
dtb.AddDef("入库", Gettype(Double))
dtb.AddDef("出库", Gettype(Double))
dtb.AddDef("结存", Gettype(Double))  (这列在表中都没有,是新增加的一列)
dtb.Build()
2、设立加载条件FILTER(忽略)
3、把表CKMX(出库)中“出库编号明细,日期,摘要,商品代码,商品类别,商品名称,规格,出库数量,销售员,年,月”字段数据填充到临时表,
把RKMX(入库)中"入库编号明细,日期,摘要,商品代码,商品类别,商品名称,规格,入库数量,客户,销售员,年,月"字段数据填充到临时表,
4、因为有加载条件,例如只统计2014年5月以后数据,那么对5月以前结存数据需要增加一行对前期结存求和(可忽略)
    Dim Products As List(Of String)
    Products = DataTables("商品信息").GetValues("商品代码",Filter2)
    Dim s1 As Double
    Dim s2 As Double
    For Each Product As String In Products
        s1 = DataTables("RKMX").Compute("SUM(入库数量)","商品代码='" & Product & "' And 日期<" & Filter1)
        s2 = DataTables("CKMX").Compute("SUM(出库数量)","商品代码='" & Product & "' And 日期<" & Filter1)
        If s1-s2 <> 0 Then
            Tables("仓库明细").AddNew()
            Dim dr As DataRow = DataTables("商品信息").Find("商品代码='" & Product & "'")
            If dr IsNot Nothing Then
                Tables("仓库明细").Current("商品代码") = dr("商品代码")
                Tables("仓库明细").Current("商品类别") = dr("商品类别")
                Tables("仓库明细").Current("商品名称") = dr("商品名称")
                Tables("仓库明细").Current("规格") = dr("规格")
                Tables("仓库明细").Current("编号") = "JZ"
                Tables("仓库明细").Current("摘要") = "前期结存"
                Tables("仓库明细").Current("入库") = s1-s2
            End If
        End If
    Next
5、对“结存”列,以日期为序号反序,按“上行结存+入库-出库”公式计算出数据,实质上是一个仓库账簿
drs(0)("结存") = drs(0)("入库") - drs(0)("出库") '设置第一行的累计支出
   If drs(i)("商品代码") = drs(i - 1)("商品代码") Then
        drs(i)("结存") = drs(i-1)("结存") + drs(i)("入库") - drs(i)("出库")
    Else
        drs(i)("结存") = drs(i)("入库") - drs(i)("出库")
    End If

6、MainTable = Tables("仓库明细") ,显示该表
需要:第三步我以前是用Filler,但现在表的数据全部在后台,就不能用Filler,必须用其它方法解决。整个统计中对所有数据没有进行求和之类统计,只是把数据简单地填充罗列出来,然后增加一“结存”列对余额进行计算而已

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/14 15:27:00 [只看该作者]

 回复5楼,关于fill填出数据,你可以直接用查询表得到数据,代码如下

 

Dim q As new QueryBuilder
q.ConnectionName = "Data"
q.TableName = "统计表"
q.SelectString = "Select 出库编号明细 As 编号,日期,摘要,商品代码,商品类别,商品名称,规格,'' As 入库, 出库数量 As 出库,'' As 客户供应商,销售员,年,月 from {CKMX}" _
& " union " _
& " Select 入库编号明细,日期,摘要,商品代码,商品类别,商品名称,规格,入库数量, '', 客户,销售员,年,月 from {RKMX}"
q.Build
MainTable = Tables("统计表")

[此贴子已经被作者于2014-5-14 15:29:07编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/14 15:33:00 [只看该作者]

 其余的,比如 find,compute 等等,可以用 sqlFind 和 sqlCompute 去代替。

 回到顶部
帅哥哟,离线,有人找我吗?
shixia
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
  发帖心情 Post By:2014/5/15 10:21:00 [只看该作者]

q.SelectString = "Select 出库编号明细 As 编号,日期,摘要,商品代码,商品类别,商品名称,规格,'' As 入库, 出库数量 As 出库,'' As 客户供应商,销售员,年,月 from {CKMX}" _ 
& " union " _
& " Select 入库编号明细,日期,摘要,商品代码,商品类别,商品名称,规格,入库数量, '', 客户,销售员,年,月 from {RKMX}"

以上代码确实可以达到要求,但是一点请教:以上代码生成的列全部都是字符型,其中入库,出库等如果是数字型就方便后面计算,用SQL语言能不能实现

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/15 11:01:00 [只看该作者]

 回复8楼,你改一下即可

 

Dim q As new QueryBuilder
q.ConnectionName = "Data"
q.TableName = "统计表"
q.SelectString = "Select 出库编号明细 As 编号,日期,摘要,商品代码,商品类别,商品名称,规格,0 As 入库, 出库数量 As 出库,'' As 客户供应商,销售员,年,月 from {CKMX}" _
& " union " _
& " Select 入库编号明细,日期,摘要,商品代码,商品类别,商品名称,规格,入库数量, 0, 客户,销售员,年,月 from {RKMX}"
q.Build
MainTable = Tables("统计表")


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/15 11:02:00 [只看该作者]

 或者这样改

 

Dim q As new QueryBuilder
q.ConnectionName = "Data"
q.TableName = "统计表"
q.SelectString = "Select 出库编号明细 As 编号,日期,摘要,商品代码,商品类别,商品名称,规格,null As 入库, 出库数量 As 出库,'' As 客户供应商,销售员,年,月 from {CKMX}" _
& " union " _
& " Select 入库编号明细,日期,摘要,商品代码,商品类别,商品名称,规格,入库数量, null, 客户,销售员,年,月 from {RKMX}"
q.Build
MainTable = Tables("统计表")


 回到顶部
总数 11 1 2 下一页