设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2931|回复: 10
打印 上一主题 下一主题

[模块/函数] 请教一下,数据有数字改为文本,表达式该如何修改。

[复制链接]
跳转到指定楼层
1#
发表于 2012-4-6 14:45:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位,我想将下面红色的“0”改成带有字母的数据,比如说“E0”,应该如何修改。在字段设置里面"请购单ID”为文本。

Private Sub Form_Open(Cancel As Integer)
    Dim stID As String   
    If IsNull(Me.OpenArgs) Then
        stID = CLng(Nz(DMax("CLng([请购单ID])", "请购单"), 0)) + 1
       Else
        stID = Me.OpenArgs
        End If
   Set mDAOTransForm = New DAOTransForm
    mDAOTransForm.InitForm Me, "Select * From 请购单 Where 请购单ID='" & stID & "'", _
        Me.frmsub, "Select * From 请购单明细 Where 请购单ID='" & stID & "'"   
    If mDAOTransForm.FormDataMode Then
        Me.Caption = "添加请购单"
        Me.请购单ID.DefaultValue = stID
    Else
        Me.Caption = "编辑请购单"
    End If        
    Me.frmsub.Form.请购单ID.DefaultValue = stID
    Me.frmsub.Requery      
End Sub
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2012-4-6 15:57:32 | 只看该作者
传例子
3#
发表于 2012-4-6 16:25:10 | 只看该作者
本帖最后由 aslxt 于 2012-4-6 16:32 编辑

如果字段中不包含非数字的字符这一步应该没有问题:
Nz(DMax("CLng([请购单ID])", "请购单"), “E0”)
但是如果字段中包含非数字的字符,CLng可能就会出问题。
个人觉得:你应该把编号(请购单ID)的规定列举出来,比如说“E0001"开始,到"E0002"...,一直到"E9999",这里第一位的E表示单位或部门或单据类别,总之,只用一位英文字符,后面的4位为顺序号。只有把你的想法说出来,才好解决问题
4#
发表于 2012-4-6 16:40:50 | 只看该作者
貌似用Val([请购单ID])会好些。
5#
发表于 2012-4-6 16:43:50 | 只看该作者
Val对于第一个字符为非数字字符会出现问题,例如“0001A"可以转为1,但是”A0001“就发生错误
6#
 楼主| 发表于 2012-4-6 17:15:39 | 只看该作者
aslxt 发表于 2012-4-6 16:25
如果字段中不包含非数字的字符这一步应该没有问题:
Nz(DMax("CLng([请购单ID])", "请购单"), “E0”)
但 ...



我是想让请购单号中包含字母,比如你说的“E1~E999”一样,我上传了附件,能帮忙解决一下吗?谢谢了!

本帖子中包含更多资源

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

x
7#
发表于 2012-4-6 21:16:22 | 只看该作者
...
Me.请购单ID.DefaultValue = """" & stID & """"
...
Me.frmsub.Form.请购单ID.DefaultValue = """" & stID & """"
...
8#
 楼主| 发表于 2012-4-6 21:43:29 | 只看该作者
aslxt 发表于 2012-4-6 21:16
...
Me.请购单ID.DefaultValue = """" & stID & """"
...

成功了,非常感谢你的热心和耐心,aslxt !
9#
发表于 2012-4-6 21:52:46 | 只看该作者
本帖最后由 aslxt 于 2012-4-6 21:57 编辑

不客气,我不过是在锻炼耐力的同时测试一下表达能力{:soso_e113:}
10#
发表于 2012-4-6 20:35:03 | 只看该作者
本帖最后由 aslxt 于 2012-4-6 20:37 编辑

如果流水号不会超过99的话,可改为下面代码:
...
If IsNull(Me.OpenArgs) Then
        stID = "s" & Format(Right(Nz(DMax("请购单ID", "请购单"), "s00"), 2) + 1, "00")
Else
        stID = Me.OpenArgs
End If
...
如果流水号不会超过9999的话,可改为下面代码:
...
If IsNull(Me.OpenArgs) Then
        stID = "s" & Format(Right(Nz(DMax("请购单ID", "请购单"), "s0000"), 2) + 1, "0000")
Else
        stID = Me.OpenArgs
End If
...

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-25 19:15 , Processed in 0.094290 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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