Domino 9 und frühere Versionen > ND6: Entwicklung
Prüfen, ob Array leer ist
sja:
Hallo zusammen,
werde sehr dankbar für jede Hilfe.
In folgendem Script sollen Mails gesendet werden, wenn Arrays an(1 To 4) bzw. kopie(1 To 2) nicht leer sind. Wie man sieht im Script, prüfe ich nur erste Element, aber es kann sein, dass erstes Element zwar leer ist aber weitere Elemente nicht leer sind.
Meine Frage: gibt es im LotusScript eine Funktion zur Überprüfung gesamtes Array's, ohne jedes Element des Array's zu überprüfen?
Dim an(1 To 4) As String
Dim kopie(1 To 2) As String
Function MailSenden()
Projekt = PymDoc.GetItemValue("KundenProjektTitel")(0)
Kunde= PymDoc.GetItemValue("KundenName")(0)
Betreff = "PYM -> " & Projekt &" -> Letzter Update vor " & nTagen & " Tagen"
Text = "Sie werden darauf hingewiesen, dass das Projekt '" & Projekt & "' beim Kunden '" & Kunde & "' in den letzen " & nTagen & " Tagen nicht aktualisiert worden ist. " _
& Chr(13) & "Bitte prüfen Sie, ob das Projekt noch die aktuelle Situation wiedergibt." & Chr(13) & "Vielen Dank" & Chr(13)
status = PymDoc.ProjektStadium(0)
VB = PymDoc.VFVB(0)
SE = PymDoc.VFSE(0)
VL = PymDoc.VFVL(0)
TL = PymDoc.VFTL(0)
If status = "Presales" Then
'********************PRESALES********************
'*** 21 ***
If nTagen = "21" Then
Prior = "2"
an(1) = VB
'*** 28 ***
Elseif nTagen = "28" Then
Prior = "1"
an(1)= VB
kopie(1) = SE
'*** 35 ***
Elseif nTagen = "35" Then
Prior = "1"
an(1)= VB
kopie(1) = SE
kopie(2) = VL
'*** 42 ***
Elseif nTagen = "42" Then
Prior = "1"
an(1)= VB
an(2)= VL
an(3)= TL
kopie(1) = SE
End If
'********************POSTSALES********************
Else
'*** 21 ***
If nTagen = "21" Then
Prior = "1"
an(1) = SE
kopie(1) = VB
'*** 28 ***
Elseif nTagen = "28" Then
Prior = "1"
an(1) = SE
an(2) = TL
kopie(1) = VB
'*** 35 ***
Elseif nTagen = "35" Then
Prior = "1"
an(1) = VB
an(2) = SE
an(3) = TL
kopie(1) = VL
'*** 42 ***
Elseif nTagen = "42" Then
Prior = "1"
an(1) = VB
an(2) = SE
an(3) = VL
an(4) = TL
End If
'***************************************************
End If
If Not ((an(1) = "") And (kopie(1) = "")) Then
Set MailDoc = New NotesDocument(db)
MailDoc.Form = "Memo"
MailDoc.Subject = Betreff
MailDoc.SendTo = an
MailDoc.CopyTo = kopie
Set rtitem = New NotesRichTextItem( MailDoc , "Body" )
Call rtitem.AppendText( Text )
Call rtitem.AddNewLine( 1 )
Call rtitem.AppendDocLink( PymDoc, Projekt)
MailDoc.Importance = Prior
MailDoc.Send(False)
End If
Erase an
Erase kopie
End Function
Danke im Voraus
Sofia
koehlerbv:
Hier musst Du tatsächlich jedes Element einzeln prüfen. Es lohnt sich auf jeden Fall, sich für sowas eine universelle Prüfroutine zu schreiben, die Skalare und Arrays unabhängig von ihrer Dimension prüft - sowas braucht man immer wieder.
In Deinem Spezialfall könntest Du es Dir höchstens dadurch erleichtern, dass Du in einem ErrorHandler die Fehlersituation abfängt, dass Notes keine Empfänger findet (ist irgendeine 4000er Fehlernummer, musst mal in den entspr. .lss schauen).
Bernhard
sja:
Hi Bernhard,
vielen Dank für schnelle Antwort.
Ich habe gerade die Funktion IsEmpty gefunden, aber wie ich verstanden habe, wird die nur für Variant. Weiss jemand, ob man die Funktion auch für Array verwenden kann?
koehlerbv:
Das nützt Dir nur etwas, wenn der Wert tatsächlich nicht initialisiert ist.
Dim vTest as Variant
If IsEmpty (vTest) then
Messagebox "EMPTY"
End if
gibt Dir die Messagebox aus.
Wenn Du allerdings ein Array hast, welches bereits initialisiert wurde, dann gilt die Bedingung nicht mehr. Ausserdem ist auch ein Leerstring NICHT empty.
HTH,
Bernhard
Hernan Cortez:
Wenn ich das richtig verstehe und wie Bernhard im Prinzip bereits gesagt hat:
Ein Array ist ja eigentlich ein Container für andere (hm. sagen wir) Objekte wie String, ints, NotesDocument oder was auch immer.
Wenn die Prüfung auf isEmpty ergibt, dass er nicht empty ist, kann das trotzdem heissen, dass der Array Elemente enthält, die sehr wohl empty sind.
Dieses Thema begegnet dir aber bei anderen Programmiersprachen auch.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln