以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  流水账新思考  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=4923)

--  作者:lihe60
--  发布时间:2009/11/9 12:20:00
--  流水账新思考

更多的时候,流水账是区分产品的,例如下图的库存表:

此类流水账的设计方法和之前是一样,只需在条件表达式中,加入产品比较即可:

Select Case e.DataCol.Name
    Case
"日期","产品","入库",
"出库"
       
If e.DataRow.IsNull("日期") = False Then
           
Dim drs As List(of DataRow)
            drs = e.
DataTable.Select("[日期] >= #" & e.DataRow("日期") & "# And [产品] = \'" & e.DataRow("产品") & "\'","日期")
            For
Each dr As DataRow In
drs
                Dim
Filter As String
                Filter =
"[日期] < #" & dr("日期") & "# Or ([日期] = #" & dr("日期") & "# And [_Identify] <= " & dr("_Identify") &
")"
                Filter =
"(" & Filter & ") And [产品] = \'" & dr("产品") & "\'"
               
Dim Val1 As Double = e.DataTable.Compute("Sum(入库)",Filter)
                Dim
Val2 As Double = e.DataTable.Compute("Sum(出库)"
,Filter)
                dr(
"库存") = Val1 - Val2
            Next
       
End If
End
Select

流水账表格中如果有入库 出库1 出库2,如何求库存?注:出库1 出库2是变量。

如何求附件中表“明细账”中窗口“明细账”的“可用款余额”?
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.table

[此贴子已经被作者于2009-11-9 12:25:40编辑过]

--  作者:czy
--  发布时间:2009/11/9 13:17:00
--  
没看明白。
你的文件中并没有可支配款项,不知要怎么求余额?
--  作者:lihe60
--  发布时间:2009/11/9 13:30:00
--  
单击“明细账”表的“明细账”窗口的“查询”按钮可以看见的。
--  作者:czy
--  发布时间:2009/11/9 13:37:00
--  

工程款就是可支配的款项吗?


--  作者:lihe60
--  发布时间:2009/11/9 13:39:00
--  
是的。
--  作者:yangming
--  发布时间:2009/11/9 14:48:00
--  

明细表的查询按钮代码:改成下面的代码

DataTables("明细账").DeleteFor("")
dim f As New Filler
if vars("起始日期") is nothing or vars("截止日期") is nothing  or vars("工程编号") is nothing then
   messagebox.show("起始日期或截止日期为空或工程编号为空")
else
   for each dr as datarow in datatables("单据明细").datarows
     for each dc as datacol in datatables("明细账").datacols
        if dr("科目名称")=dc.name and dr("日期")>=vars("起始日期") and dr("日期")<=vars("截止日期") and dr("工程编号")=vars("工程编号") then
            dim drr as row=tables("明细账").addnew()
            drr(dc.name)=dr("金额")
            drr("日期")=dr("日期")
            drr("摘要")=dr("摘要")
            drr("单据编号")=dr("单据编号")
            drr("科目类别")=dr("科目类别")
     drr("可用款余额")=DataTables("明细账").Compute("Sum(工程款)")-DataTables("明细账").Compute("Sum(工资)")-DataTables("明细账").Compute("Sum(税金)")

        end if
     next
   next
end if


--  作者:czy
--  发布时间:2009/11/9 20:16:00
--  

流水账的话估计要这样才行。

DataTables("明细账").DataRows.Clear()
if vars("起始日期") is nothing or vars("截止日期") is nothing  or vars("工程编号") is nothing then
    messagebox.show("起始日期或截止日期为空或工程编号为空")
else
    for each dr as datarow in datatables("单据明细").datarows
        for each dc as datacol in datatables("明细账").datacols
            if dr("科目名称")=dc.name and dr("日期")>=vars("起始日期") and dr("日期")<=vars("截止日期") and dr("工程编号")=vars("工程编号") then
                dim drr as row=tables("明细账").addnew()
                drr(dc.name)=dr("金额")
                drr("日期")=dr("日期")
                drr("摘要")=dr("摘要")
                drr("单据编号")=dr("单据编号")
                drr("科目类别")=dr("科目类别")
            end if
        next
    next
end if

Dim dt As DataTable = DataTables("明细账")
Dim sum,sum1,sum2 As Double
For Each dr As DataRow In dt.DataRows
    sum = dt.Compute("Sum(工程款)","[单据编号] = \'" & dr("单据编号") & "\' And [日期] <= #" & dr("日期") & "#")
    sum1 = dt.Compute("Sum(工资)","[单据编号] = \'" & dr("单据编号") & "\' And [日期] <= #" & dr("日期") & "#")
    sum2 = dt.Compute("Sum(税金)","[单据编号] = \'" & dr("单据编号") & "\' And [日期] <= #" & dr("日期") & "#")
    dr("可用款余额") = sum - sum1 - sum2
Next


--  作者:xl
--  发布时间:2009/11/9 20:34:00
--  

若6楼或7楼给个“结构设计图”就方便学习了!!

现在论坛很多程序设计得很好,即使看得懂的程序,也总感觉“思路不清晰”,模糊一片,稍一搬家就无法再次设计了。