Office中国论坛/Access中国论坛

标题: 自定义函数,提取一段数据的前缀 [打印本页]

作者: roger006    时间: 2009-4-18 20:38
标题: 自定义函数,提取一段数据的前缀
现有这样的数据AD090809,ABC090807,ABCD123,AB231111如何提取前面的非数字的字符,结果应为AD,ABC,ABCD,AB
作者: Henry D. Sy    时间: 2009-4-18 20:42
循环判断第一个数字的位子
然后用left函数截取
作者: Henry D. Sy    时间: 2009-4-18 20:58
本帖最后由 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

复制代码

作者: roger006    时间: 2009-4-18 21:05
非常感谢!!!
作者: roger006    时间: 2009-4-18 21:20
这是针对数据表的,那如何根据文本框输入的数据返回非数字的字符??
作者: Henry D. Sy    时间: 2009-4-19 16:47
  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
复制代码

作者: 13555609005    时间: 2009-4-20 23:00
非常感谢




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