اسف على قلة شرحي الاول
العجب كله يرجع لهذه وحدة نمطية اللي بها فانكشن باسم 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 كما مبينة في الصورة
وفي النهاية النتيجة طلعت هكذا
مع تقدير