• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Работа с функциями

A

Akupaka

вообще, не понял зачем тебе переприсваивать объект RecordSet'а...
ты его один раз получил, а затем ходишь по нему курсором... т.е. вызываешь методы MoveFirst и Find, работая, при этом, с текущей записью...
в общем, мое имхо, ты некорректно используешь RecordSet...
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
эх.... а ты попробуй сделать рекурсию с одним рекордсетом. у меня не получилось
 
D

dobozy

при возвращении из рекурсии теряются данный из входящего параметра

А можно уточнить, что это значит?
Объект соотвествует последним изменениям в листе рекурсивного дерева?
Если так, то эффект очевиден, вы работаете с одним и тем же объектом, так как создавая новую переменную вы присваиваете её ссылку на один и тот же объект.
А если просто оперировать параметром фильтрования? Т.е. параметр только стринг фильтра. Вернулись из рекурсии переприсвоили локальный Find и работаете дальше.
 
A

Akupaka

эх.... а ты попробуй сделать рекурсию с одним рекордсетом. у меня не получилось
просто, тебе надо правильно организовать работу с рекордсетом,
возможно, и рекурсии не надо даже...
если работаешь в рекурсии то надо организовать алгоритм возвращения к записи рекордсета в текущем вызове функции, т.е. перед входом в рекурсию у тебя есть вызов RS.Find, перед этим вызовом необходимо "запомнить" текущую запись, чтобы после рекурсивного вызова вернуться к этой записи. как именно это сделать, я не подскажу, к примеру, можно выполнить тот же RS.Find по нужному ключу...
тогда это будет приблизительно так:

Код:
'	если родитель отсутствует - то создаем
If RefOUDoc Is Nothing Then

Dim TmpRec As Variant
Set TmpRec = OUInfo

dim curOrgUnidId
curOrgUnidId = OUInfo( "OrgUnitID" ).Value

TmpRec.Find "OrgUnitID = '" + Trim( OUInfo( "OrgUnitREFID" ).Value ) + "' "

CreateOU = CreateOU( TmpRec )

Set OUInfo = OURecordSet

Set RefOUDoc = OUView.GetDocumentByKey( "ID_" + Trim( OUInfo( "OrgUnitREFID" ).Value ), True ) '!!!!!!!!!!!!!!!!!!!!!!!!!!!

TmpRec.Find "OrgUnitID = '" + curOrgUnidId + "' "
End If

если я правильно понял что где хранится :)

зы: только я не убирал переприсваивание рекордсетов, вообще то без него должно быть...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!