Microsoft Access 2016 汇总并合并 Table 与 SQL
Microsoft Access 2016 Summarize and Merge Table with SQL
我有一个 table 需要格式化以用于手动上传过程。 table 有数千行,所以我需要使用 repeatable 过程来快速修复数据提供给我的方式,使其成为所需的方式。我今天控制数据的方式的能力为零。但是,由于系统限制,我必须格式化它才能使用它。我现在的table是4列,我需要输出成3列。我必须按字段名称分组:“品牌”和“促销”。字段名称:“skus” 我需要通过单个“品牌”和“促销”组合将它们合并为一个连续的字符串。
给定品牌存在重复的“促销”,因为它们是在产品级别创建的。但是,他们进入的系统需要是“品牌”、“促销”、“库存量”。
不太确定我是否需要使用 VBA 在 Access 中执行某些操作。或者我可以在两个不同的查询中执行此操作。
您将需要使用一些 VBA 来完成此操作。 VBA 需要循环来自 table 的数据记录集,根据品牌和促销过滤并构建 sku 字符串。可能是这样的:
Function fJoinData(strBrand As String, strPromotion As String) As String
On Error GoTo E_Handle
Dim db As DAO.Database
Dim rsData As DAO.Recordset
Dim strSQL As String
Set db = DBEngine(0)(0)
strSQL = "SELECT skus FROM Table1 " _
& " WHERE Brand='" & strBrand & "' " _
& " AND Promotion='" & strPromotion & "';"
Set rsData = db.OpenRecordset(strSQL)
If Not (rsData.BOF And rsData.EOF) Then
Do
fJoinData = fJoinData & ", " & rsData!skus
rsData.MoveNext
Loop Until rsData.EOF
End If
If Left(fJoinData, 2) = ", " Then fJoinData = Mid(fJoinData, 3)
fExit:
On Error Resume Next
rsData.Close
Set rsData = Nothing
Set db = Nothing
Exit Function
E_Handle:
MsgBox Err.Description & vbCrLf & vbCrLf & "fJoinData", vbOKOnly + vbCritical, "Error: " & Err.Number
Resume fExit
End Function
与其插入 table,我建议只创建一个可以导出的查询:
SELECT DISTINCT
T.Brand,
T.Promotion,
fJoinData(T.Brand,T.Promotion) AS skus
FROM Table1 AS T
此致,
我有一个 table 需要格式化以用于手动上传过程。 table 有数千行,所以我需要使用 repeatable 过程来快速修复数据提供给我的方式,使其成为所需的方式。我今天控制数据的方式的能力为零。但是,由于系统限制,我必须格式化它才能使用它。我现在的table是4列,我需要输出成3列。我必须按字段名称分组:“品牌”和“促销”。字段名称:“skus” 我需要通过单个“品牌”和“促销”组合将它们合并为一个连续的字符串。
给定品牌存在重复的“促销”,因为它们是在产品级别创建的。但是,他们进入的系统需要是“品牌”、“促销”、“库存量”。
不太确定我是否需要使用 VBA 在 Access 中执行某些操作。或者我可以在两个不同的查询中执行此操作。
您将需要使用一些 VBA 来完成此操作。 VBA 需要循环来自 table 的数据记录集,根据品牌和促销过滤并构建 sku 字符串。可能是这样的:
Function fJoinData(strBrand As String, strPromotion As String) As String
On Error GoTo E_Handle
Dim db As DAO.Database
Dim rsData As DAO.Recordset
Dim strSQL As String
Set db = DBEngine(0)(0)
strSQL = "SELECT skus FROM Table1 " _
& " WHERE Brand='" & strBrand & "' " _
& " AND Promotion='" & strPromotion & "';"
Set rsData = db.OpenRecordset(strSQL)
If Not (rsData.BOF And rsData.EOF) Then
Do
fJoinData = fJoinData & ", " & rsData!skus
rsData.MoveNext
Loop Until rsData.EOF
End If
If Left(fJoinData, 2) = ", " Then fJoinData = Mid(fJoinData, 3)
fExit:
On Error Resume Next
rsData.Close
Set rsData = Nothing
Set db = Nothing
Exit Function
E_Handle:
MsgBox Err.Description & vbCrLf & vbCrLf & "fJoinData", vbOKOnly + vbCritical, "Error: " & Err.Number
Resume fExit
End Function
与其插入 table,我建议只创建一个可以导出的查询:
SELECT DISTINCT
T.Brand,
T.Promotion,
fJoinData(T.Brand,T.Promotion) AS skus
FROM Table1 AS T
此致,