设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: wang1950317
打印 上一主题 下一主题

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

[复制链接]

点击这里给我发消息

21#
 楼主| 发表于 2006-5-16 19:20:00 | 只看该作者
谢谢sgrshh29老师,那么怎样解决呢?请会做的老师们指教。
22#
发表于 2006-5-16 22:34:00 | 只看该作者
供参考:

本帖子中包含更多资源

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

x

点击这里给我发消息

23#
 楼主| 发表于 2006-5-17 00:38:00 | 只看该作者
谢谢sgrshh29老师。非常好。实际上这项功能是用在报表上并且隐藏的。不知把那个命令按钮中的代码放在报表"打开"事件中号不好用,我再慢慢按照您的上传文件试试吧。另外,重复的记录只显示一条不知是否有办法解决?谢谢,谢谢!
24#
发表于 2006-5-17 04:30:00 | 只看该作者
什么叫做"重复的记录只显示一条"?不太明白.

点击这里给我发消息

25#
 楼主| 发表于 2006-5-17 06:24:00 | 只看该作者
如 :

编号      姓名      地址

A001      张三        。。。

A002      李四  

B005      张三

c001      王五

截取“姓名”一列为:  张三  李四  张三   王五

其中张三为重复,要求所有行中重复的字符串只出现一次,结果最好为:张三   李四  王五

谢谢!
26#
发表于 2006-5-17 06:33:00 | 只看该作者

本帖子中包含更多资源

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

x
27#
发表于 2006-5-17 06:58:00 | 只看该作者
删除List1行来源,使用以下代码即可:
Private Sub List1_AfterUpdate()
Dim d As Recordset
Dim strSQL As String
Dim strName As String

Me.RecordSource = " SELECT * FROM 表1 WHERE (((表1.编号)=[Forms]![窗体]![List1]));"
Me.child1.Form.RecordSource = "SELECT * FROM 结果1 WHERE (((IsNull(结果1.结果))=False)); "
Me.Requery

strSQL = "SELECT DISTINCT * FROM 表1 "
strSQL = strSQL & "WHERE 编号='" & Me.List1 & "';"

    Set d = CurrentDb.OpenRecordset(strSQL)
    If Not d.EOF Then
        d.MoveFirst
        
        Do While Not d.EOF
            strName = strName & d("姓名") & ","
            d.MoveNext
        Loop
        
        Me.Text8 = Left(strName, Len(strName) - 1)
    End If

d.Close

End Sub


[此贴子已经被作者于2006-5-16 23:01:39编辑过]

点击这里给我发消息

28#
 楼主| 发表于 2006-5-17 18:41:00 | 只看该作者
多次得到过两位版主的热心指教,感激不尽!现在将实验结果向两位老师汇报:

情版主的方法使用很好,可以用于多个窗体指定截取不同的表(如在窗体1的一个文本框中截取表1中的一列,在窗体2中的文本框中截取表5中的一列,直接输入allname("",""))而且在报表中使用是一样的,但是对于截取有变量的查询表(查询1)重复值只保留一个还没能达到。期待情版主有空闲再指教!

fan0217版主的方法小的还没有弄懂,按照代码的意思把它放在List1更新后事件中,单击List1中的编号出现错误提示:

运行时错误 '-2147352567   (80020009)':您不能将数值指定给这个对象        按调试后转到代码:

Me.Text8 = Left(strName, Len(strName) - 1)    (Text8是控件来源为=allname("表1")的文本框)

请fan0217版主再指教!

[此贴子已经被作者于2006-5-17 14:10:25编辑过]

29#
发表于 2006-5-18 02:32:00 | 只看该作者




Function allname(tblName As String, fieldname As String, Optional criteria As String = "")
    Dim d As Recordset
    Dim sqlstr As String
    Dim cristr As String
    If criteria = "" Then
        cristr = ""
    Else
        cristr = " where " & criteria
    End If
    sqlstr = "select " & fieldname & " from " & tblName & cristr & " GROUP BY " & fieldname
    Set d = CurrentDb.OpenRecordset(sqlstr)
    If Not d.EOF Then
    d.MoveFirst
   
    Do While Not d.EOF
        allname = allname & "," & d(0)
        d.MoveNext
    Loop
    End If
End Function

[此贴子已经被作者于2006-5-17 18:33:32编辑过]

本帖子中包含更多资源

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

x
30#
发表于 2006-5-18 04:27:00 | 只看该作者
删除List1行来源
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-10 14:43 , Processed in 0.107123 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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