0

次の種類のテーブルを使用します。

tblRequest
-RequestID(double)
-RequestDescription (String)


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

上記の関係は 1 対多の関係です。

次の方法でデータを表示したい。したがって、次の方法でデータを表示する 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 に答える