设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12345下一页
返回列表 发新帖
查看: 5665|回复: 41
打印 上一主题 下一主题

[其它] [求助]有没有能提取表中一列的字符罗列在一个文本框中的函数?

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2006-5-13 07:50:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位老师,有一个表:

姓名               第二列            第三列。。。。。

张三             XXXXXX       XXXX

李四

王五

周七

能否把[姓名]一列全部截取,并罗列在在报表或窗体的一个文本框中:

文本框:张三 李四 王五 周七

谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-5-13 08:18:00 | 只看该作者
  循环一下就出来了

本帖子中包含更多资源

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

x

点击这里给我发消息

3#
 楼主| 发表于 2006-5-13 18:14:00 | 只看该作者

继续求教!

谢谢情比金坚老师,代码非常管用。但是还有一个问题,它好像针对一个表1 的,如果有多个不同名称的表(各表中均有[姓名]一列),在不同的窗体中都有一个文本框来截取不同表中[姓名]一列,是不是要各写一段代码?抑或可以写一个通用代码?请情比金坚老师继续指点!谢谢!

本帖子中包含更多资源

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

x
4#
发表于 2006-5-13 18:28:00 | 只看该作者
以下是引用wang1950317在2006-5-13 10:14:00的发言:


谢谢情比金坚老师,代码非常管用。但是还有一个问题,它好像针对一个表1 的,如果有多个不同名称的表(各表中均有[姓名]一列),在不同的窗体中都有一个文本框来截取不同表中[姓名]一列,是不是要各写一段代码?抑或可以写一个通用代码?请情比金坚老师继续指点!谢谢!





把代码中的表名提取出来作为一个参数。

点击这里给我发消息

5#
 楼主| 发表于 2006-5-13 19:12:00 | 只看该作者
谢谢总版主老师的指点,您不知道小的对代码有多菜,还望您稍加改动,小的弄了半天也不得要领。还有假如表中要截取一列中有重复的(有时必须有重复内容),在文本框中不显示重复内容,只显示一次就可以了,是不是也在代码中设定,还是在文本框中设定。谢谢!谢谢!

Function allname()
    Dim d As Recordset
    Set d = CurrentDb.OpenRecordset("表1")
    d.MoveFirst
    Do While Not d.EOF
        allname = allname & "," & d(1)
        d.MoveNext
    Loop

End Function




[此贴子已经被作者于2006-5-13 11:32:51编辑过]

6#
发表于 2006-5-13 19:43:00 | 只看该作者
以下是引用wang1950317在2006-5-13 11:12:00的发言:


谢谢总版主老师的指点,您不知道小的对代码有多菜,还望您稍加改动,小的弄了半天也不得要领。还有假如表中要截取一列中有重复的(有时必须有重复内容),在文本框中不显示重复内容,只显示一次就可以了,是不是也在代码中设定,还是在文本框中设定。谢谢!谢谢!

Function allname()
    Dim d As Recordset
    Set d = CurrentDb.OpenRecordset("表1")
    d.MoveFirst
    Do While Not d.EOF
        allname = allname & "," & d(1)
        d.MoveNext
    Loop

End Function





Function allname(tblName as String)
    Dim d As Recordset
    Set d = CurrentDb.OpenRecordset(tblName)
    d.MoveFirst
    Do While Not d.EOF
        allname = allname & "," & d(1)
        d.MoveNext
    Loop
End Function
7#
发表于 2006-5-13 19:54:00 | 只看该作者
以下是引用LucasLynn在2006-5-13 11:43:00的发言:








Function allname(tblName as String)
    Dim d As Recordset
    Set d = CurrentDb.OpenRecordset(tblName)
    d.MoveFirst
    Do While Not d.EOF
        allname = allname & "," & d(1)
        d.MoveNext
    Loop
End Function

现在我比较习惯地在d.movefirst之前加句 if not d.eof then  , 以防止不必要的空数据集出错

点击这里给我发消息

8#
 楼主| 发表于 2006-5-13 20:15:00 | 只看该作者
楼上诸位老师都是"大家"啊!非常好!但是怎样解决重复的字符只显示一次呢?

姓名      xxx      cccc

张三

李四

张三

王五

显示:张三  李四  王五   (张三不管重复多少,只显示一次
9#
发表于 2006-5-13 20:45:00 | 只看该作者
方法一:

    Do While Not d.EOF

if instr(allname,d(1))>0 then goto ww:
        allname = allname & "," & d(1)
        d.MoveNext

ww:
    Loop


方法二:先建立一个联合查询(用union而不是union all来联合)然后再用如上循环代码来读取。

[此贴子已经被作者于2006-5-13 12:46:28编辑过]

点击这里给我发消息

10#
 楼主| 发表于 2006-5-13 23:59:00 | 只看该作者
hi-wzj版主您好,是这样子吗,没有响应啊。我的嫁接错在哪里?

Function allname(tblName As String)
    Dim d As Recordset
    Set d = CurrentDb.OpenRecordset(tblName)
    d.MoveFirst

Do While Not d.EOF

If InStr(allname, d(1)) > 0 Then GoTo ww:
        allname = allname & "," & d(1)
        d.MoveNext

ww:
    Loop
End Function


您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-10 07:15 , Processed in 0.158876 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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