Поиск объектов в системе управления файлами с помощью цикла - PullRequest
0 голосов
/ 11 октября 2019

Кто-нибудь может объяснить, почему этот код не работает правильно? Если я запускаю это, используя каждую ячейку отдельно, она работает нормально. Однако, когда я запускаю его в цикле, он работает для первого объекта, но затем он продолжает давать 0 в качестве результата.

Мой код ищет объекты в нашей системе управления файлами.

Поэтому, если я удалю функциональность цикла, добавьте значение ячейки вместо cel.Value, используя ThisWorkbook.Sheets("Sheet").Range("B3").Value или ThisWorkbook.Sheets("Sheet").Range("B4").Value или ThisWorkbook.Sheets("Sheet").Range("B5").Value, и запускайте код, нажимая кнопку каждый раз, когда он работает правильно (я получаю сообщение "На каждом клике было по 1 объекту). Когда я запускаю его как есть, я получаю: «Было 1 объект», затем «Было 0 объектов», «Было 0 объектов»

Вот мой код:

'set range
Dim myrng: Set myrng = ThisWorkbook.Sheets("Sheet").Range("B3:B5")

Dim cel
'loop through each cell in range
For Each cel In myrng

        ' ObjectType
        oExp.DataStatusValueType = MFilesAPI.MFStatusTypeObjectTypeID
        oTV.SetValue MFDatatypeLookup, 305
        oSearchCondition.Set oExp, MFConditionTypeEqual, oTV
        oSearchConditions.Add -1, oSearchCondition

        ' Class
        Set oSearchCondition = CreateObject("MFilesAPI.SearchCondition")
        oExp.DataPropertyValuePropertyDef = MFilesAPI.MFBuiltInPropertyDefClass
        oTV.SetValue MFDatatypeLookup, 177
        oSearchCondition.Set oExp, MFConditionTypeEqual, oTV
        oSearchConditions.Add -1, oSearchCondition

        ' Object has the same name
        Set oSearchCondition = CreateObject("MFilesAPI.SearchCondition")
        oExp.DataPropertyValuePropertyDef = MFilesAPI.MFBuiltInPropertyDefNameOrTitle
        oTV.SetValue MFDatatypetext, cel.Value ' Here it is
        oSearchCondition.Set oExp, MFConditionTypeEqual, oTV
        oSearchConditions.Add -1, oSearchCondition

        ' Object is not deleted
        Set oSearchCondition = CreateObject("MFilesAPI.SearchCondition")
        oExp.DataStatusValueType = MFilesAPI.MFStatusType.MFStatusTypeDeleted
        oTV.SetValue MFDatatypeBoolean, False
        oSearchCondition.Set oExp, MFConditionTypeEqual, oTV
        oSearchConditions.Add -1, oSearchCondition

        ' Execute the search
        Dim oObjectSearchResults As MFilesAPI.ObjectSearchResults
        Set oObjectSearchResults = oVault.ObjectSearchOperations.SearchForObjectsByConditions(oSearchConditions, MFSearchFlagNone, False)

        MsgBox ("There were " & oObjectSearchResults.Count & " objects")

Next

1 Ответ

0 голосов
/ 11 октября 2019

Хорошо, так с подсказкой от PeterT мне удалось заставить его работать, добавив это в конец кода:

        Set oObjectSearchResults = Nothing
        Set oSearchConditions = Nothing
        Set oSearchCondition = Nothing
        Set oExp = Nothing
        Set oTV = Nothing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...