以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 高效流水账 现金日记录入账 页面实现后 怎么实现收入和支出 自动计算余额呢? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=141607) |
||||
-- 作者:李孝春 -- 发布时间: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("凭证种类","凭证种类","|发票|收据|收条|小票|物流单|快递单|其它单据") .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编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/10/6 20:23:00 -- 页面只是一行记录,无法结合这种表事件用法,可以参考这里的金额计算方法:http://www.foxtable.com/mobilehelp/topics/0130.htm。注意calc函数的用法 |
||||
-- 作者:李孝春 -- 发布时间:2019/10/6 20:30:00 -- 回复:(有点蓝)页面只是一行记录,无法结合这种表事... 看的有点头大 有点蓝老师可以指导一下不 十分感谢! |
||||
-- 作者:有点蓝 -- 发布时间:2019/10/6 20:31:00 -- 上传实例说明 |
||||
-- 作者:李孝春 -- 发布时间:2019/10/6 21:02:00 -- 回复:(有点蓝)上传实例说明 项目例子
实现余额等于借方金额-贷方金额 麻烦有点蓝老师 多多指导 十分感谢 yue.js文件内容如下:(没有达到高效流水账的效果) Function calc(){ document.getElementById("余额").value = document.getElementById("借方金额").value - document.getElementById("贷方金额").value; } [此贴子已经被作者于2019/10/6 21:04:05编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/10/6 21:22:00 -- 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("凭证种类","凭证种类","|发票|收据|收条|小票|物流单|快递单|其它单据") .AddInput("凭证号数","凭证号数","Text") .AddSelect("对方科目","对方科目","|日常办公|销售回款|日常开支|货物订货|其它项目") .AddInput("摘要","内容摘要","Text") \'.AddInput("日页","日页","Text") With .AddInput("借方金额","收入金额","number") .Step = "0.01" .Attribute = "onchange=\'calc()\'" End With .AddSelect("借方","收入人员","|肖妍|费泓纶|田景兰") With .AddInput("贷方金额","支出金额","number") .Step = "0.01" .Attribute = "onchange=\'calc()\'" End With .AddSelect("贷方","支出人员","|肖妍|费泓纶|田景兰") .AddInput("余额","余额","number") End With With wb.AddButtonGroup("form1","btg1",True) .Add("btn1", "确定", "submit") End With wb.AppendHTML("<script src=\'./lib/ajaxform.js\'></script>",True) \'引入脚本文件 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 e.WriteString(wb.Build) End If End Select js的function 关键字必须是小写的 function calc(){ document.getElementById("余额").value = document.getElementById("借方金额").value - document.getElementById("贷方金额").value; } |
||||
-- 作者:李孝春 -- 发布时间:2019/10/6 21:44:00 -- 回复:(有点蓝)Dim wb As New weuiSelect Case e.Pa... 有点蓝老师 没有达到高效流水账的效果 自动累计上一行所有的收入金额 然后减去支出金额 得到余额 当前运行效果永远只操作当前行的数据 还得麻烦有点蓝老师继续指导一下 js文件的内容 目前js文件内容就只有 function calc(){ document.getElementById("余额").value = document.getElementById("借方金额").value - document.getElementById("贷方金额").value; } |
||||
-- 作者:有点蓝 -- 发布时间:2019/10/6 21:56:00 -- 这种需要使用submitAjaxFileds提交到后台计算,http://www.foxtable.com/mobilehelp/topics/0103.htm 服务端根据主键查找到当前行,再根据当前行得到上一行的余额:
余额 = 上一行的余额 + submitAjaxFileds提交的借方金额 - submitAjaxFileds提交的贷方金额 |
||||
-- 作者:李孝春 -- 发布时间:2019/10/6 22:17:00 -- 回复:(有点蓝)这种需要使用submitAjaxFileds提交到... function setCodes(){ var result= submitAjaxFileds(\'xjrjz.htm\',\'\',\'借方金额\',\'贷方金额\',false); if(result){ ???? } } 有点蓝老师 我只能将js写成这样 不知道思路对不对 红色问好部分怎么写呢? 还烦请多多指导 谢谢! |
||||
-- 作者:有点蓝 -- 发布时间:2019/10/6 22:34:00 -- function setCodes(){ var result= submitAjaxFileds(\'后台计算页面.htm\',\'\',\'日期\',\'凭证种类\',\'借方金额\',\'贷方金额\',false); if(result){ document.getElementById("余额").value =result } } 服务端添加一个页面“后台计算页面.htm” 根据提交的数据查找到当前行,再根据当前行得到上一行的余额: 当前行余额 = 上一行的余额 + submitAjaxFileds提交的借方金额 - submitAjaxFileds提交的贷方金额 然后把余额返回
[此贴子已经被作者于2019/10/6 22:34:22编辑过]
|