Office中国论坛/Access中国论坛

标题: 请问:在查询中如何实现字段值的拆分? [打印本页]

作者: aslxt    时间: 2010-9-15 16:36
标题: 请问:在查询中如何实现字段值的拆分?
本帖最后由 aslxt 于 2010-9-15 16:39 编辑

比如说,表1的数据是这样的:
id(自动编号)   部门          员工
1                        销售部       张三|李四|王五
2                        采购部       赵二|钱一
... ...
等等,其中员工的字段是多个姓名,用“|”分隔符连接的文本,想通过自定义函数直接查询得到以下结果:
部门      员工
销售部  张三
销售部  李四
销售部  王五
采购部  赵二
采购部  钱一
... ...
请问如何做这个自定义函数?

作者: tmtony    时间: 2010-9-15 22:41
要用代码来拆分. 主要使用到的是split函数 用 | 作为参数
可搜索本论坛中已有的实例
作者: todaynew    时间: 2010-9-16 13:36
本帖最后由 todaynew 于 2010-9-16 13:37 编辑

Function P()
Dim rs1 As New adodb.Recordset
Dim rs2 As New adodb.Recordset
Dim A
Dim i As Long, j As Long
rs1.Open "表1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rs2.Open "表1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
For i = 1 To rs1.RecordCount
        A = Split(rs1("员工").Value, "|")
        For j = 0 To UBound(A, 1)
              rs2.AddNew
              rs2("部门").Value = rs1("部门").Value
              rs2("员工").Value = A(j)
              rs2.Update
        Next
        rs1.Delete
        rs1.Update
        rs1.MoveNext
Next
rs1.Close
rs2.Close
End Function
作者: 157008880    时间: 2010-9-16 16:04
以上高手能不能以这个做个小小的实例发上来,让我们学习学习?????????
作者: aslxt    时间: 2010-9-16 23:06
本帖最后由 aslxt 于 2010-9-16 23:31 编辑

回复 todaynew 的帖子

感谢版主的回复,但是:
不是我要的,你的代码修改了原表,当然可以把拆分后的数据放在一个临时表中,就可以不破坏原表了,
我想要的是,建立一个查询,运行查询的时候,得到我要的结果,就像附件中的“联合查询”那样,是否可以实现   
作者: todaynew    时间: 2010-9-17 08:19
回复

感谢版主的回复,但是:
不是我要的,你的代码修改了原表,当然可以把拆分后的数据放在一个临时表 ...
aslxt 发表于 2010-9-16 23:06

搞成联合查询倒是可以,就是不知道效率怎么样。我试试。


作者: todaynew    时间: 2010-9-17 17:19
[attach]43508[/attach]
作者: ZHENGLIAN    时间: 2010-9-17 17:31
不是一般的强啊  顶啊!!!





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