我有一个包含2个字段的MDB表:
+-------------+------------------+
| salesperson | Transaction_Date |
+-------------+------------------+
| John | 12/11/2018 |
| John | 13/11/2018 |
| John | 18/11/2018 |
| Steeve | 23/12/2018 |
| Steeve | 29/12/2018 |
+-------------+------------------+
在VBA(在Excel中)中,我想通过ADO创建以下格式:
+-------------+----------------------------------+
| salesperson | Transaction_Date_Concatenated |
+-------------+----------------------------------+
| John | 12/11/2018-13/11/2018-18/11/2018 |
| Steeve | 23/12/2018-29/12/2018 |
+-------------+----------------------------------+
每个销售人员的Transaction_Dates
数量可能从1到30不等。
下面的SQL为每个销售人员创建一条记录,但是虽然看起来像我想要的方向,但是它当然不会产生连接的字段
SQL = " SELECT SalesPerson, max(Date) as value1 FROM 0TargetTemplate GROUP BY SalesPerson"
答案 0 :(得分:0)
据我所知,这不能仅使用SQL来实现。您将需要使用VBA函数来遍历记录并构造定界字符串。
艾伦·布朗(Allen Browne)创建了一个现有示例,可以在here中找到。
对于您的特定任务,您可以通过以下方式调用该函数:
select
[0TargetTemplate].SalesPerson,
ConcatRelated
(
"[0TargetTemplate].Transaction_Date",
"[0TargetTemplate]",
"[0TargetTemplate].SalesPerson = '" & [0TargetTemplate].SalesPerson & "'",
"[0TargetTemplate].Transaction_Date",
"-"
) as Transaction_Date_Concatenated
from
[0TargetTemplate];
答案 1 :(得分:0)
使用来自TTITLE
的建议代码和功能,我在VBA Access中编写了一个过程,但是在 Set rs = 语句中收到“参数太少”错误。我在具有正确连接的VBA EXCEL中进行了尝试,但是尽管在VBA模块中正确引用了该错误,但仍收到有关无法识别“ ConcatRelated ”功能的错误
Sub test()
SQL = "SELECT [tblOrders].CompanyName, ConcatRelated ('[tblOrders].Transaction_Date',[tblOrders], [tblOrders].SalesPerson =' [tblOrders].SalesPerson', [tblOrders].Transaction_Date) AS Transaction_Date_Concatenated FROM tblOrders;"
Set rs = CurrentDb.OpenRecordset(SQL)
On Error GoTo resultsetError
dbValue = rs!Variable
MsgBox dbValue, vbOKOnly, "RS VALUE"
resultsetError:
MsgBox "Error Retrieving value from database", vbOKOnly, "Database Error"
End Sub