设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[查询] 如何按特定字符获取数据

[复制链接]
跳转到指定楼层
1#
发表于 2014-8-11 15:48:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教如何将这个数据(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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2014-8-11 16:21:16 | 只看该作者
这个需要用ADO来生成的,不能直接用自定义函数进行查询(否则原表几条记录,查询就只能几条记录)。
3#
 楼主| 发表于 2014-8-11 16:29:59 | 只看该作者
通过自定义函数得到数据的速度感觉会快点
4#
发表于 2014-8-11 16:57:39 | 只看该作者
kent_73 发表于 2014-8-11 16:29
通过自定义函数得到数据的速度感觉会快点

如果不想用ADO的话,不妨修改成Insert Values方式来执行追加查询?
5#
发表于 2014-8-11 17:14:50 | 只看该作者
本帖最后由 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
复制代码

注意,“生成表”必须先存在,再执行。另,由于属于操作查询,因此是不能直接用自定义函数查询来完成,必须通过按钮或者其它子过程来=执行
6#
 楼主| 发表于 2014-8-12 09:39:00 | 只看该作者
roych 发表于 2014-8-11 17:14
注意,“生成表”必须先存在,再执行。另,由于属于操作查询,因此是不能直接用自定义函数查询来完成,必 ...

好的,谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 16:40 , Processed in 0.074538 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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