Foxtable(狐表)用户栏目专家坐堂 → 高效流水账 现金日记录入账 页面实现后 怎么实现收入和支出 自动计算余额呢?


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

主题:高效流水账 现金日记录入账 页面实现后 怎么实现收入和支出 自动计算余额呢?

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
高效流水账 现金日记录入账 页面实现后 怎么实现收入和支出 自动计算余额呢?  发帖心情 Post By:2019/10/6 20:13:00 [显示全部帖子]

现金日记账页面代码:

Dim e As RequestEventArgs = args(0)
Dim wb As New weui

Select Case e.Path
    Case "xjrjz.htm"
        If e.PostValues.Count = 0 Then
            wb.AddPageTitle("","ph1","博融数据现金日记账")
            wb.AddForm("","form1","xjrjz.htm")
            
            With wb.AddInputGroup("form1","ipg1","现金日记账")
                .AddInput("日期","日期","date")
                .AddSelect("凭证种类","凭证种类","|fa piao|收据|收条|小piao|物流单|快递单|其它单据")
                .AddInput("凭证号数","凭证号数","Text")
                .AddSelect("对方科目","对方科目","|日常办公|销售回款|日常开支|货物订货|其它项目")
                .AddInput("摘要","内容摘要","Text")
                .AddInput("借方金额","收入金额","number").Step = "0.01"
                .AddSelect("借方","收入人员","|肖妍|费泓纶|田景兰")
                .AddInput("贷方金额","支出金额","number").Step = "0.01"
                .AddSelect("贷方","支出人员","|肖妍|费泓纶|田景兰")
                .AddInput("余额","余额","number").Step = "0.01"
            End With
            
            With wb.AddButtonGroup("form1","btg1",True)
                .Add("btn1", "确定", "submit")
            End With
            
            e.WriteString(wb.Build)
        Else
            Dim nms() As String = {"日期","摘要","对方科目"} '不能为空的列名数组
            For Each nm As String In nms
                If e.PostValues.ContainsKey(nm) = False Then '生成错误提示页
                    With wb.AddMsgPage("","msgpage","增加失败", nm & "列不能为空!")
                        .icon = "Warn" '改变图标
                        .AddButton("btn1","返回").Attribute = ""
                    End With
                    e.WriteString(wb.Build)
                    Return "" ' '必须返回
                End If
            Next
            nms = New String() {"日期","凭证种类","凭证号数","摘要","对方科目","日页","借方金额","贷方金额","余额","借方","贷方"}  '重新定义了nms数组,增加了两列.
            Dim dr As DataRow = DataTables("现金日记账").AddNew()
            For Each nm As String In nms
                If e.PostValues.ContainsKey(nm) Then
                    dr(nm) = e.PostValues(nm)
                End If
            Next           
            '保存并生成增加成功提示页面
            dr.save()
            With wb.AddMsgPage("","msgpage","增加成功", "好好学习,天天向上") '生成成功提示页
                .AddButton("btn1","继续增加","xjrjz.htm")
            End With
            
        End If
        wb.InsertHTML("<script>其它.parentNode.parentNode.style.display='none'</script>")
        e.WriteString(wb.Build)
        
End Select


计算代码如下:(该如何融合到上述页面代码中呢?)

Select Case e.DataCol.Name
    Case "借方金额","贷方金额"
        Dim dr As DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") '找出上一行
        If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
            e.DataRow("余额") = e.DataRow("借方金额") - e.DataRow("贷方金额")
            dr = e.DataRow
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
            drs(i)("余额") = drs(i-1)("余额") + drs(i)("借方金额") - drs(i)("贷方金额")
        Next    
End Select
[此贴子已经被作者于2019/10/6 20:14:11编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)页面只是一行记录,无法结合这种表事...  发帖心情 Post By:2019/10/6 20:30:00 [显示全部帖子]

看的有点头大  有点蓝老师可以指导一下不   十分感谢!

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)上传实例说明  发帖心情 Post By:2019/10/6 21:02:00 [显示全部帖子]

项目例子
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:现金日记账.foxdb

实现余额等于借方金额-贷方金额

麻烦有点蓝老师 多多指导  十分感谢

yue.js文件内容如下:(没有达到高效流水账的效果)
Function calc(){
    document.getElementById("余额").value = document.getElementById("借方金额").value - document.getElementById("贷方金额").value;
}
[此贴子已经被作者于2019/10/6 21:04:05编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)Dim wb As New weuiSelect Case e.Pa...  发帖心情 Post By:2019/10/6 21:44:00 [显示全部帖子]

有点蓝老师
运行效果如下:
此主题相关图片如下:1.png
按此在新窗口浏览图片
没有达到高效流水账的效果
自动累计上一行所有的收入金额  然后减去支出金额  得到余额 
当前运行效果永远只操作当前行的数据
还得麻烦有点蓝老师继续指导一下 js文件的内容   目前js文件内容就只有
function calc(){
    document.getElementById("余额").value = document.getElementById("借方金额").value - document.getElementById("贷方金额").value;
}

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)这种需要使用submitAjaxFileds提交到...  发帖心情 Post By:2019/10/6 22:17:00 [显示全部帖子]

function setCodes(){
    var result= submitAjaxFileds('xjrjz.htm','','借方金额','贷方金额',false);
    if(result){
????
    }
}

有点蓝老师  我只能将js写成这样  不知道思路对不对  红色问好部分怎么写呢?

还烦请多多指导  谢谢!


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)function setCodes(){  &n...  发帖心情 Post By:2019/10/7 11:21:00 [显示全部帖子]

后台页面计算htm
这样写貌似不对  提示错误
Dim dr As DataRow
Dim drs As List(of DataRow)
dr = DataTable("现金日记账").Find("[_SortKey] < " & dr("_SortKey"), "[_SortKey] Desc") '找出上一行
If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
    dr("余额") = dr("收入") - dr("支出")
    dr = dr
End If
drs = DataTable("现金日记账".Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
    drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出")
Next
有点蓝老师是否可以指导一下呢  谢谢!

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)Dim dr As DataRowDim drs As List(o...  发帖心情 Post By:2019/10/7 14:05:00 [显示全部帖子]

修正后还是一样的错误提示 

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

Dim e As RequestEventArgs = args(0)
Dim dr As DataRow
Dim drs As List(of DataRow)
dr = DataTable("现金日记账").Find("[日期] < '" & e.Values("日期") & "'", "[_SortKey] Desc") '找出上一行
If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
    dr("余额") = dr("收入") - dr("支出")
    dr = dr
End If
drs = DataTable("现金日记账".Select("[日期] >= '" & e.Values("日期") & "'", "[_SortKey]")
For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
    drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出")
Next

 回到顶部