以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请教老师流水负数转换错误原因 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=196023) |
-- 作者:wakai -- 发布时间:2025/3/23 23:27:00 -- 请教老师流水负数转换错误原因 因流水收入和支出在一个列中,正数收入放在借方金额,要把负数金额转换到贷方一列去,列类型为单精度小数,从下载的流水xls上导入 在DataColChanged写如下代码 For Each r As Row In Tables("日记帐_日记帐明细").rows If r("日记账明细借方金额") < "0" Then r("日记账明细贷方金额")= math.abs(r("日记账明细借方金额")) r("日记账明细借方金额") = Nothing End If Next 导入后提示 但关闭窗体后,重新打开,格式转换功能又全部实现了,怎么写才能让它不提错误
|
-- 作者:洮沙 -- 发布时间:2025/3/24 13:38:00 -- For Each r As Row In Tables("日记帐_日记帐明细").rows If r("日记账明细借方金额") < 0 Then r("日记账明细贷方金额")= math.abs(r("日记账明细借方金额")) r("日记账明细借方金额") = Nothing End If Next 看一下是否可行? 另外财务数据建议用高精度数据类型好一些。
[此贴子已经被作者于2025/3/24 13:42:23编辑过]
|
-- 作者:有点蓝 -- 发布时间:2025/3/24 13:49:00 -- 1、出错的事件代码是下面这个,不是datacolchanged 2、这种代码放到datacolchanged也不合理
|
-- 作者:wakai -- 发布时间:2025/3/24 14:44:00 -- 取消掉冒号也不行,谢谢了 |
-- 作者:wakai -- 发布时间:2025/3/24 14:45:00 -- 蓝老师,按钮代码是这样的,那代码放到哪里好 Dim c As WinForm.ComboBox = e.Form.Controls("会计期间") Dim d As WinForm.DropDownBox = e.Form.Controls("银行账号名称") If c.Value=Nothing Then MessageBox.Show("请输入会计期间!") Return Else If d.Value=Nothing Then MessageBox.Show("请选择银行帐号名称!") Return Else Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter = "Excel文件|*.xlsx;*.xls;*.csv" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim Cols1() As Integer = {0,6,6,7,7,3,2,11} \'execl列索引从0开始 Dim Cols2() As String = {"单据头业务日期", "日记账明细借方金额", "单据头借方金额","日记账明细贷方金额","单据头贷方金额", "日记账明细对方银行账号","日记账明细对方账户名称","日记账明细摘要"} Dim Book As New XLS.Book(dlg.FileName) Dim Sheet As XLS.Sheet = Book.Sheets(0) Tables("日记帐_日记帐明细").StopRedraw() \'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题 For n As Integer = 1 To Sheet.Rows.Count - 1 Dim bh As String = sheet(n, 0).Text Dim r As Row = Tables("日记帐_日记帐明细").AddNew() For m As Integer = 0 To Cols1.Length - 1 r(Cols2(m)) = Sheet(n, Cols1(m)).Value Next Next Tables("日记帐_日记帐明细").ResumeRedraw() End If End If
|
-- 作者:有点蓝 -- 发布时间:2025/3/24 15:01:00 -- 应该是表格有空值,判断一下 For m As Integer = 0 To Cols1.Length - 1 if Sheet(n, Cols1(m)).text > "" r(Cols2(m)) = Sheet(n, Cols1(m)).Value end if Next |
-- 作者:wakai -- 发布时间:2025/3/24 15:09:00 -- 可以了,谢谢蓝老师 ![]() |