以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助] (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=117319) |
-- 作者:沪上游客 -- 发布时间:2018/4/10 16:57:00 -- [求助] 老师您好! 以下代码是如果在"补充合同或决算数据"表中"本次造价增减"列更改数据后计算"本次造价增减"列的和,并更新"工程合同基础数据"表"补充或决算增减"列的后台数据。 但是执行后,更新的后台数据都是整数(四舍五入),我在帮助里看到了“SQLReplaceFor会返回一个整数,表示合计有多少行的值被替换了”,而我现在不需要知道多少行被修改(本来对应的记录就只有一行数据)。是不是要用SQLupdate 命令 ?象我这种情况应该怎么写代码? 请老师指教,谢谢老师! If e.DataCol.Name = "本次造价增减" Then For Each dr As DataRow In DataTables("补充合同或决算数据").datarows Dim bgzg As Double bgzg = DataTables("补充合同或决算数据").Compute("Sum(本次造价增减)","循环编号 = \'" & dr("循环编号") & "\'") DataTables("工程合同基础数据").SQLReplaceFor("补充或决算增减",bgzg,"循环编号 = \'" & dr("循环编号") & "\'") DataTables("工程合同基础数据").SQLReplaceFor("实际造价","合同价款 + 补充或决算增减","循环编号 = \'" & dr("循环编号") & "\'",True) Next End If |
-- 作者:有点甜 -- 发布时间:2018/4/10 17:21:00 -- 1、你表格对应列的类型是什么?是双精度小数还是整数?
2、代码是没有问题,肯定是列类型问题。 |
-- 作者:沪上游客 -- 发布时间:2018/4/10 17:38:00 -- 你好,我的设置的是高精度小数,以前设置了双精度小数出现过误差。后来全部改了。 但是在“工程合同基础数据”表的DataColChanged中设置的以下代码计算是对的,但再次打开时又错了。 e.DataRow("补充或决算增减") = DataTables("补充合同或决算数据").SQLCompute("Sum(本次造价增减)","循环编号 = \'" & e.DataRow("循环编号") & "\'")
[此贴子已经被作者于2018/4/10 17:46:19编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/4/10 17:51:00 -- 你计算赋值以后,保存了没有?后台数据库那里看到你保存的数据了没有? |
-- 作者:沪上游客 -- 发布时间:2018/4/10 17:56:00 -- 您的意思是SQL数据库列的类型有问题吗? 我查过了SQL数据库该列都整数,怎么回事? [此贴子已经被作者于2018/4/10 18:14:44编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/4/10 18:07:00 -- 以下是引用沪上游客在2018/4/10 17:56:00的发言:
您的意思是SQL数据库列的类型有问题吗?
保存后,数据保存到sql数据库里面了没有?如果正常保存,再打开出问题,说明是代码问题(你打开程序执行的代码有问题)。如果保存也不正常,说明是列类型问题。 |
-- 作者:沪上游客 -- 发布时间:2018/4/10 18:22:00 -- 老师我在修改后数据保存到sql数据库里面了,但实行四舍五入了。 |
-- 作者:有点甜 -- 发布时间:2018/4/10 18:28:00 -- 以下是引用沪上游客在2018/4/10 18:22:00的发言:
老师我在修改后数据保存到sql数据库里面了,但实行四舍五入了。
没看懂你的问题。比如,foxtable里面填入 123.456,保存,在数据库里面存放成什么了?再打开,123.456变成什么了?举例说明 |
-- 作者:沪上游客 -- 发布时间:2018/4/10 18:41:00 -- For Each dr As DataRow In DataTables("补充合同或决算数据").datarows Dim bgzg As Integer bgzg = DataTables("补充合同或决算数据").Compute("Sum(本次造价增减)","循环编号 = \'" & dr("循环编号") & "\'") DataTables("工程合同基础数据").SQLReplaceFor("补充或决算增减",bgzg,"循环编号 = \'" & dr("循环编号") & "\'") DataTables("工程合同基础数据").SQLReplaceFor("实际造价","合同价款 + 补充或决算增减","循环编号 = \'" & dr("循环编号") & "\'",True) Next DataTables("补充合同或决算数据").Save() For Each dr As DataRow In DataTables("支出合同补充或决算").datarows Dim bgzg As Integer bgzg = DataTables("支出合同补充或决算").Compute("Sum(本次增减)","循环编号 = \'" & dr("循环编号") & "\'") DataTables("支出合同基础数据").SQLReplaceFor("补充或决算增减",bgzg,"循环编号 = \'" & dr("循环编号") & "\'") DataTables("支出合同基础数据").SQLReplaceFor("支出合同实际价款","支出合同价款 + 补充或决算增减","循环编号 = \'" & dr("循环编号") & "\'",True) Next DataTables("支出合同补充或决算").Save() 老师找到问题了,我不知道什么时候在AfterSaveProject中设置了上面代码 应该是Dim bgzg As Integer 错了 谢谢老师!
|