他で回答したものと同じなのですが参考になれば。
テーブル「T_分類」が以下のようになっている時(どちらもテキスト型)
分類1 分類2
A 1
B 1-1
B 1-2
C 1-A
C 1-B
C 1-C
クエリ操作で
分類1 分類
A 1
B 1-1、1-2
C 1-A、1-B、1-C
とする方法になります。
クエリのSQLビュー内容)
SELECT [分類1], ClassString([分類1]) AS 分類
FROM T_分類
GROUP BY [分類1]
ORDER BY [分類1];
標準モジュールに記述する関数)
Public Function ClassString(sClass As String) As String
Dim rs As New ADODB.Recordset
Dim sTmp As String
sTmp = ""
rs.Source = "SELECT [分類2] FROM T_分類 WHERE [分類1]='" & sClass & "' ORDER BY [分類2] ;"
rs.Open , CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic
While (Not rs.EOF)
sTmp = sTmp & "、" & rs("分類2")
rs.MoveNext
Wend
rs.Close
ClassString = IIf(Len(sTmp) > 0, Mid(sTmp, 2), "")
End Function
> sTmp = sTmp & "、" & rs("分類2")
抽出された分類2を1つの文字列として作っていきます。
作られた文字列は、分類1="B" であった場合
sTmp = "、1-1、1-2" となります。
関数の戻り値を設定する時、
1つでも分類2が抽出されていれば文字数は0以上となっていますが
作った文字列先頭の "、" は不要なため、2文字以降ということで Mid(sTmp, 2) とします。
お礼
なるほどです。 (回答が遅くなってすみません!!) まだまだ勉強が足りないですが、 わかってくるととても楽しいです。^^ どうもありがとうございました。