Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Вывод родствеников
Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата lxa85:
Потому что средствами Access это проблематично. »
Почему? Обычная рекурсия (концепт, без необходимых проверок):
читать дальше »
Код: Выделить весь код
Option Compare Database
Option Explicit

Sub Sample(strFIO As String)
    Dim objRS As Recordset
    Dim lngLevel As Long
    
    
    lngLevel = 0
    
    Set objRS = CurrentDb.OpenRecordset("SELECT * FROM Genealogy WHERE [ФИО] = '" & strFIO & "'")
    
    GetParents objRS.Fields.Item("ID").Value, lngLevel
End Sub

Sub GetParents(lngID As Long, ByVal lngLevel)
    With CurrentDb.OpenRecordset("SELECT [ФИО], [Отец], [Мать] FROM Genealogy WHERE [ID] = " & lngID & "")
        With .Fields
            Debug.Print String(lngLevel, vbTab) & .Item("ФИО").Value
            
            lngLevel = lngLevel + 1
            
            If Not IsNull(.Item("Отец").Value) Then
                GetParents .Item("Отец").Value, lngLevel
            End If
            
            If Not IsNull(.Item("Мать").Value) Then
                GetParents .Item("Мать").Value, lngLevel
            End If
        End With
    End With
End Sub
Примерный результат работы по вызову «Sample("Я")»:
Код: Выделить весь код
Я
    Папа
        Дед (отец отца)
        Бабка (мать отца)
    Мама
        Дед (отец матери)
        Бабка (мать матери)
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:41, 23-04-2013 | #3

Название темы: Вывод родствеников