Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: 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;

Конечно, все это еще надо причесать рашпилем, а может и вообще в топку.


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.