设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[帮助] [求助]如何在Access里合并文本?

[复制链接]
跳转到指定楼层
1#
发表于 2011-7-29 15:32:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
D订单  货名
1 1101  ACCESS
2 1102  ACCESS
3 1103  ACCESS
4 1104  EXCEL
5 1105  EXCEL

我想把上面的记录变成:
ID 订单 货名
1.2.3 1101.1102.1103 ACCESS
4.5  1104.1105 EXCEL

应该怎么做呢?请教~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-7-29 16:05:40 | 只看该作者
用ADO打开记录集,再用For循环写入,详细可搜索“来回折腾”。
3#
 楼主| 发表于 2011-7-29 16:35:51 | 只看该作者
有没有SQL语句可以实现?
因为我希望做成的结果可以生成一个查询表,我还要用这个表来做报表源数据呢。。。
4#
发表于 2011-7-29 17:30:33 | 只看该作者
本身是必须要建立一个表才能用ADO写入的(总不能写在原表上吧?)。只是这样做,统计起来并不太顺利吧?
实例先学着,不懂的地方再提问。
5#
 楼主| 发表于 2011-7-29 17:41:51 | 只看该作者
我泪目了。。。完全看不懂。还没到能看懂的层次。
前天刚买了书,我先研究一下争取能看懂那些代码不懂再来问好了。

点击这里给我发消息

6#
发表于 2011-7-29 19:58:35 | 只看该作者
自定义函数 - 字段字符串聚合连接函数 DCONCAT
http://www.office-cn.net/thread-69179-1-1.html

点击这里给我发消息

7#
发表于 2011-7-29 21:53:56 | 只看该作者
回复 zhuyiwen 的帖子

我也做了一个DCountact
  1. Public Function DContact(expr As String, domain As String, grpFld As String, grpValue As Variant, Optional sp As String = ",") As String
  2.     Dim SQL As String
  3.     Dim vType As String
  4.     vType = TypeName(grpValue)
  5.    
  6.     If vType = "String" Or vType = "Date" Then
  7.         SQL = "SELECT " & expr & " FROM " & domain & " WHERE " & grpFld & " = '" & grpValue & "'"
  8.     Else
  9.         SQL = "SELECT " & expr & " FROM " & domain & " WHERE " & grpFld & " = " & grpValue
  10.     End If
  11.    
  12.     Dim rs As Recordset
  13.     Set rs = CurrentDb().OpenRecordset(SQL)
  14.    
  15.     Dim s As String
  16.     Dim i As Long, n As Long, c As Long
  17.    
  18.     n = rs.Fields.Count
  19.     Do While Not rs.EOF()
  20.         For i = 0 To n - 1
  21.             If c = 0 Then
  22.                 s = rs(i)
  23.             Else
  24.                 s = s & sp & rs(i)
  25.             End If
  26.             c = c + 1
  27.         Next
  28.         rs.MoveNext
  29.     Loop
  30.     rs.Close
  31.     Set rs = Nothing
  32.    
  33.     DContact = s
  34. End Function
复制代码

假设把你的数据存放在 表1 中,则做如下查询:
  1. SELECT DContact('ID','表1','货名',货名) AS ID, DContact('订单','表1','货名',货名) AS 订单, 货名
  2. FROM (SELECT DISTINCT 货名 FROM 表1)  AS A;
复制代码

可得如下结果:



本帖子中包含更多资源

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

x
8#
 楼主| 发表于 2011-8-1 11:36:06 | 只看该作者
FROM (SELECT DISTINCT 货名 FROM 表1)  AS A

这个A是什么?

还有,DContact('ID','表1','货名',货名)
我看了您教的DCONCAT函数,字段是:DCONCAT(expr, domain, [criteria],[delimiter])
即DCONCAT(字段名, 表名,条件,分隔符)
所以我就迷惑了。。。后面两个货名是什么意思啊?

啊啊。。这个对我来说太难了。。能不能求QQ一步一步指教?谢谢啦~~
9#
发表于 2011-8-1 16:14:06 | 只看该作者
1、A表示的是将获取的查询命名为A。有时候不想做太多查询,想嵌套子查询进去的话,往往通过临时命名一下(按这个实例,通过分组查询应该可以简化一下,不过暂时没调试,你可以先试下)。
2、这个自定义函数可能还没达到你看懂的时候。第一个是需要显示的查询字段名,第二个是查询数据源的表名称,第三个是查询条件的字段名,第四个是查询条件值(即货名:Access、Excel等等)。
这个要有些基础才好说(貌似在打击你……请见谅),至少要对ADO和For循环等语句有所了解,讲起来才方便。
10#
发表于 2011-8-3 11:44:49 | 只看该作者
做记录集,按货名排序,再循环,如果你会操作记录集的话。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 09:37 , Processed in 0.092180 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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