Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Fitz am 23.02.07 - 08:45:19

Titel: Feld auf leeren Inhalt prüfen
Beitrag von: Fitz am 23.02.07 - 08:45:19
Hallo Notesfreunde,

ich möchte für alle User zentral eine Mailsignatur vorgeben. Dazu habe ich im Forum schon viele Hinweise und Scriptbeispiele gefunden. Meine Vorgehensweise ist nun folgende. Ich hinterlege im öffentlichen Adressbuch unter dem Reiter Verschiedenes -> Webseite die Signatur des Users. Mit dem Script im Postopen der Inbox kopiere ich die Signatur in das CalendarProfile.

Ich habe nur noch ein "kleines" Problem. Wenn keine Signatur im Feld Website vorhanden ist, wird die bestehende Signatur trotzdem überschrieben. Wie kann ich das Feld Website auf leeren Inhalt prüfen?

Danke für Infos :-)

Gruß
Bernd


Server R6.5.5FP1
Clients R5.12/6.5.5



Sub Postopen(Source As Notesuiview)
   
   Dim dbPAB As NotesDatabase    
   Dim dbNAB As NotesDatabase
   Dim nnUserName As NotesName
   Dim viewPeople As NotesView
   Dim docPerson As NotesDocument
   Dim session As NotesSession
   Dim dbCurrent As NotesDatabase
   
   Dim db As NotesDatabase
   Dim docCalenderProfile As NotesDocument
   Dim itemSignature As NotesItem
   
   Set Session = New NotesSession
   Set dbCurrent = session.CurrentDatabase
   
   ' pruefe ob die enames.nsf lokal auf der Workstation vorhanden ist
   ' enames.nsf ist eine Replik des Server Adressbuchs
   Set dbNAB = session.GetDatabase("", "enames.nsf")
   If dbNAB.IsOpen = False Then Goto Serverpruefung
   
   'Messagebox "enames.nsf der lokalen Workstation wird verwendet",,"ChangeSignaturPruefung"
   
   Goto ChangeSignatur
   
Serverpruefung:
   
   'pruefe ob die names.nsf auf dem Server vorhanden ist
   Set dbNAB = session.GetDatabase(dbCurrent.Server, "names.nsf")
   If dbNAB.IsOpen = False Then Goto FinishFunction
   
   'Messagebox "names.nsf vom SERVER wird verwendet",,"ChangeSignaturPruefung"
   
ChangeSignatur:
   
   'Messagebox "ChangeSignatur wird ausgeführt",,"ChangeSignaturPruefung"
   
   ' ermittle das Personendokument des aktuell angemeldeten Users
   ' wenn keine Personen gefunden wurde, dann beende die Funktion
   Set viewPeople = dbNAB.GetView("($VIMPeople)")
   Set nnUserName = New NotesName(session.UserName)
   Set docPerson = viewPeople.GetDocumentByKey(nnUserName.Abbreviated)
   If docPerson Is Nothing Then Goto FinishFunction
   
   ' lese Feld Website aus dem Personendokument aus   
   VorgabeSignatur = docPerson.Website
   
' --> wie kann ich das Feld auf leeren Inhalt prüfen?
' ein If VorgabeSignatur = "" oder If Isempty(VorgabeSignatur) = True then .... geht nicht  :-(


   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set docCalendarProfile = db.GetProfileDocument("CalendarProfile")
   Set itemSignature = docCalendarProfile.GetfirstItem("Signature_1")
   
   ' Setze Signatur bei jedem neuen Mail in das Memo Feld
   'docCalendarProfile.EnableSignature = "1"
   
   docCalendarProfile.SignatureOption = "1"
   docCalendarProfile.Signature_1 = VorgabeSignatur
   
   Call docCalendarProfile.Save(False, False)
   Call docCalendarProfile.ComputeWithForm(True,False)
   
FinishFunction:
   
End Sub
Titel: Re: Feld auf leeren Inhalt prüfen
Beitrag von: klaussal am 23.02.07 - 08:47:19
VorgabeSignatur = docPerson.Website(0)
Titel: Re: Feld auf leeren Inhalt prüfen
Beitrag von: Fitz am 23.02.07 - 10:33:44
Hallo,

Danke für den Tipp :-) Ich habe nun folgendes eingebaut und es geht

   ' wenn Feld Website ist leer dann verlasse die Funktion
   If docPerson.Website(0) = "" Then Goto FinishFunction :-)

Nur noch eine Frage: was hat das (0) für eine Bedeutung? Ich administriere hauptsächlich Notes und erstelle "einfache" Datenbanken, daher ist meine Lotus Script Erfahrung nicht sehr tief :-(

Gruß
Bernd
Titel: Re: Feld auf leeren Inhalt prüfen
Beitrag von: DAU-in am 23.02.07 - 10:37:08
Der Rückgabewert ist ein Array uind mit der 0 sprichst du das erste (einzige) Element an
Titel: Re: Feld auf leeren Inhalt prüfen
Beitrag von: klaussal am 23.02.07 - 10:39:49
Zitat
If docPerson.Website(0) = "" Then Goto FinishFunction

If Trim(docPerson.Website(0)) = ""  ist besser.
Titel: Re: Feld auf leeren Inhalt prüfen
Beitrag von: dirk_2909 am 23.02.07 - 11:34:40
Zitat
If Trim(docPerson.Website(0)) = ""  ist besser.

Noch besser wäre:

Code
if Trim( docPerson.getItemValue( "Website" )( 0 ) ) = "" Then 

Ist performanter  8)  ;D
Titel: Re: Feld auf leeren Inhalt prüfen
Beitrag von: klaussal am 23.02.07 - 11:47:41
Zitat
Ist performanter 

0,5 msec gespart ?
Titel: Re: Feld auf leeren Inhalt prüfen
Beitrag von: dirk_2909 am 23.02.07 - 11:49:28

Zitat
0,5 msec gespart ?

Ja. ungefähr  8) ;)

Aber bei 100 Feldern ?!  ;D

Und ein weiterer Vorteil: Man kann den Feldnamen "berechnen" /dynamisch gestalten etc. ....
Titel: Re: Feld auf leeren Inhalt prüfen
Beitrag von: klaussal am 23.02.07 - 12:01:11
OK, überzeugt  ;)
Titel: Re: Feld auf leeren Inhalt prüfen
Beitrag von: Fitz am 23.02.07 - 12:33:45
Danke an alle....

> Der Rückgabewert ist ein Array uind mit der 0 sprichst du das erste (einzige) Element an

wieder was gelernt :-)

Gruß
Bernd