ник: Lukas
Для CrossTab нам нужно сделать расчетное поле с помощью VBA функции, которое должно
выдавать последовательные порядковые номера для примечаний в пределах одного родителя. (1, 2, 3 и т.д.)
Public Function acbGenPOSID(Optional ID As Variant) As Long
Static lngPrevPOSID As Long
Static lngPrevID As Long
If IsMissing(ID) Then
lngPrevPOSID = 0
acbGenPOSID = -1
Exit Function
End If
If ID <> lngPrevID Then
lngPrevPOSID = 0
lngPrevID = ID
End If
lngPrevPOSID = lngPrevPOSID + 1
acbGenPOSID = lngPrevPOSID
End Function
|
Ну а далее CrossTab
TRANSFORM First(t1.ChildName) AS [First-ChildName]
SELECT t1.IDParent, t1.ParentName
FROM (
SELECT tblParent.IDParent, tblParent.ParentName, acbGenPOSID(tblParent.IDParent) AS Num, tblChild.ChildName
FROM tblParent LEFT JOIN tblChild ON tblParent.IDParent=tblChild.IDParent
WHERE acbGenPOSID()
) As t1
GROUP BY t1.IDParent, t1.ParentName
PIVOT t1.Num;
|
Конечно, все это еще надо причесать рашпилем, а может и вообще в топку.