Domino 9 und frühere Versionen > ND8: Entwicklung

NotesDocumentCollection as Rückgabewert nicht möglich?

(1/2) > >>

m3:
Liebe Kolleginnen und Kollegen,

kann mir bitte jemand erklären, warum die von der Funktion zurückgelieferte NOtesDocument Collection immer leer ist?
Ich steh derzeit auf der Leitung.  ???



--- Code: ---Option Public
Option Declare



Sub Initialize()
Dim dc As NotesDocumentCollection
Set dc = getCol()
If( dc Is Nothing) Then
MsgBox "NotesDocumentCollection ist NOTHING"
Else
MsgBox CStr(dc.Count) & " Einträge gefunden"
End If

End Sub


Private Function getCol () As NotesDocumentCollection
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim dc2 As NotesDocumentCollection

Set db = New NotesDatabase("", "names.nsf")
If( Not db.IsOpen ) Then
Call db.Open("","")
End If
Set view = db.GetView("($People)")
Set dc2 = view.Getalldocumentsbykey("", False)
Print "Found in Function getCol: " & CStr( dc2.Count ) & "<"
Set getCol  = dc2
End Function
--- Ende Code ---

koehlerbv:
Deine NotesDocumentCollection basiert ja auf NotesDatabase - die ist aber private in Deiner Funktion. Du musst also die NotesDatabase für Deine NotesDocumentCollection bereits der Function übergeben.

Bernhard

Thomas Schulte:
Ja weil sonst schlägt der Garbage Collector von Lotus Script zu.

ascabg:
Hallo,

Und wenn er die Collection, die zurueckgegeben werden soll nicht als Rueckgabewert liefert, sondern die zu fuellende Collection als Parameter an die entsprechende Funktion/Prozedur uebergibt.

Parameter werden doch, wenn nichts anderes angegeben wird mittels "ByRef" uebergeben.


--- Code: ---Sub Main
  Dim col As NotesDocumentCollection

  Call GetDocuments(col)
End Sub

Sub GetDocuments(colGet As NotesDocumentCollection)
  Dim ses As New NotesSession
  Dim db As NotesDatabase
  Dim vw As NotesView

  Set db = ses.CurrentDatabase
  If db.IsOpen Then
    Set vw = db.GetView("Name")
    If Not vw Is Nothing Then
      Set colGet = vw.GetAllDocumentsByKey("Key", True)
    End If
  End If
End Sub

--- Ende Code ---

In dem Fall sollte bei Main die Collection nach erfolgreichem Aufruf der Prozedur GetDocuments doch noch vorhanden sein.


Andreas

koehlerbv:
Da ist aber auch die Garbage Collection davor, Andreas. Das Objekt NotesDatabase muss bereits in der aufrufenden Routine definiert werden.

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln