Hallo Bernhard, hallo Markus,
Wow, da habe ich ja was losgetreten. Ein NotesDocument und eine NotesView haben zunächst einmal gar nichts miteinander zu tun. Aber NotesDocument benötige ich, wenn ich an die Items will, die in der View angezeigt werden. Das Prinzip der Vererbung verstehe ich ja - glaube ich zumindest, aber meiner Meinung darf es bei der Deklaration keinen Unterschied geben. Offensichtlich ist ein Unterschied, ob ich mein Objekt im Funktionsaufruf deklariere, also
Sub Funktion (docTmp as Notesdocument)
End Sub
oder innerhalb einer Funktion, also
Sub Funktion
Dim docTmp as Notesdocument
End Sub
Macht Euch bitte nicht so viel Mühe. Ich habe es jetzt umgeschrieben es läuft. Aber wenn es euch interessiert, ich wette, es funktioniert auch bei Euch nicht, wenn ihr folgendes probiert.
call Test (nothing)
Sub Test (docTmp es Notesdocument)
Dim uiws as new notesuiworkspace
Dim viewCheck as notesview
Set viewCheck = uiws.currentview.view
Set docTmp = viewCheck.GetFirstDocument
if docTmp is nothing then
Print "er hat Recht"
else
Print "er ist doch zu doof, dass zu verstehen"
endif
End Sub
Vielen Dank & viele Grüße
Markus
Für Interessierte - ich versuche mal meinen Gedankengang ein wenig ausführlich zu beschreiben, wie es überhaupt zu dieser Situation gekommen ist:
Um weitere Umbauarbeiten in der Datenbank zu vermeiden, habe ich die Funktion erweitert, um zwei Anwendungsfälle abzubilden, die eigentlich gar nichts mit einander zu tun haben.
Ich hatte bereits eine Funktion, die die Neuberechnung durchführt, nämlich die Version "Alle Dokumente in einer bestimmten View".
Nun kam ein Berechnungssimulator dazu und verschiedene Stati, die in diversen Views dargestellt wurden. Da ich die Funktionsaufrufe eh anpassen mußte, habe ich den Funktionsaufruf gleich um zwei Parameter erweitert, nämlich ....
- Fall 1: eine View berechnen. Dafür übergebe nur den Namen, des Rest konnte die Funktion ja schon.
- Fall 2: übergebe ein bestimmtes Dokument und berechne. Konnte die Funktion bisher nicht.
Nach der Erweiterung hatte ich jetzt zwei NotesDocument deklarationen.
a) einmal die aus Fall1: da ich ja an die Dokumente in der View wollte. Besagtes Set docCheck = view.GetFirstDocument
b) neu aus Fall 2: das übergebene neuzuberechende Dokument Sub Ber... (docCheck as NotesDokument, ...)
damit hatte ich zweimal docCheck as Notesdocument deklariert.
Ok, dachte ich mir in meinem jugendlichen Leichtsinn. Lösche das Dim docCheck as Notesdocument aus Fall 1, da ja docCheck jetzt über die Funktionsparameter deklariert wird.
Und dieser Fall führte ohne weitere Codeänderung dazu, dass jetzt "plötzlich" das Set docCheck = view.GetFirstDocument vor der While Schleife IMMER nothing zurücklieferte. Wirklich Immer. Und erst, wenn ich das NotesDocument innerhalb der Funktion mittels DIM deklariere, liefert mir GetFirstDocument das erste Dokument zurück.
Und meine tiefste innere Überzeugung ist, dass GetFirstDocument nach wie vor richtig arbeitet, aber das Rückgabeergebnis meinem Objekt nicht zuweisen kann - weil es als Funktionsparameter definiert wurde?