Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共7 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:请教老师流水负数转换错误原因

1楼
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

导入后提示

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

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

但关闭窗体后,重新打开,格式转换功能又全部实现了,怎么写才能让它不提错误
2楼
洮沙 发表于: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编辑过]
3楼
有点蓝 发表于:2025/3/24 13:49:00
1、出错的事件代码是下面这个,不是datacolchanged

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

2、这种代码放到datacolchanged也不合理
4楼
wakai 发表于:2025/3/24 14:44:00
取消掉冒号也不行,谢谢了
5楼
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
6楼
有点蓝 发表于: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
7楼
wakai 发表于:2025/3/24 15:09:00
可以了,谢谢蓝老师图片点击可在新窗口打开查看
共7 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 2 queries.