1

次のフィールド(列)を持つテーブルがあります

First Name   |  Last Name | Email | ContactID | AccountID

名前、メールアドレス、AccountIDは同じですが、ContactIDが異なる行が重複しています。1つのアカウントに一致する相互に追加されたContactIDのリストを返すことができるクエリを作成する方法はありますか?

私が持っているとしましょう

First Name   |  Last Name | Email | ContactID | AccountID
----------------------------------------------------------
fname        |  lanem     | e@m.ca| 123       | 1
fname        |  lanem     | e@m.ca| 124       | 1    

戻り値

ContactID | AccountID
----------------------
123 , 124 | 1

私はアクセスを使用しています(選択ではありません)

4

1 に答える 1

1

次のコードを「通常の」VBA モジュール (フォームに関連付けられたクラス モジュールではない) に貼り付け、必要に応じてテーブル名を編集してから、次のように関数をクエリの列として使用できます。listContactIDs([AccountID])

Public Function listContactIDs(AccountID As Long) As String
Dim cdb As DAO.Database, rst As DAO.Recordset, s As String
Dim Separator As String

Separator = ", "

Set cdb = CurrentDb
Set rst = cdb.OpenRecordset( _
        "SELECT ContactID FROM [TableName] WHERE AccountID=" & _
            AccountID & " ORDER BY ContactID", _
        dbOpenSnapshot)
s = ""
Do While Not rst.EOF
    s = s & rst!ContactID & Separator
    rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Set cdb = Nothing
If Len(s) > 0 Then
    ' remove trailing separator
    s = Left(s, Len(s) - Len(Separator))
End If
listContactIDs = s
End Function
于 2013-03-19T14:20:20.400 に答える