Office中国论坛/Access中国论坛

标题: 如何按特定字符获取数据 [打印本页]

作者: kent_73    时间: 2014-8-11 15:48
标题: 如何按特定字符获取数据
请教如何将这个数据(F136708/13/43/63),分成:
第一行:F136708/13
第二行:F136708/43
第三行:F136708/63


编了自定义函数
Function addhb(str As String) As String
Dim x
Dim y(3) As String

'统计"/"出现次数
Dim i As Long
Dim s As Long
s = 0
For i = 1 To Len(str)
    If Mid(str, i, 1) = "/" Then s = s + 1
Next


x = Split(str, "/")
For i = 1 To s
    y(i - 1) = x(0) & "/" & x(i)
    addhb = addhb & y(i - 1) & ","
Next
End Function

只能放在同一字段中:F136708/13,F136708/43,F136708/63


作者: roych    时间: 2014-8-11 16:21
这个需要用ADO来生成的,不能直接用自定义函数进行查询(否则原表几条记录,查询就只能几条记录)。
作者: kent_73    时间: 2014-8-11 16:29
通过自定义函数得到数据的速度感觉会快点
作者: roych    时间: 2014-8-11 16:57
kent_73 发表于 2014-8-11 16:29
通过自定义函数得到数据的速度感觉会快点

如果不想用ADO的话,不妨修改成Insert Values方式来执行追加查询?
作者: roych    时间: 2014-8-11 17:14
本帖最后由 roych 于 2014-8-11 17:17 编辑
  1. Function getData(str As String)
  2. DoCmd.SetWarnings False
  3. Dim x
  4. Dim str1 As String
  5. Dim j() As String
  6. Dim i As Long, k As Long

  7. x = Split(str, "/")

  8. i = UBound(x)
  9. str1 = x(0)

  10. ReDim j(0 To i - 1) As String

  11. For k = 0 To i - 1
  12.     j(k) = str1 & "" & x(k + 1)
  13.     DoCmd.RunSQL "insert into 生成表(数据) values('" & j(k) & "')"
  14. Next
  15. End Function

  16. Sub test()
  17. Call getData("F136708/13/43/63")
  18. End Sub
复制代码

注意,“生成表”必须先存在,再执行。另,由于属于操作查询,因此是不能直接用自定义函数查询来完成,必须通过按钮或者其它子过程来=执行

作者: kent_73    时间: 2014-8-12 09:39
roych 发表于 2014-8-11 17:14
注意,“生成表”必须先存在,再执行。另,由于属于操作查询,因此是不能直接用自定义函数查询来完成,必 ...

好的,谢谢了




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