Autor Thema: Bekomme bei Funktion String statt Variant geliefert  (Gelesen 1037 mal)

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
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
« Letzte Änderung: 19.06.06 - 07:37:21 von Bille »
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Bekomme bei Funktion String statt Variant geliefert
« Antwort #1 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

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
Re: Bekomme bei Funktion String statt Variant geliefert
« Antwort #2 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
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz