Foxtable(狐表)用户栏目专家坐堂 → 新年第一问,关于在Datalist中的数值显示!


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

主题:新年第一问,关于在Datalist中的数值显示!

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


加好友 发短信
等级:小狐 帖子:363 积分:2998 威望:0 精华:0 注册:2008/11/11 13:42:00
新年第一问,关于在Datalist中的数值显示!  发帖心情 Post By:2009/1/26 21:00:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:未命名iiiiiiii.jpg
图片点击可在新窗口打开查看

在Datalist是有一个合计金额的表达式列, 为什么有的时候显示正常,有的时候,确会显示很多位小数呢,而且值也不对啊?

另外,在Datalist中调整列位置以后如何保存呢,还有如何使用列表视图呢? 谢谢!

附名列类型表:


图片点击可在新窗口打开查看此主题相关图片如下:未命名iiiiiiii.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2009-1-26 21:11:16编辑过]

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2009/1/28 9:15:00 [只看该作者]

原因很简单:

   在输入数据前,要将列属性的小数位数指定,比如说两位小数,包括表达式列涉及的所有列(订单数量、单价、合计金额)在帮助中有说明:列属性的小数位数设置要在输入数据之前设置,因为设置该属性之前已经输入的数据的值不会改变(比如,指定为两位小数属性之前输入了数据2.34412345,修改后显示为2.34,实际值还是2.34412345,如果是先设置为两位小数,再输入数据2.34412345,其显示值和实际值均为2.34),因为狐表系统列属性设置一般都在设计过程中,不会对开发完成的用户造成任何影响,因为您提交给用户的系统应该是一个没有任何数据的系统,作为数据库管理软件的应用,注意一下即可!

 您的那一行数据因为微软的浮点运算错误造成,其中一个或两个的实际值并非整数,可能是一个循环小数,指定完列属性的小数位数,再重新输入即可!
[此贴子已经被作者于2009-1-28 9:19:09编辑过]

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/1/28 14:17:00 [只看该作者]

如何实现四舍五入


表达式并没有提供传统的四舍五入函数Round,我们只能用Convert函数来间接实现。

例如金额列原来的计算公式为:

[数量] * [单价] * (1 - [折扣])

为了保留两位小数,可以将公式改为:

Convert([数量] * [单价] * (1 - [折扣]) * 100, 'System.Int64') / 100

原理很简单:将计算结果乘以100,然后取整,最后除以100。

如果你要保留三位小数,将表达式中的100改为1000即可,其余类推。

视图我还不知道好方法,不过现在可以这样解决一下。

Tables("表A").OpenView("a")
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
dst.DataTable = DataTables("表A")
dst.Build()


 回到顶部