0

使用以下类型的表:

tblRequest
-RequestID(double)
-RequestDescription (String)


tblError
-ErrorID(long integer)
-ErrorName(String)
-RequestID(double)

上述关系是一对多的关系。

我想通过以下方式查看数据。因此,我需要一个 SELECT 查询,它以下列方式显示数据。

Request          Error(s)
1                Error1, Error6
2                Error2, Error3
3.4              Error4, Error2, Error1

我试图搜索涉及 FOR XML PATH('')) 的答案。但是,我认为它不能在 Ms-Access 中工作。

4

1 回答 1

1

这是一个潜在的解决方案。

步骤1:

在您的 MS Access 应用程序中创建此功能。我认为这不是最有效的解决方案,但是如果记录数量不是很大,它应该可以很好地工作。

Public Function getErrorText(ByVal MyId As Double) As String
    Dim myrs        As Recordset

    'Create the recordset
    Set myrs = CurrentDb.OpenRecordset("select distinct ErrorID from tblError where RequestID = " & MyId)

    'Build the error string
    Do Until myrs.EOF
        getErrorText = myrs.Fields(0).Value & ", " & getErrorText
        myrs.MoveNext
    Loop

    'Clean up
    myrs.Close
    Set myrs = Nothing

    'Return the correct cleaned up string
    getErrorText = Left(getErrorText, Len(getErrorText) - 2)
End Function

第2步:

然后,您应该能够运行以下 SQL 语句来获得所需的输出。

SELECT distinct tblError.RequestID, getErrorText( tblError.[RequestID]) AS [Error(s)]
FROM tblError INNER JOIN tblRequest ON tblError.RequestID = tblRequest.RequestID
WHERE (((getErrorText( tblError.[RequestID])) Is Not Null));
于 2016-08-26T20:54:17.147 回答