access数据库,如果A表中a字段等于B表中b字段,则把符合条件的A表中的b字段和c字段值链接起来,

赋给B表中b字段,字段类型相同,但结果可能是一对多,怎么做?比如说A表有两条记录A.a=警察和A.a=警察,B.b=警察,A.c=“王刚”和A.c=”李明“,那么赋值B.c=“王刚,李明”
A
a b c
警察 王刚 河东区
警察 李明 北辰区

小偷 张三 和平区
小偷 马六 南开区
小偷 王五 红桥区

B
a b
警察 王刚“河东区”、李明“北辰区”
小偷 张三“和平区”、马六“南开区”、王五“红桥区”

是要达到这种要求,在B表中赋值b字段,用vba做也可以,怎么做帮帮忙
表A a字段名是发原链接 ,b字段名是本文扩全,有下面五条数据

发原链接 本文扩全
警察 王刚河东区
警察 李明北辰区

小偷 张三和平区
小偷 马六南开区
小偷 王五红桥区

表B a字段名是已发递增,b字段名是zsbc

已发递增 zsbc
警察 王刚河东区李明北辰区
小偷 张三和平区马六南开区王五红桥区

表A的发原链接和表B的已发递增是关联字段,最后这样就可以,中间所有字符串都可以不要,请帮忙再看看

用vba写自定义函数

首先,建立一个模块,写入以下自定义函数:

Function rcMerge(whereStr$)
Dim rs As New ADODB.Recordset, sql$, resultStr$
    sql = "select a,b,c from A where a='" & whereStr & "'"
    rs.Open sql, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
    Do While Not rs.EOF
        resultStr = resultStr & "、" & rs!b & """" & rs!c & """"
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
    rcMerge = Replace(resultStr, "、", "", 1, 1)
End Function

然後,建立更新查询,查询的sql:

update B set b=rcmerge(a)

执行,OK!

注意,如果你实际操作的表名称、字段名称和以上的A、B、a、b、c不一样,用的时候以上表名和字段名都要对应修改

追问

里面怎么还有乱码啊,看不太明白,能不能用sql语句玩成

追答

那不是乱码,已改,请再看看
只用sql做不到

追问

给个能直接安装的vba再说,我的2003里面没有vba

追答

access、excel、word、outlook...等offce组件都可以直接编写、运行vba程序,不需要安装什麼...

打开你的access数据库,按alt+F11,会弹出VBE窗口(vba的编辑器)

然後如下图操作

只是既然你不懂vba,那麼也就不知道如何修改表名、字段名了吧,

所以...不知道怎麼帮你了...

追问

我试过了,不行,详见我修改的补充,请帮忙再看看

追答

不行是因为你不懂vba...你给A、B、a、b、c肯定不是你的真实表名和字段名,所以需要你对应修改,字符串连接也是很简单的东西,就算按你上面的补充给你重写,也在你的实际环境中也依然会出问题。如果能把你的实际表结构发出来,或者把你的access文件发到[email protected],可以帮你完成

追问

我把实际表结构发出来了,再补充里面,请看看。

追答Function rcMerge(whereStr$)
Dim rs As New ADODB.Recordset, sql$, resultStr$
    sql = "select 本文扩全 from A where 发原链接='" & whereStr & "'"
    rs.Open sql, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
    Do While Not rs.EOF
        resultStr = resultStr & "、" & rs!本文扩全
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
    rcMerge = Replace(resultStr, "、", "", 1, 1)
End Function

update B set zsbc=rcmerge(已发递增)

如果还有问题,请把问题界面截图发出来

温馨提示:答案为网友推荐,仅供参考
相似回答