Hi daywalker,
nachfolgend die Funktion.
Ich übergebe ein ApprenticeServerDocument und gehe einfach die Liste der ReferencedFileDescriptors durch, prüfe auf DocumentFound und schreibe den Dateinamen in ein Dictionary da ich einen ganzen Stapel von Dateien abarbeite und mit dem gewählten Ansatz sonst permanent doppelt und dreifach checken würde (daher die Abfrage des Dictionaries am Anfang). Die Wartezeit tritt bei JEDEM Zugriff auf (Variablenzuweisung für die Anzahl, für das nächste Objekt, ...)
Private Function CheckReferences(oDoc As Inventor.ApprenticeServerDocument, oDr As IAMDocumentRepository10, Log As FILE_REPORT) As Boolean
Dim oRefDesc As Inventor.ReferencedFileDescriptor
Dim i As Long
dim lngCount as long
On Error GoTo CheckReferences_Error
CheckReferences = True
If oDoc Is Nothing Then
Exit Function
End If
Err.Clear
DoEvents
If dictFiles.Exists(oDoc.FullFileName) Then
CheckReferences = CBool(dictFiles(oDoc.FullFileName))
Exit Function
End If
lngCount=oDoc.ReferencedFileDescriptors.Count
For i = 1 To lngCount
Set oRefDesc = oDoc.ReferencedFileDescriptors(i)
Debug.Print oDoc.FullFileName, oRefDesc.FullFileName
If Not oRefDesc.DocumentFound Then
CheckReferences = False
Log.Action = "Missing"
Log.Error = True
Log.WriteLog Mid$(oRefDesc.FullFileName, InStrRev(oRefDesc.FullFileName, "\") + 1) & ": Nicht vorhanden"
Set oRefDesc = Nothing
Exit For
Else
If Not CheckReferences(oRefDesc.ReferencedDocument, oDr, Log) Then
CheckReferences = False
Log.Action = "Missing"
Log.Error = True
Log.WriteLog Mid$(oRefDesc.FullFileName, InStrRev(oRefDesc.FullFileName, "\") + 1) & ": Nicht vorhanden"
Set oRefDesc = Nothing
Exit For
End If
End If
Set oRefDesc = Nothing
Next i
dictFiles.Item(oDoc.FullFileName) = CStr(CheckReferences)
DoEvents
frmMain.Refresh
On Error GoTo 0
Exit Function
CheckReferences_Error:
CheckReferences = False
Log.Error = True
Log.Action = "CheckReferences"
Log.WriteLog Err.Description & "(" & oDoc.FullFileName & ", " & oRefDesc.FullFileName & ")"
End Function
[Diese Nachricht wurde von basti19 am 10. Dez. 2004 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP