设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1950|回复: 8
打印 上一主题 下一主题

[模块/函数] 如何让同一字段下不同记录的小数位数不一样?

[复制链接]
跳转到指定楼层
1#
发表于 2010-11-15 12:29:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


如上图,如何让 原始单价 —> 使用的单价。

通过什么函数控制香蕉单价和橡皮单价的小数位数不一样?有可能实现吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2010-11-15 12:33:30 | 只看该作者
数据表 不好实现, 窗体视图可以
或者是数据原本保存在表中(已处理位数),直接显示表中数据
3#
 楼主| 发表于 2010-11-15 13:08:17 | 只看该作者
tmtony 发表于 2010-11-15 12:33
数据表 不好实现, 窗体视图可以
或者是数据原本保存在表中(已处理位数),直接显示表中数据

恩,那个表格是我随手画的。那么,在窗体中怎么实现呢?
实际上这些数据都已保存在表中,我设计查询的时候想对这些数据处理一下,但对于不同的记录项,使用的小数位数不能一样,比如单价,有的是2位,有的是1位。 而字段属性只能统一设置小数位数。。。
4#
发表于 2010-11-15 13:51:35 | 只看该作者
本帖最后由 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
5#
发表于 2010-11-15 15:21:43 | 只看该作者
感谢aslxt的分享
6#
 楼主| 发表于 2010-11-15 16:47:02 | 只看该作者
回复 aslxt 的帖子

!感谢你的提示,在窗体中是可行的。但在报表中,则无法实现:

If 文本框1="指定的名字" Then
文本框2.Format="Standard"
文本框2.DecimalPlaces=1
Else
文本框2.Format="Standard"
文本框2.DecimalPlaces=2
End If
End Sub

运行结果是,根本不识别“指定的名字”,直接把所有的记录的位数都改了。。。
这是怎么回事?
7#
发表于 2010-11-15 23:05:14 | 只看该作者
本帖最后由 aslxt 于 2010-11-15 23:13 编辑

报表我不熟悉,好像得用什么什么formart的的过程
不过提醒一下,如果这个功能用于报表且打印单据,时间长了以后,就会积累误差(单据的汇总,不等于数据库的汇总)!
提供一个思路:
假设报表的数据来源于查询,在查询中用自定义函数解决,肯定可以
8#
发表于 2010-11-15 23:46:08 | 只看该作者
例如,在模块中加入如下自定义函数:
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位小数
再利用这个查询生成报表,就得到你要的结果了
9#
 楼主| 发表于 2010-11-16 12:46:28 | 只看该作者
回复 aslxt 的帖子

谢谢你的提示!我先试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-14 15:33 , Processed in 0.117793 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表