设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[模块/函数] 自定义函数,提取一段数据的前缀

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-18 20:38:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现有这样的数据AD090809,ABC090807,ABCD123,AB231111如何提取前面的非数字的字符,结果应为AD,ABC,ABCD,AB

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖1 订阅订阅
2#
发表于 2009-4-18 20:42:56 | 只看该作者
循环判断第一个数字的位子
然后用left函数截取
3#
发表于 2009-4-18 20:58:50 | 只看该作者
本帖最后由 Henry D. Sy 于 2009-4-18 21:01 编辑
  1. Public Function gStr(ByVal strTblName As String, _
  2.                      ByVal strFldName As String, _
  3.                      OldStr As String) As String
  4.     Dim rs As New ADODB.Recordset
  5.     Dim i As Integer
  6.     Dim tempStr As String
  7.     Dim strSQL As String
  8.     strSQL = "select * from " & strTblName & " where " & strFldName _
  9.            & "='" & OldStr & "'"
  10.     With rs
  11.         .Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
  12.         For i = 1 To Len(.Fields(strFldName))
  13.             tempStr = Mid(.Fields(strFldName), i, 1)
  14.             If IsNumeric(tempStr) Then
  15.                 gStr = Left(.Fields(strFldName), i - 1)
  16.                 Exit For
  17.             End If
  18.         Next
  19.         .Close
  20.     End With
  21.     Set rs = Nothing
  22. End Function

复制代码

本帖子中包含更多资源

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

x
4#
 楼主| 发表于 2009-4-18 21:05:41 | 只看该作者
非常感谢!!!
5#
 楼主| 发表于 2009-4-18 21:20:26 | 只看该作者
这是针对数据表的,那如何根据文本框输入的数据返回非数字的字符??
6#
发表于 2009-4-19 16:47:55 | 只看该作者
  1. Public Function gStr(OldStr As String) As String
  2.     Dim tempStr As String
  3.     Dim i As Integer
  4.     For i = 1 To Len(OldStr)
  5.         tempStr = Mid(OldStr, i, 1)
  6.         If IsNumeric(tempStr) Then
  7.             gStr = Left(OldStr, i - 1)
  8.             Exit For
  9.         End If
  10.     Next
  11. End Function
复制代码


查询中直接调用
  1. SELECT 表1.Oldstr, gStr([Oldstr]) AS NewStr
  2. FROM 表1;
复制代码


窗体中,可以这样使用

  1. Private Sub Text0_AfterUpdate()
  2.     Me.Text0 = gStr(Me.Text0)
  3. End Sub
复制代码

本帖子中包含更多资源

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

x
7#
发表于 2009-4-20 23:00:35 | 只看该作者
非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 12:01 , Processed in 0.099250 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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