设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[其它] 求助!!

[复制链接]
跳转到指定楼层
1#
发表于 2005-5-9 06:20:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我有一个字段(字符型),用来自动将其数字部分加一作为记录编号。格式如“2005-97”、“2005-98”。

用DMAX函数,提取字段中的最大值时,当2005-后面的数字在99以前时一切正常,但到达100后,即字段值有“2005-100”时,DMAX取到最大值仍为“2005-99”,这是为什么?怎样才能让DMAX取到“2005-100”?

谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2005-5-9 06:22:00 | 只看该作者
类似于以下的方法,但问题依旧。

“问:我有一个字段,包含这样的格式:"REC-1", "REC-2", "REC-3" 等. 当新增一条记录时,我如何让这个字段的数字部分自动加1呢(下一条记录应为REC-4)

答:使用Right及DMax函数返回字段“FOO”的数字部分的最大值,然后加1
表达式为:
="REC-" & right(DMax("FOO", "FOOTable"), _
Len(DMax("FOO", "FOOTable")) - _
InStr(1, DMax("FOO", "FOOTable"), "-")) + 1

注意:但如果很多用户或多个程序都使用DMax去实现这个结果的话,特别在一个很大的表中这个过程会很慢,所以建议使用DefaultValue,它仅仅使用DMax一次
程序如下,写在更新事件中
Private Sub SomeField_AfterUpdate()
Dim strMax as string
strMax =DMax("FOO", "FOOTable")
me!HiddenFooCtl = "REC-" & right(strMax, _
len(strMax) - _
Instr(1,strMax, "-")) +1
End Sub
3#
发表于 2005-5-9 17:42:00 | 只看该作者
以下是引用xwm在2005-5-8 22:19:49的发言:


我有一个字段(字符型),用来自动将其数字部分加一作为记录编号。格式如“2005-97”、“2005-98”。

用DMAX函数,提取字段中的最大值时,当2005-后面的数字在99以前时一切正常,但到达100后,即字段值有“2005-100”时,DMAX取到最大值仍为“2005-99”,这是为什么?怎样才能让DMAX取到“2005-100”?

谢谢!

请保证字符长度一样,例如,如果后面最大有三位数,那么99就要写成099
4#
发表于 2005-5-11 22:14:00 | 只看该作者
这是因为字符串比较是从左到右的,2005-100 和2005-99比较 到第6位是一个是1,一个是9,当然就是右边的大了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 22:28 , Processed in 0.089520 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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