以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  算术运算导致溢出  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=119256)

--  作者:tongke
--  发布时间:2018/5/21 16:32:00
--  算术运算导致溢出
Dim shenling As WinForm.NumericComboBox = e.Form.Controls("NumericComboBox1")\'申领数量
Dim slsl As Double \'申领数量
slsl = Round2((shenling.Value),2)
Dim rnew As DataRow
rnew = DataTables("填写料单").AddNew()
rnew("in_number") = slsl
rnew("k_number") = slsl
rnew.Save()

执行后,后台数据库的in_number、k_number字段都变成了4.70202E17,再打开程序调用这个表时就提示“算术运算导致溢出"

--  作者:有点甜
--  发布时间:2018/5/21 16:36:00
--  

你贴出的代码没问题。肯定是其它代码影响的。

 

贴出你datacolchanged、beforeSaveDatarow等表事件代码。或者删除那些表事件代码测试。

 

不然,请做一个实例发上来。


--  作者:tongke
--  发布时间:2018/5/21 17:00:00
--  
Dim shenling As WinForm.NumericComboBox = e.Form.Controls("NumericComboBox1")\'申领数量
Dim yl As WinForm.Label = e.Form.Controls("lb_ylsl") \'已领标签
Dim jhsl,ylsl,slsl,slheji As Double \'计划数量,已领数量,申领数量,已领申领合计
slsl = Round2((shenling.Value),2)
\'MessageBox.Show(slsl)
If slsl = 0 Then
    MessageBox.Show("申领数量不能为零!")
    e.Form.Controls("NumericComboBox1").Select()
    Return
End If
jhsl = round2(Tables("计划审批").Current("k_quantity"),2)
ylsl = round2(Tables("计划审批").Current("Using_Number"),2)
slheji = Round2((ylsl + slsl),2)

If slheji > jhsl Then
    MessageBox.Show("计划数量不足,请修改申领数量!")
    Return
Else
    Tables("计划审批").Current("Using_Number") = slheji
    Tables("计划审批").Current.Save()
    \'调整显示数量
    yl.Text = slheji
    shenling.Value = Round2((jhsl - ylsl - slsl),2)
    Dim rnew As DataRow
    rnew = DataTables("填写料单").AddNew()
    rnew("code") = Tables("计划审批").Current("code")
    rnew("plan_time") = Tables("计划审批").Current("Plan_time")
    \'填写料单时间
    Dim d As Date
    Dim dy,dm As Integer
    d = Functions.Execute("获取SQLServer服务器时间",_sjy)
    dy = d.Year
    dm = d.Month
    rnew("fillin_time") = d
    rnew("in_number") = slsl
    rnew("price") = Tables("计划审批").Current("price")
    rnew("in_person") = Vars("vtruename")
    rnew("in_use") = ""
    rnew("Sources_of_funding") = Tables("计划审批").Current("Sources_of_funding")
    rnew("in_year") = dy
    rnew("in_month") = dm
    rnew("wgzx_number") = slsl
    rnew("k_number") = slsl
    rnew("Area_Quantity") = slsl
    rnew("accounting_number") = slsl
    rnew("Unit") = Tables("计划审批").Current("Unit")
    rnew("Area") = Tables("计划审批").Current("area")
    rnew("Department") = Tables("计划审批").Current("department")
    rnew("name") = Tables("计划审批").Current("name")
    rnew("check_number") = slsl
    rnew("Primary_key") = Tables("计划审批").Current("Primary_key")
    rnew("Specification") = Tables("计划审批").Current("Specification")
    rnew("Model") = Tables("计划审批").Current("Model")
    rnew("Department_Name") = Tables("计划审批").Current("Department_Name")
    rnew("Supplier") = Tables("计划审批").Current("Provider")
    rnew("plan_serial_number") = Tables("计划审批").Current("serial_number")
    rnew("print_number") = 0
    rnew("Area_Approval") = "未审核"
    rnew("wgzx_approval") = "未审核"
    rnew("k_approval") = "未审核"
    rnew("accounting_operator") = "未记账"
    \'自动编号
    rnew("Order_Number") = Functions.Execute("自动获取料单最大编号",dy,dm)
    rnew.Save()
    Tables("填写料单").Position = Tables("填写料单").Rows.Count - 1
End If


所有代码都在这里,这是窗口里面一个Button的Click代码,没有datacolchanged、beforeSaveDatarow事件。

--  作者:tongke
--  发布时间:2018/5/21 17:04:00
--  
用户反映是在没有正常退出系统情况下重启电脑出现的问题
--  作者:有点甜
--  发布时间:2018/5/21 17:08:00
--  

1、你自己测试有没有问题?msgbox弹出一下你的值看是否正确?能否重现错误?

 

msgbox(slsl)

 

2、不正常退出的时候发生的话,那正常退出的时候,你执行了哪些代码?是否没有执行那些代码导致的?