Office中国论坛/Access中国论坛

标题: [求助]怎样截取字符串中不确定字符? [打印本页]

作者: wang1950317    时间: 2006-4-10 18:50
标题: [求助]怎样截取字符串中不确定字符?
各位老师,有像如下编号: A20060315-01-02-003-001      wh20060317-02-05-132        质检20060322-01-15-012-2        现在要截取  A2006    wh2006    质检2006            同时,还要截取第 3 个 "-" 后面的三位数,最后组成  A2006003      wh2006132       质检2006012   该用什么样的方法?(年月前面的字符数不定,第三个“-”后面三位数固定,再往后的字符数不定),谢谢!




作者: fan0217    时间: 2006-4-10 18:54
可以,需要自定义函数才可以的.
作者: wang1950317    时间: 2006-4-10 19:45
fan0217老师继续指点!小的对编码不通!谢谢!
作者: fan0217    时间: 2006-4-10 21:42
'===============================================================================
'-函数名称:         MySplit
'-功能描述:         拆分字符串,获得指定格式
'-输入参数说明:     参数1:strMyStr As String 要拆分的字符串
'-返回参数说明:     拆分:质检20060322-01-15-012-2 将获得:质检2006012
'-使用语法示例:     MsgBox MySplit("质检20060322-01-15-012-2")
'-参考:
'-使用注意:
'-兼容性:           97,2000,XP,2003
'-作者:             fan0217 fan0217@163.com
'-更新日期:        2006-04-10
'===============================================================================
Function MySplit(strMyStr As String) As String
Dim strTemp As String

strTemp = Split(strMyStr, "-", -1)(0)
MySplit = Left(strTemp, Len(strTemp) - 4)

MySplit = MySplit & Split(strMyStr, "-", -1)(3)

End Function

作者: wang1950317    时间: 2006-4-10 22:18
fan0217版主真是诲人不倦哪!已多次得到您的帮助了,真是不好意思基础太差至今没有多大长进。谢谢您!
作者: wang1950317    时间: 2006-4-11 19:07
标题: 自定义函数运行问题
fan0217版主,还有点问题需要请教:窗体中有一个组合框[样品编号],一个文本框[报告书号] 我在[样品编号]“更新后”事件中调用您的自定义函数:

Private Sub 样品编号_AfterUpdate()
Me.报告书号 = MySplit([样品编号])
End Sub

出现提示:运行是错误‘9’:

           下标越界

按提示框中的调试模块中这段码是黄色的:

MySplit = MySplit & Split(strMyStr, "-", -1)(3)  不知该怎样解决?谢谢!




[attach]17040[/attach]

作者: 青青    时间: 2006-4-11 19:53
表设计时将编号分字段来存数据,需要时合并字段,因为合并比拆分容易。象国外的将姓和名都分开存储的,便于快速检索。
作者: fan0217    时间: 2006-4-11 20:33
函数MySplit(strMyStr As String) 中的strMyStr必须是符合"质检20060322-01-15-012-2"这样的格式才行.

在上述函数中没有加入错误处理.你可以自己加入.
作者: wang1950317    时间: 2006-4-11 23:01
青青小妹的指点不无道理,但一个编号要分成数部分输入的话稍嫌麻烦,本来拆分字符串的目的就是为了简便,使[报告书号]自动合成。 按照fan0217版主的意见加入了错误的处理,前面的出错的话没有了,但“下标越界”的提示仍然出现。  分析原因还是我的组合框下拉单选项问题(不选下拉单选项而直接输入没有问题)。所以不在[样品编号]“更新后”事件中完成,改在“失去焦点”事件中完成,这样在输入完整个样品编号退出后才执行,也就没有了上述问题了。谢谢版主,这个问题又很好地解决了!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3