Foxtable(狐表)用户栏目专家坐堂 → 请教老师流水负数转换错误原因


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

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

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


加好友 发短信
等级:小狐 帖子:377 积分:3682 威望:0 精华:0 注册:2016/5/25 21:31:00
请教老师流水负数转换错误原因  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:7264 威望:0 精华:0 注册:2017/8/31 12:07:00
  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:113015 积分:575474 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/3/24 13:49:00 [只看该作者]

1、出错的事件代码是下面这个,不是datacolchanged

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

2、这种代码放到datacolchanged也不合理

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


加好友 发短信
等级:小狐 帖子:377 积分:3682 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By:2025/3/24 14:44:00 [只看该作者]

取消掉冒号也不行,谢谢了

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


加好友 发短信
等级:小狐 帖子:377 积分:3682 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:113015 积分:575474 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:377 积分:3682 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By:2025/3/24 15:09:00 [只看该作者]

可以了,谢谢蓝老师图片点击可在新窗口打开查看

 回到顶部