Office中国论坛/Access中国论坛
标题:
如何让同一字段下不同记录的小数位数不一样?
[打印本页]
作者:
allxxy
时间:
2010-11-15 12:29
标题:
如何让同一字段下不同记录的小数位数不一样?
[attach]44113[/attach]
如上图,如何让 原始单价 —> 使用的单价。
通过什么函数控制香蕉单价和橡皮单价的小数位数不一样?有可能实现吗?
作者:
tmtony
时间:
2010-11-15 12:33
数据表 不好实现, 窗体视图可以
或者是数据原本保存在表中(已处理位数),直接显示表中数据
作者:
allxxy
时间:
2010-11-15 13:08
tmtony 发表于 2010-11-15 12:33
数据表 不好实现, 窗体视图可以
或者是数据原本保存在表中(已处理位数),直接显示表中数据
恩,那个表格是我随手画的。那么,在窗体中怎么实现呢?
实际上这些数据都已保存在表中,我设计查询的时候想对这些数据处理一下,但对于不同的记录项,使用的小数位数不能一样,比如单价,有的是2位,有的是1位。 而字段属性只能统一设置小数位数。。。
作者:
aslxt
时间:
2010-11-15 13:51
本帖最后由 aslxt 于 2010-11-15 13:58 编辑
假如说,要根据【控件1】的值来确定【控件2】的小数的位数
Private Sub Form_Current()
If 控件1 = "指定的值" Then
控件2.Format = "Standard"
控件2.DecimalPlaces = 2 '设置控件2的小数为2位
Else
控件2.Format = "Standard"
控件2.DecimalPlaces = 1 '设置控件2的小数为1位
End If
End Sub
作者:
chuang0321
时间:
2010-11-15 15:21
感谢aslxt的分享
作者:
allxxy
时间:
2010-11-15 16:47
回复
aslxt
的帖子
!感谢你的提示,在窗体中是可行的。但在报表中,则无法实现:
If 文本框1="指定的名字" Then
文本框2.Format="Standard"
文本框2.DecimalPlaces=1
Else
文本框2.Format="Standard"
文本框2.DecimalPlaces=2
End If
End Sub
运行结果是,根本不识别“指定的名字”,直接把所有的记录的位数都改了。。。
这是怎么回事?
作者:
aslxt
时间:
2010-11-15 23:05
本帖最后由 aslxt 于 2010-11-15 23:13 编辑
报表我不熟悉,好像得用什么什么formart的的过程
不过提醒一下,如果这个功能用于报表且打印单据,时间长了以后,就会积累误差(单据的汇总,不等于数据库的汇总)!
提供一个思路:
假设报表的数据来源于查询,在查询中用自定义函数解决,肯定可以
作者:
aslxt
时间:
2010-11-15 23:46
例如,在模块中加入如下自定义函数:
Option Compare Database
'****************
'keyval:要查找的字段值
'mval:要改变格式(小数位数)的字段值
'在查询中使用
'*****************
Function mm(ByVal keyval As String, ByVal mval As Double) As Double
Dim str
str = "指定的字符串1|指定的字符串2|指定的字符串3" '罗列要查找的指定的字符串
Select Case InStr(str, keyval) '在指定的字符串中查找传来的keyval
Case Is = 0
'如果不在列表中
'定义他们的格式
mm = Int(mval * 100) / 100
Case Else
'如果在列表中
'定义他们的格式
mm = Int(mval * 10000) / 10000
End Select
End Function
然后在查询中使用:
SELECT 出库.名称, mm([名称],[数量]) AS 表达式1 FROM 出库;
这个查询是从一个叫做出库的表建立的选择查询,如果名称=指定的字符串1、或=指定的字符串2、或=指定的字符串3
数量保留4位小数,否则保留2位小数
再利用这个查询生成报表,就得到你要的结果了
作者:
allxxy
时间:
2010-11-16 12:46
回复
aslxt
的帖子
谢谢你的提示!我先试试
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3