Foxtable(狐表)用户栏目专家坐堂 → [求助]


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

主题:[求助]

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
[求助]  发帖心情 Post By: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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/10 17:21:00 [只看该作者]

1、你表格对应列的类型是什么?是双精度小数还是整数?

 

2、代码是没有问题,肯定是列类型问题。


 回到顶部
帅哥哟,离线,有人找我吗?
沪上游客
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2018/4/10 17:38:00 [只看该作者]

你好,我的设置的是高精度小数,以前设置了双精度小数出现过误差。后来全部改了。
但是在“工程合同基础数据”表的DataColChanged中设置的以下代码计算是对的,但再次打开时又错了。
e.DataRow("补充或决算增减") = DataTables("补充合同或决算数据").SQLCompute("Sum(本次造价增减)","循环编号 = '" & e.DataRow("循环编号") & "'")
[此贴子已经被作者于2018/4/10 17:46:19编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/10 17:51:00 [只看该作者]

你计算赋值以后,保存了没有?后台数据库那里看到你保存的数据了没有?

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2018/4/10 17:56:00 [只看该作者]

您的意思是SQL数据库列的类型有问题吗?

我查过了SQL数据库该列都整数,怎么回事?

[此贴子已经被作者于2018/4/10 18:14:44编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/10 18:07:00 [只看该作者]

以下是引用沪上游客在2018/4/10 17:56:00的发言:
您的意思是SQL数据库列的类型有问题吗?

 

保存后,数据保存到sql数据库里面了没有?如果正常保存,再打开出问题,说明是代码问题(你打开程序执行的代码有问题)。如果保存也不正常,说明是列类型问题。


 回到顶部
帅哥哟,离线,有人找我吗?
沪上游客
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2018/4/10 18:22:00 [只看该作者]

老师我在修改后数据保存到sql数据库里面了,但实行四舍五入了。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/10 18:28:00 [只看该作者]

以下是引用沪上游客在2018/4/10 18:22:00的发言:
老师我在修改后数据保存到sql数据库里面了,但实行四舍五入了。

 

没看懂你的问题。比如,foxtable里面填入 123.456,保存,在数据库里面存放成什么了?再打开,123.456变成什么了?举例说明


 回到顶部
帅哥哟,离线,有人找我吗?
沪上游客
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By: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  错了

谢谢老师!

 回到顶部