有关Access数据库问题,请高手赐教。

tttk 2000-09-05 07:33:00
我曾经用VB+Access97做过一个工资管理程序,近期发现一个问题,却苦于找不出思路。

问题如下:数据库的工资字段全部采用“货币”类型,并保留两位小数。近来需要对公积金进行调整,计算公式是“合计*0.7”,我使用DAO中的Database.execute Update tbname set 公积金=合计*0.7后,会计部门经过核对后发现少了2分钱。我费尽心机,终于发现此时的公积金字段实际存储值已全部变成了4位小数,而显示出来的却仍然是两位。我不禁义愤填膺。原来再进行字段计算时,使用的全部是字段中的实际数值,难怪出现2分钱的偏差。

那么,请高手指教,像这种情况我该怎么处理?我想达到的效果是,经过计算后的数值仍然自动转变为两位小数,而不是4位。
...全文
187 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
baalcat 2000-09-06
  • 打赏
  • 举报
回复
不如把工资字段保存为文本型,计算和写入时转换一下,这样可以很精确的保留想要的位数,计算
时也不会有四舍五入的问题。现在的话可以用format$(format(公积金,"0.00"))转成string,一定是两位,只用format(公积金,"0.00")的话似乎只是显示是2位,数据库中还是4位,(以前
用access2.0就是这样)
tttk 2000-09-06
  • 打赏
  • 举报
回复
我还想请问,为什么不能使用Round()函数呢?
无言无忌 2000-09-05
  • 打赏
  • 举报
回复
货币数据类型支持小数点右面 4 位和小数点左面 15 位;它是一个精确的定点数据类型,适用于货币计算,所有的货币型数据存储时都会保留4位小数
xiecy 2000-09-05
  • 打赏
  • 举报
回复
set 公积金=INT(合计*70)/100可
aihuiwu 2000-09-05
  • 打赏
  • 举报
回复
TTTK朋友:
你可以对SET公积金=合计*0.7进行处行以达到目的:
set 公积金=format(合计*0.7,"#0.00")

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧