|
|
|
| Public Function FUN_TO_FILL_TREE_VIEW(STR_NUMBER_CARD As String) As Integer
' Пробег по детям Подсчёт доходов
'CLIENT_CARDS_TBL NUMBER_CARD PARENT_CARD
Dim rst As ADODB.Recordset
Dim VAL_COUNT As Integer ' количество карт
Set rst = New ADODB.Recordset
VAL_COUNT = 0
GLB_GROUP_ACCOUNT = 0
On Error GoTo C_LOSE
rst.Open "SELECT CLIENT_CARDS_TBL.* " _
& " From CLIENT_CARDS_TBL ", GLB_CONNECTION, adOpenKeyset, adLockOptimistic
If rst.RecordCount = 0 Then GoTo C_LOSE
Debug.Print STR_NUMBER_CARD
rst.MoveLast
rst.MoveFirst
Do Until rst.EOF
rst.MoveLast
rst.MoveFirst
rst.Find "PARENT_CARD = '" & STR_NUMBER_CARD & "'"
как тут проверить - что Find ничего не нашёл???????????????
STR_NUMBER_CARD = rst("NUMBER_CARD")
VAL_COUNT = VAL_COUNT + 1
GLB_GROUP_ACCOUNT = GLB_GROUP_ACCOUNT + rst("PERSONAL_ACCOUNT")
Loop
C_LOSE:
FUN_TO_FILL_TREE_VIEW = VAL_COUNT
rst.Close
Set rst = Nothing
End Function | |
|
| |
|
|
|
| Если FIND ничего не нашел, то текущая запись выйдет за пределы рекордсета и его свойство .EOF вернет значение True | |
|
| |
|
|
|
| Спасибо!!!
Проверяем на EOF и аля улю.......... | |
|
| |
|
|
|
|
Do Until rst.EOF
rst.MoveLast
rst.MoveFirst
rst.Find "PARENT_CARD = '" & STR_NUMBER_CARD & "'"
Loop
|
убрал присвоение - цикл не понял - посл.зап, первая - найти, посл.-первая - нашли тоже
и почему не открыть rst с условием
SrtSQL="SELECT CLIENT_CARDS_TBL.* From CLIENT_CARDS_TBL Where PARENT_CARD ='" & STR_NUMBER_CARD & "'"
rst.Open SrtSQL, GLB_CONNECTION, adOpenKeyset, adLockOptimistic
и искатьничего не нужно все записи по условию - перебрал - проссумировал | |
|
| |
|
|
|
|
А у этих детей ещё дети а у тех - свои....
Нада всех проссумировать....
и по еолличеству и по суммам++++++
А не только первый эшелон..... как Вы предлагаете...
| |
|
| |
|
|
|
| у меня нечто похожее (только там время выполнения родителей пересчитать) получилось с рекурсией разобраться | |
|
| |
|
|
|
| вот попробуй
Do Until rst.EOF
STR_NUMBER_CARD = rst("NUMBER_CARD")
VAL_COUNT = VAL_COUNT + 1
GLB_GROUP_ACCOUNT = GLB_GROUP_ACCOUNT + rst("PERSONAL_ACCOUNT")
'вот можно так вставить в цикл
SrtSQL="SELECT CLIENT_CARDS_TBL.* From CLIENT_CARDS_TBL Where PARENT_CARD ='" & rst!STR_NUMBER_CARD & "'"
rst_1.Open SrtSQL, GLB_CONNECTION, adOpenKeyset, adLockOptimistic
If rst_1.RecordCount > 0 Then FUN_TO_FILL_TREE_VIEW rst_1!STR_NUMBER_CARD [/b]
Loop
|
вот только
STR_NUMBER_CARD, VAL_COUNT , GLB_GROUP_ACCOUNT нужно сделать глобальными.
STR_NUMBER_CARD - возможно даже глобальным массивом или строкой | |
|
| |
|
|
|
| Даа , Спасибо!!!
У мну с рекурсией нету коннекта.
Она 'живёт своей жизнью ,- я своей...
Никак не встретимся = чтобы поговорить подушам, выпить
чашечку горилки........
Потому изголился вот так......... | |
|
| |
|
|
|
|
| Даааа рекурсия нужна...
ноя никак её не догоняю....
блин........
берём первую карту
делаем запрос её детей
бежим по детям
берём первого - считываем данные
берём N- ого - считываем данные
Дошли до конца
теперь.............. теперь не знаю????
блиннннн а есть простой пример рекурсивной функции - что ба для тупых????
вот нашёл, но
Function Fact(n As Integer)
If n < 1 Then
Fact = 1
Else
Fact = Fact(n - 1) * n
End If
End Function
=================================
Function Fac(STR_NUMBER_CARD )
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "SELECT CLIENT_CARDS_TBL.* " _
& " From CLIENT_CARDS_TBL " _
& " Where (((CLIENT_CARDS_TBL.PARENT_CARD) = '" & STR_NUMBER_CARD & "')), GLB_CONNECTION, adOpenKeyset, adLockOptimistic"
If rst.RecordCount = 0 Then GoTo C_LOSE
Do Until rst.EOF
rst.MoveNext
Loop
C_LOSE:
rst.Close
Set rst = Nothing
End Function | |
|
| |
|
|
|
| нет
берём первую карту
делаем запрос её детей
бежим по детям
берём первого - считываем данные
ЗАПУСКАЕМ НАШУ ЖЕ ФУНКЦИЮ НО С КОДОМ ДИТЯТИ
' т.о. функция_Главная (ФГ) ждет пока не пройдет весь процесс по этому детю
' запускаются ФГ1-ФГ2-........-ФГN - пока дети не кончатся у этого дитя
' после окончания последный функции по детю закроются все N вызванных функций и продолжится процесс дальше
берём N- ого - считываем данные
Дошли до конца | |
|
| |
|
|
|
| Function Fac(STR_NUMBER_CARD )
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
GLB_GROUP_TURN =0#
rst.Open "SELECT CLIENT_CARDS_TBL.* " _
& " From CLIENT_CARDS_TBL " _
& " Where (((CLIENT_CARDS_TBL.PARENT_CARD) = '" & STR_NUMBER_CARD & "')), GLB_CONNECTION, adOpenKeyset, adLockOptimistic"
If rst.RecordCount <>0 Then
rst.MoveLast
rst.MoveFirst
' берём первого, считываем данные его доходов с помощью FUN_PERSONAL_TURN
GLB_GROUP_TURN = GLB_GROUP_TURN + FUN_PERSONAL_TURN(rst("NUMBER_CARD"))
STR_NUMBER_CARD = rst("NUMBER_CARD")
Fac(STR_NUMBER_CARD )
Else
end if
rst.Close
Set rst = Nothing
End Function | |
|
| |
|
|
|
| а цикл по детям где, так мы берем только первого дитя и все!!!!
Function Fac(STR_NUMBER_CARD )
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
GLB_GROUP_TURN =0#
rst.Open "SELECT CLIENT_CARDS_TBL.* " _
& " From CLIENT_CARDS_TBL " _
& " Where (((CLIENT_CARDS_TBL.PARENT_CARD) = '" & STR_NUMBER_CARD & "')), GLB_CONNECTION, adOpenKeyset, adLockOptimistic"
do while rst.eof=false
' берём первого, считываем данные его доходов с помощью FUN_PERSONAL_TURN
GLB_GROUP_TURN = GLB_GROUP_TURN + FUN_PERSONAL_TURN()
STR_NUMBER_CARD = ( rst("NUMBER_CARD")
Fac(STR_NUMBER_CARD )
rst.movenext
loop
rst.Close
Set rst = Nothing
End Function
|
| |
|
| |
|
|
|
|
вот это не понятно (что знач 0# - я могу чего-то не знать) это кажется будет обнулять ее при каждом вызове , нужно в процедуре которая вызывает пересчет написать,
Public GLB_GROUP_TURN as Variant
Function Fac_Global()
GLB_GROUP_TURN=0
Fac (STR_NUMBER_CARD )
end Function Fac
|
| |
|
| |
|
|
|
| Дааа это будет обнулять
это надо убрать -
а обнулять бум перед вызовом этой функции...
Function Fac(STR_NUMBER_CARD )
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "SELECT CLIENT_CARDS_TBL.* " _
& " From CLIENT_CARDS_TBL " _
& " Where (((CLIENT_CARDS_TBL.PARENT_CARD) = '" & STR_NUMBER_CARD & "')), GLB_CONNECTION, adOpenKeyset, adLockOptimistic"
do while rst.eof=false
' берём первого, считываем данные его доходов с помощью FUN_PERSONAL_TURN
GLB_GROUP_TURN = GLB_GROUP_TURN + FUN_PERSONAL_TURN()
STR_NUMBER_CARD = ( rst("NUMBER_CARD")
Fac(STR_NUMBER_CARD )
rst.movenext
loop
rst.Close
Set rst = Nothing
End Function
|
а как же теперь других детей самой верхней самого первой карты
или я опять не догнал????
Ваще то вроде никого не обделили....
Но я сомневаюся
Ей час ещё код по изучаю в мозге........ | |
|
| |
|
|
|
| да и еще
If rst.RecordCount <>0 Then
rst.MoveLast
rst.MoveFirst
|
для чего движение по базе? | |
|
| |
|
|
|
| так говорят 100% выход на первую запись
хотя я тоже думаю достаточно moveFirst
- предохраняюся | |
|
| |
|
|
|
| да выходишь на кол-во записей, но это нигде не используется в данном случае достаточно просто цикл с условем
даже если нет записей не будет никакой ошибки просто цикл сразу закончится.
и еще нужно сначала
MoveLast
MoveFist
RecordCount
только так получим полное значение. | |
|
| |
|
|
|
| а вдруг - сразу EOF ? и звиздец
или мы где то окажемся в центре Recordset _a
так что презик на свечку - не помешает
сказала монашка | |
|
| |
|
|
|
|
Function Fac(STR_NUMBER_CARD )
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "SELECT CLIENT_CARDS_TBL.* " _
& " From CLIENT_CARDS_TBL " _
& " Where (((CLIENT_CARDS_TBL.PARENT_CARD) = '" & STR_NUMBER_CARD & "')), GLB_CONNECTION, adOpenKeyset, adLockOptimistic"
do while rst.eof=false
' берём первого, считываем данные его доходов с помощью FUN_PERSONAL_TURN
GLB_GROUP_TURN = GLB_GROUP_TURN + FUN_PERSONAL_TURN()
STR_NUMBER_CARD = ( rst("NUMBER_CARD")
Fac(STR_NUMBER_CARD ) ' бежим по всем детям пока не кончатся, по детям детей , по их детям
rst.movenext ' берём следующего
loop
rst.Close
Set rst = Nothing
End Function
|
А как только дети кончатся
и цикл кончиться, а мы ещё верхний цикл не добегали.......
Кот_т_т -- чё та не то..........
Мы каждый раз берём следующего и следующего,
а тех что ранее - мы не пробегаем = не уделяем им должного внимания - как Вы считаете........
Лезим вглубь по одной ветке.....
А надо поразветвлениям шарить........
Здаётся мне тута ещё один цикл нужен | |
|
| |
|
|
|
| нет при открытии мы оказываемся на первой и только первой записи для конкретного условия (если оно есть).
Если созданный объект Recordset содержит записи, то текущей записью становится первая запись. Если записи в объекте отсутствуют, свойство RecordCount получает значение 0, а свойства BOF и EOF значение True
|
справичник | |
|
| |
|
|
|
| Справочник - конешна врать не будет - на то он и .........
А может вот так надо
Public Function FUN_TO_CHILDREN(STR_NUMBER_CARD As String) As Integer
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "SELECT CLIENT_CARDS_TBL.* " _
& " From CLIENT_CARDS_TBL " _
& " Where (((CLIENT_CARDS_TBL.PARENT_CARD) = '" & STR_NUMBER_CARD & "')), GLB_CONNECTION, adOpenKeyset, adLockOptimistic"
rst.MoveFirst
Do While rst.EOF = False
GLB_GROUP_TURN = GLB_GROUP_TURN + FUN_PERSONAL_TURN( rst("NUMBER_CARD"))
STR_NUMBER_CARD = rst("NUMBER_CARD")
rst.MoveNext
Loop
rst.MoveFirst
Do While rst.EOF = False
GLB_GROUP_TURN = GLB_GROUP_TURN + FUN_PERSONAL_TURN( rst("NUMBER_CARD"))
STR_NUMBER_CARD = rst("NUMBER_CARD")
Fac (STR_NUMBER_CARD)
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End Function
|
| |
|
| |
|
|
|
|
| Звиняюсь за бесталковость
у мну в башке мы теряем часть родственников в самом первом вызове рекурсии..........
то есть лезем дальше и дальше, а первый запрос остаётся не обработанным, да и дальнейшие...
мв только первого берём дитя и смотрим его детей...
А второго , третьего - мы не проверяем......... | |
|
| |
|
|
|
| поехали:
Функция1 (Ф1)
1-й дите
обработали
вызвали ф-цию с дитем
Ф1 останов
Ф2 (пример 3-дитя у него у 2-го есть еще 2 шт.)
1-й дите
2-й дите
вызвали ф-цию с дитем
Ф2 останов
Ф3
1-й дите
2-й дите
Ф3-конец
Ф2 продолжили
3-й дите
Ф2 конец
Ф1 продожили
2-й дите
.....
N-ый дите
Ф1 конец
|
| |
|
| |
|
|
|
| Ты Вы уверен | |
|
| |
|
|
|
| крест на пузе желтой краской, бля буду бэ в натуре волкодав | |
|
| |
|
|
|
| так и случилось при проверке кода
Дошли до последнего дитя далее рекордсет пуст и вылетаем по ошибке....... | |
|
| |
|
|
|
| что знач до последнего и вылетаем
код на базу | |
|
| |
|
|
|
|
Public Function FUN_TO_CHILDREN(STR_NUMBER_CARD As String) As Integer
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "SELECT CLIENT_CARDS_TBL.* " _
& " From CLIENT_CARDS_TBL " _
& " Where (((CLIENT_CARDS_TBL.PARENT_CARD) = '" & STR_NUMBER_CARD & "'))", GLB_CONNECTION, adOpenKeyset, adLockOptimistic
rst.MoveLast
rst.MoveFirst
Do While rst.EOF = False
GLB_GROUP_TURN = GLB_GROUP_TURN + FUN_PERSONAL_TURN(rst("NUMBER_CARD"))
STR_NUMBER_CARD = rst("NUMBER_CARD")
FUN_TO_CHILDREN (STR_NUMBER_CARD)
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End Function
|
| |
|
| |
|
|
|
| Виноват - свечка с презиком подвела | |
|
| |
|
|
|
| отож!
а я ж тобі казав
rst.MoveLast
rst.MoveFirst
|
навіщо
и долши не до последнего, а до первого у дитя у которого нет детей. | |
|
| |
|
|
|
| я це мови не поняв
Я це мовi не знав
ты гутарь по москалёву
я це буду понимати
Скильки я годин побачiл, а такi вот не встре...
о
скільки годин в день Вам потрібно спати??? | |
|
| |
|
|
|
| ответ - днём не спят | |
|
| |
|
|
|
|
Public Function FUN_TO_CHILDREN(STR_NUMBER_CARD As String) As Integer
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "SELECT CLIENT_CARDS_TBL.* " _
& " From CLIENT_CARDS_TBL " _
& " Where (((CLIENT_CARDS_TBL.PARENT_CARD) = '" & STR_NUMBER_CARD & "'))", GLB_CONNECTION, adOpenKeyset, adLockOptimistic
rst.MoveLast
rst.MoveFirst
Do While rst.EOF = False
GLB_GROUP_TURN = GLB_GROUP_TURN + FUN_PERSONAL_TURN(rst("NUMBER_CARD"))
STR_NUMBER_CARD = rst("NUMBER_CARD")
' возможно это уменьшит время выполнения - хотя спорный вариант
' нужно запустить с 2-мя вариантами на большом количестве и посмотреть
rst_1.Open "SELECT CLIENT_CARDS_TBL.* " _
& " From CLIENT_CARDS_TBL " _
& " Where (((CLIENT_CARDS_TBL.PARENT_CARD) = '" & STR_NUMBER_CARD & "'))", GLB_CONNECTION, adOpenKeyset, adLockOptimistic
if rst_1.eof=false then FUN_TO_CHILDREN (STR_NUMBER_CARD)
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End Function
|
но кажется ускорит | |
|
| |
|
|
|
| сразу проверка на наличие записей - и если нет, то и не \делать рекурсию | |
|
| |
|
|
|
| да.
но тут нужно смотреть если гарантировано есть внуки хотябы во 60%-70% то наверное это увеличит время | |
|
| |
|
|
|
| Спасибо!!!
нчну новую ветку | |
|
| |
|
|
|
| а это мне кажется точно ускорит (если есть смысл в усорении? когда 2-3 уродня детей, а не 10-100ни - то конечно эсть)
Public Function FUN_TO_CHILDREN(STR_NUMBER_CARD As String) As Integer
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
Str_Num=STR_NUMBER_CARD
rst.Open "SELECT CLIENT_CARDS_TBL.* " _
& " From CLIENT_CARDS_TBL ", GLB_CONNECTION, adOpenKeyset, adLockOptimistic
rst.FindFirst "CLIENT_CARDS_TBL.PARENT_CARD = '" & Str_Num & "'"
Do While NoMatch= False
GLB_GROUP_TURN = GLB_GROUP_TURN + FUN_PERSONAL_TURN(rst("NUMBER_CARD"))
STR_NUMBER_CARD = rst("NUMBER_CARD")
Id_Go=rst.Bookmark
rst.FindFirst "CLIENT_CARDS_TBL.PARENT_CARD = '" & Str_Num & "'"
if NoMatch= False then FUN_TO_CHILDREN (STR_NUMBER_CARD)
rst.rst.Bookmark=Id_Go
rst.FindNext "CLIENT_CARDS_TBL.PARENT_CARD) = '" & Str_Num & "'"
Loop
rst.Close
Set rst = Nothing
End Function
|
| |
|
| |
|
|
|
| закладка на то мес_то, где были
спасибо конечно, но стрёмно применять код в котором разбираешся с трудом
Id_Go as string ?
и ещё мне код сказал , что у ADO - нет метода rst.FindFirst
- опять розыгрыш | |
|
| |
|
|
|
| у ADO есть метод Find - но в ADO если чесно я не силен, а английский - только после одки нормально шпрехаю.
ХЭЛП
Searches a Recordset for the row that satisfies the specified criteria. Optionally, the direction of the search, starting row, and offset from the starting row may be specified. If the criteria is met, the current row position is set on the found record; otherwise, the position is set to the end (or start) of the Recordset.
Syntax
Find (Criteria, SkipRows, SearchDirection, Start)
|
| |
|
| |
|
|
|
| Наверное не стоит открывать рекордсет в каждом вызове рекурсивной функции.
Этак можно упереться в "потолок", при большом количестве поколений.
Используйте один раз открытый рекордсет и закладки. | |
|
| |
|
|
|
| а собери пожалуйста из того , что на экране = как это должно выглядеть в функции | |
|
| |
|
|
|
| Давай я лучше свой пример покажу:
Здесь функция обновляет значения поля WithChildren (Text(255)), в котором собираются
IDItem (Long, Counter) записей через запятую (Свой +детки) , для каждой записи таблицы.
То есть, если детей нет, то только свой IDItem, если есть, то свой IDItem и IDItem-ы деток, внуков, правнуков и т.д. через запятую.
В поле IDParent (Long) - значение IDItem родителя.
Далее запросом с IN () можно будет считать суммы.
Вызывать без параметров, так: Call FillWithChildren() или просто: FillWithChildren
Должен признаться, я не специалист по деревьям и по ADO.
Возможно есть более простые решения.
Public Function FillWithChildren(Optional IDItem As Long = 0, Optional rst As ADODB.Recordset, Optional Children As String)
Dim varBmk As Variant
If rst Is Nothing Then
Set rst = New ADODB.Recordset
rst.Open "SELECT IDItem, IDParent, WithChildren FROM tblComBar ORDER BY IDItem DESC", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Do Until rst.EOF '"обNullим" поле "WithChildren"
rst(2) = Null
rst.Update
rst.MoveNext
Loop
rst.MoveFirst
Do Until rst.EOF
If Not rst.EOF And Not rst.BOF Then
varBmk = rst.Bookmark
Children = ""
If IsNull(rst.Collect(2)) Then ' Только если заранее "обNullили" поле "WithChildren" всех строк.
FillWithChildren rst.Collect(0), rst, Children
Else
Children = rst.Collect(2)
End If
rst.Bookmark = varBmk
'Debug.Print rst.Collect(0) & Children
rst(2) = rst.Collect(0) & Children
rst.Update
rst.MoveNext
End If
Loop
rst.Close
Set rst = Nothing
Else
rst.MoveFirst
Do Until rst.EOF
rst.Find "IDParent=" & IDItem
If Not rst.EOF And Not rst.BOF Then
If IsNull(rst.Collect(2)) Then
varBmk = rst.Bookmark
Children = Children & "," & rst.Collect(0)
FillWithChildren rst.Collect(0), rst, Children
rst.Bookmark = varBmk
Else
Children = Children & "," & rst.Collect(2)
End If
rst.MoveNext
End If
Loop
End If
End Function
|
| |
|
| |
|
|
|
| вот метод Find както описан
http://www.visual.2000.ru/develop/ms-vb/cp9907-2/msado1-2.htm
вот с одним RecordSet
Public Id_ As Variant, GLB_GROUP_TURN As Variant, rst As ADODB.Recordset
Public Function FUN(STR_NUMBER_CARD As String) As Integer
Set rst = New ADODB.Recordset
Id_ = "STR_NUMBER_CARD" & "," ' это строка в ней содержатся закладки для перехода - в конце зпт чтоб не морочить голову на проверку когда остается только родитель
GLB_GROUP_TURN =0 ' или что нужно
rst.Open "CLIENT_CARDS_TBL", GLB_CONNECTION, adOpenKeyset, adLockOptimistic
FUN_TO_CHILDREN (STR_NUMBER_CARD)
rst.Close
Set rst = Nothing
End Function
' пока ясно
Public Function FUN_TO_CHILDREN(STR_NUMBER_CARD As String) As Integer
' применим Find для открытого рекордсета (параметры уточнить там даже есть направление поиска)
rst.Find "CLIENT_CARDS_TBL.PARENT_CARD = '" & STR_NUMBER_CARD & "'"
' пошли по детям
Do While rst.EOF = False
GLB_GROUP_TURN = GLB_GROUP_TURN + FUN_PERSONAL_TURN(rst("NUMBER_CARD"))
STR_NUMBER_CARD = rst("NUMBER_CARD")
' сделали свое нужное
' добавили закладку дитяти
Id_ = rst.Bookmark & "," & Id_
' запустили с ним функцию
FUN_TO_CHILDREN (STR_NUMBER_CARD)
' по завершении ф-ции перешли на позицию дитяти с где был останов
rst.Bookmark = Val(Mid(Id_, 1, InStr(Id_, ",") - 1))
' удалили ID дитяти который уже найден для этого папика
Id_ = Mid(Id_, InStr(Id_, ",") + 1)
' получаем ID папика для которого нужно искать дальше
Id_Go = Mid(id, 1, InStr(Id_, ",") - 1)
rst.Find "CLIENT_CARDS_TBL.ID= '" & Id_Go & "'"
Loop
End Function
|
| |
|
| |
|
|
|
|
|
| Кстати:
Если в запросе добавить поле суммы, то вместо собирания строки ключей, можно просто считать суммы (только подумать куда их сохранять). О как. | |
|
| |
|
|
|
| всё продолжаешь грузить........... | |
|
| |
|
|
|
| 1. Если интерес к методу ADO Find не пропал, то примерно так:
rs_child.Find "parent_id=" & lngID, , adSearchForward, adBookmarkFirst
Do Until rs_child.EOF '
' ...если что-то нашли то... что-то делаете с этим, затем двигаетесь на запись вперед и продолжаете поиск
rs_child.Find "parent_id=" & lngID, 1, adSearchForward, adBookmarkCurrent
Loop
|
Если количество итераций известно, то работать Find с дитя -родитель вполне приемлемо | |
|
| |
|
|
|
| все наши проблемы в том что кто-то знает что-то о DAO, кто-то о ADO еще есть SQL и VB в их вариациях, но никто (даже сами производители) не знают полностью, исчЁ раз повторю ПОЛНОСТЬЮ ни одного из выше названного произведения.
хотя я не удивляюсь
"для того чтобы остаться на месте - нужно бежать,
для того чтобы продвинуться на шаг впред - нужно бежать в два раза быстрее"
Л. Кэролл.
|
Вот это было у нас в методичке по прогрмаммированию на С++ в место эпиграфа.
хотя скорее это эпитафия.
п.с. отошла 4-я ступень - крик души.
п.п.с. как я люблю Клиппер | |
|
| |
|
|
|
| аааааааааааа вот они для чего эти константы property
adSearchForward
Спасибо!!!!!!!!!!
Нет количес тво заранее не известно!!!!!!!!! | |
|
| |
|
|
|
| Люди, я нихрена не понял из того что тут написано. Но вопрос такой, это по созданию дерева в ветках которого таблицы и запросы базы?
Прошу громко не смеяться. | |
|
| |
|
20 Кб. |
|
| Здесь нет.
Но:
Можно рассматривать объекты сервера/базы и объекты объектов как дерево
объектов, например как в SQL Server Management Studio: | |
|
| |
|
|
|
| Круто. Видимо дерево - это то, что мне не расшифровать. | |
|
| |
|
|
|
| блин - 4-е сутки одни ....
это приме дерева с дитями и рекурсией.
я устал пиво жрать, пальы по клаве не попадают
оно должно рабатать, вашу мать, ну может почти, пише 1-й руко | |
|
| |