Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Bille am 18.06.06 - 13:05:14

Titel: Bekomme bei Funktion String statt Variant geliefert
Beitrag von: Bille am 18.06.06 - 13:05:14
Hallo!

Mit folgendem Code lasse ich mir aus einer Ansicht den Feldinhalt "UNID" des Dokuments holen:
Code
Dim AkteID As Variant
	AkteID = SY_DBLookup(db.filepath, "(KreditaktenKdNr)",doc.Kundennummer(0),"UNID")
	If AkteID(0) = "" Then
		Msgbox("Es existiert keine Kreditakte zur angegebenen Kundennummer!"), 64, "Hinweis"
		Exit Sub
	End If
Funktion:
Code
Function SY_DbLookup( Datenbank As String, Ansicht As String, Suchbegriff As String, Feldname As String ) As Variant
	.
	.
	.
	Set DOK = VIEW.GetDocumentByKey( Suchbegriff, True )
	If DOK Is Nothing Then
		SY_DbLookup = ""
		Exit Function
	End If
	
	SY_DbLookup = DOK.GetItemValue( Feldname )
End Function

Sofern der Suchbegriff in der Ansicht gefunden wird, funktioniert alles wunderbar.
Das Ergebnis von AkteID ist ein Variant, die If-Abfrage wird durchlaufen.
Wird der Suchbegriff aber nicht gefunden, enthält AkteID nur den String "", bei der If-Abfrage erscheint daher der Fehler "Variant enthält keinen Container".

Wie kann ich meine Funktion dahingehend ändern, dass mir bei der Zeile
SY_DbLookup = ""
ebenfalls ein Variant zurückgegeben wird?

Gruß
Bille
Titel: Re: Bekomme bei Funktion String statt Variant geliefert
Beitrag von: koehlerbv am 18.06.06 - 13:19:16
Du führst eine Result-Variable ein und belegst sie initial vor:

Code
Function SY_DbLookup( Datenbank As String, Ansicht As String, Suchbegriff As String, Feldname As String ) As Variant

Dim aResult (0) As String

aResult (0) = ""
.
.
.
Set DOK = VIEW.GetDocumentByKey( Suchbegriff, True )
If DOK Is Nothing Then
SY_DbLookup = aResult
Exit Function
End If

SY_DbLookup = DOK.GetItemValue( Feldname )
End Function

Auf diese Art und Weise gehst Du auch konform für den Fall, dass das Dokument zwar gefunden, aber das auszulesende Item gar nicht existiert.

HTH,
Bernhard
Titel: Re: Bekomme bei Funktion String statt Variant geliefert
Beitrag von: Bille am 18.06.06 - 13:24:43
Vielen Dank Bernhard! Es funktioniert natürlich einwandfrei.
Schon wieder was gelernt heute!

schönen Sonntag noch
Bille
 :D