以文本方式查看主题 - 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、不正常退出的时候发生的话,那正常退出的时候,你执行了哪些代码?是否没有执行那些代码导致的? |