Domino 9 und frühere Versionen > Entwicklung

Überprüfung, ob String leer

<< < (2/4) > >>

bienmaja:
Oh Hilfe!
Hört sich das kompliziert an...

@Meff
ich habe eine Maske und will vorm Spiechern überprüfen, ob das Feld gefüllt ist, oder nicht.
Und wenn nicht, dann soll er sich melden und nicht speichern...

Habe da aber jetzt was anderes gefunden... @return...

Nochmals vielen Dank!

manuel:
Hi Marion!

Du bist warscheinlich von der Formel gewohnt, dass du Felder einfach nur mit dem Namen ansprichst, also zB "Kurzbeschreibung". Beim Script funktioniert das aber anders. Hier brauchst du eine Funktion, um den beliebigen Feldwert auzulesen. In deinem Fall:

Function testen As Integer
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument

If  uidoc.FieldGetText("Kurzbeschreibung") = "" Then  
      testen = 1
Else  
 testen=0
End If
End Function


In den ersten drei Zeilen wird also zuerst ein Objekt erzeugt (uidoc), dies repräsentiert dein gerade geöffnetes (Frontend-)dokument. Mit der Funktion FieldGetText wird anschließend der Wert von Kurzbeschreibung abgefragt.

Alles klar?

lg
Manuel

Rob Green:
für Validierungen gibt es 2 Wege:

1. Über die Feld-"Validierung"
Formel ins Feld bei Validierung:
@if(Feld="";@failure("HALT, IST SICH LEER");@success)

Bricht beim Speicherversuch mit dieser Meldung ab aber (und das ist der Nachteil) bei jedem Rekalkulieren des Dokumentes. Wenn Du also die Maske auf "autom. berechnen" hast und 100 Felder mit 100 Validierungsformeln hast, dann...*rofl* Deine User werden gemeinsam in Dein Büro stürmen....*malt sich das Horrorszenario bildlich aus*

2. Weg: ins QuerySave Event der Maske diese "Formel":

 Dim workspace As New NotesUIWorkspace
 Dim uidoc As NotesUIDocument
 Dim Feld As String
 Dim Feld2 as String
 Set uidoc = workspace.CurrentDocument
 
Feld = uidoc.FieldGetText( "Name_Des_Feldes" )
if Feld = "" Then
msgbox "HAALT, FELD IST LEER"
continue = false
exit sub
end if

Feld2 = uidoc.FieldGetText( "Name_Des_Nächsten_Feldes" )
if Feld2 = "" Then
msgbox "HAALT, FELD2 IST LEER"
continue = false
exit sub
end if

etc...

das continue=false unterbindet den Speichervorgang und per msgbox bringt man dem User eine Fehlermeldung. Durch das Exit Sub wird, auch wenn weitere Fehler entdeckt würden, der User häppchenweise mit der Nase auf seine Fehler gestoßen.
Nervt gut und erzieht gut   :D

Treczoks:
Wenn es wirklich nur darum geht, ob ein Feld beim Abspeichern leer ist oder nicht, dann ist eine @Formula hier einfacher, besser, schneller:

In der  Eingabevalidierung des Feldes einfach folgende Formel eingeben:

@if( Kurzbeschreibung="";@failure("Sie haben keine Kurzbeschreibung angegeben");@Success)

Das wäre alles, und es setzt auch noch den Cursor in das Feld, um den Fehler direkt zu berichtigen.

Wenn da natürlich irgendwelche verqueren Zusatzbedingungen dranhängen (ich hatte mal einen Fall, da musste mit Script gearbeitet werden, um die Liste in einem Feld Item für Item abzuklappern, es ging einfach nicht mit @Formula), dann wird das ganze bitterböse kompliziert.

Wipe:
Hallo bienmaja,

Schreibe Doch einfach bei der Eingabevaledierung des Feldes die Formel hinein:

@If(Feldname != ""; @Success; @Failure("Bitte geben Sie einen Wert ein"))

Gruss
Bubble  ;)

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln