Foxtable(狐表)用户栏目专家坐堂 → 怎样将期初、入库、出库这三张表的数据自动填充到进销存表中并自动计出库存?


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

主题:怎样将期初、入库、出库这三张表的数据自动填充到进销存表中并自动计出库存?

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


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/6/23 12:14:00 [显示全部帖子]

If MainTable.Name = "进销存" Then
    DataTables("进销存").DataRows.Clear()
    Dim f As New Filler
    f.SourceTable = DataTables("期初") '指定数据来源
    f.SourceCols = "日期,代码,材料名称,摘要,期初数量,期初金额" '指定数据来源列
    f.DataTable = DataTables("进销存") '指定数据接收表
    f.DataCols = "日期,代码,材料名称,摘要,期初数量,期初金额" '指定数据接收列
    f.Fill() '填充数据
    
    Dim f2 As New Filler
    f2.SourceTable = DataTables("入库") '指定数据来源
    f2.SourceCols = "入库日期,代码,材料名称,摘要,入库数量,入库金额" '指定数据来源列
    f2.DataTable = DataTables("进销存") '指定数据接收表
    f2.DataCols = "日期,代码,材料名称,摘要,入库数量,入库金额" '指定数据接收列    
    f2.Fill() '填充数据

    Dim f3 As New Filler
    f3.SourceTable = DataTables("出库") '指定数据来源
    f3.SourceCols = "出库日期,代码,材料名称,摘要,出库数量,出库金额" '指定数据来源列
    f3.DataTable = DataTables("进销存") '指定数据接收表
    f3.DataCols = "日期,代码,材料名称,摘要,出库数量,出库金额" '指定数据接收列    
    f3.Fill() '填充数据

    Dim drs As List(of DataRow) = DataTables("进销存").Select("", "代码,日期") '注意排序参数
    drs(0)("结存数量") = drs(0)("期初数量") 
    drs(0)("结存金额") = drs(0)("期初金额") 
    dim n1,n2 as Double
    For i As Integer = 1 To drs.Count - 1  '从第二行开始逐行计算累计
         n1 = IIF( drs(i)("代码") = drs(i-1)("代码"),drs(i-1)("结存数量"),0)
         n2 = IIF( drs(i)("代码") = drs(i-1)("代码"),drs(i-1)("结存金额"),0)
         drs(i)("结存数量") = drs(i)("期初数量") + n1+ drs(i)("入库数量")- drs(i)("出库数量")
         drs(i)("结存金额") = drs(i)("期初金额") + n2+ drs(i)("入库金额")- drs(i)("出库金额")
    Next
End If

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


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/6/23 22:54:00 [显示全部帖子]

SQLJoinTableBuilder法:

注:
    1.日期列统一列名『日期』;
    2.看代码更改需更改的地方

Dim jb1,jb2,jb3 As  SQLJoinTableBuilder
Dim jb() As SQLJoinTableBuilder = {jb1,jb2,jb3}
Dim bs() As String = {"期初","入库","出库"}
Dim Ls() As String = {"期初数量","期初金额","入库数量","入库金额","出库数量","出库金额","结存数量","结存金额"}

For n As Integer = 0 To 2
    jb(n) = New SQLJoinTableBuilder("查询",bs(n))
    jb(n).AddCols("日期","代码","材料名称","摘要")
    For i As Integer = 0 To 7
        jb(n).AddExp(Ls(i),iif(Ls(i).Contains(bs(n)),Ls(i),bs(n) & "数量" & " = Null"))
    Next
Next
jb(0).Union(jb(1),True) 
jb(0).Union(jb(2),True)

Dim t As Table = Tables("进销存_Table1")
t.DataSource = jb(0).BuildDataSource()

Dim drs As List(of DataRow) =t.DataTable.Select("","代码,日期")
drs(0)("结存数量") = drs(0)("期初数量")
drs(0)("结存金额") = drs(0)("期初金额")
Dim n1,n2 As Double
For i As Integer = 1 To drs.Count - 1  
    n1 = IIF( drs(i)("代码") = drs(i-1)("代码"),drs(i-1)("结存数量"),0)
    n2 = IIF( drs(i)("代码") = drs(i-1)("代码"),drs(i-1)("结存金额"),0)
    drs(i)("结存数量") = drs(i)("期初数量") + n1+ drs(i)("入库数量")- drs(i)("出库数量")
    drs(i)("结存金额") = drs(i)("期初金额") + n2+ drs(i)("入库金额")- drs(i)("出库金额")
Next
t.sort ="日期"
t.AutoSizeCols
e.Form.text ="进销存明细"
t.DataTable.SysStyles("EmptyArea").BackColor = Color.White
[此贴子已经被作者于2011-6-23 22:58:53编辑过]

 回到顶部