اسف على قلة شرحي الاول  
	العجب كله يرجع لهذه وحدة نمطية اللي بها فانكشن باسم ConvertColumnToRow وفي الاستعلام راح نستخدم هذا الاسم
 
Public Function ConvertColumnToRow(strField As String, _
    strTable As String, _
    Optional strWhere As String, _
    Optional strOrderBy As String, _
    Optional strSeparator = ", ") As Variant
On Error GoTo Err_Handler
    Dim rs As DAO.Recordset
    Dim rsMV As DAO.Recordset
    Dim strSql As String
    Dim strOut As String
    Dim lngLen As Long
    Dim bIsMultiValue As Boolean
    
    ConvertColumnToRow = Null
    
    strSql = "SELECT " & strField & " FROM " & strTable
    If strWhere <> vbNullString Then
        strSql = strSql & " WHERE " & strWhere
    End If
    If strOrderBy <> vbNullString Then
        strSql = strSql & " ORDER BY " & strOrderBy
    End If
    Set rs = DBEngine(0)(0).OpenRecordset(strSql, dbOpenDynaset)
    bIsMultiValue = (rs(0).Type > 100)
    
    Do While Not rs.EOF
        If bIsMultiValue Then
            Set rsMV = rs(0).Value
            Do While Not rsMV.EOF
                If Not IsNull(rsMV(0)) Then
                    strOut = strOut & rsMV(0) & strSeparator
                End If
                rsMV.MoveNext
            Loop
            Set rsMV = Nothing
        ElseIf Not IsNull(rs(0)) Then
            strOut = strOut & rs(0) & strSeparator
        End If
        rs.MoveNext
    Loop
    rs.Close
    
    lngLen = Len(strOut) - Len(strSeparator)
    If lngLen > 0 Then
       ConvertColumnToRow = Left(strOut, lngLen)
    End If
Exit_Handler:
    Set rsMV = Nothing
    Set rs = Nothing
    Exit Function
Err_Handler:
    MsgBox "Error " & Err.Number & ": " & Err.Description, vbExclamation, "ConvertColumnToRow()"
    Resume Exit_Handler
End Function
	وبعدين عملنا استعلام كما مبينة بالصور
 
	 
	وبعدين عملنا تقرير على هذا الاستعلام
 
	وحفظنا التقرير باسم Query1 
	وبعد عملنا تقرير على هذا الاستعلام
 
	اي يعني مصدر هذا التقرير هو استعلام Query1 كما مبينة في الصورة
 
	 
	وفي النهاية النتيجة طلعت هكذا
 
	 
	مع تقدير