'Описываем массив для хранения закладок.
Dim varRecord() As Variant
Private Sub Кнопка0_Click()
Dim STR_NUMBER_CARD As String
' начнём с первой карты
STR_NUMBER_CARD = "1"
Set rst_Card = New ADODB.Recordset
' откроем все карты
rst_Card.Open "SELECT CLIENT_CARDS_TBL.NUMBER_CARD, CLIENT_CARDS_TBL.PARENT_CARD, CLIENT_CARDS_TBL.GROUP_ACCOUNT FROM CLIENT_CARDS_TBL ORDER BY NUMBER_CARD DESC", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
' Изменяем верхнюю границу размерности массива до значения свойства RecordCount.
ReDim varRecord(0 To rst_Card.RecordCount - 1)
'все карты
MsgBox " Всего карт" & rst_Card.RecordCount - 1
' начнём подсчёты
FUN_TO_CHILDREN (STR_NUMBER_CARD) ' пойдём с первой карты
End Sub
Public Function FUN_TO_CHILDREN(STR_NUMBER_CARD As String) As Integer
FUN_CHILDREN (STR_NUMBER_CARD)
End Function
Public Function FUN_CHILDREN(STR_NUMBER_CARD As String) As Integer
Dim intI As Long ' счётчик массива
intI = 0 ' счётчик массива
' применим Find для открытого рекордсета (параметры уточнить там даже есть направление поиска)
'отфильтруем детей
rst_Card.Filter = "PARENT_CARD = '" & STR_NUMBER_CARD & "'"
Debug.Print rst_Card.RecordCount & " Дитя "
' пошли по детям
If rst_Card.RecordCount <> 0 Then
Do While rst_Card.EOF = False
' сделали свое нужное
GLB_GROUP_TURN = GLB_GROUP_TURN + rst_Card("GROUP_ACCOUNT")
' присвоили переменной новое значение номера карты
STR_NUMBER_CARD = rst_Card("NUMBER_CARD") ' (rst("GROUP_ACCOUNT"))
Debug.Print " Дитё " & rst_Card("NUMBER_CARD")
' пополняем массив закладками.
varRecord(intI) = rst_Card.Bookmark ' добавили закладку дитяти
' Увеличивает счетчик.
intI = intI + 1
' запустили с ним функцию
FUN_TO_CHILDREN (STR_NUMBER_CARD)
Loop
Else
' что делать если детей больше нет.........????
' отключим фильтр
' rst_Card.Filter = adFilterNone
' intI = intI - 1
' Id_Go = varRecord(0)
' rst_Card.Bookmark = Id_Go
End If
End Function
Loop
|