@Klaussal
... im QuerySAve gibt es dann ein Problem mit dem Exit Function - denn da hast du eine Sub...
... ich validiere am Liebsten vor dem Speichern - also im QuerySave.
... die Liste aller Felder und deren Bezeichnung lege ich in 2 Arrays ab
... diese beiden Listen arbeite ich dann in einer Funktion ab
... die Rückgabe der Funktion ist ein String
... ... der String ist leer, wenn keine Fehler gefunden wurden
... ... ansonsten enthält er die Liste der Feldbezeichnungen, die leer waren
... in der Funktion wird eine Variable iFirst den Index des ersten falschen Feldes angeben - zu diesem Feld wird nach Abbruch der Speicherung der Cursor geführt.
' Den folgenden Code ins QuerySave der Maske
Dim docThis As NotesDocument
Dim sField( 0 To 1 ) As String
Dim sFName( 0 To 1 ) As String
Dim sResult As String
Dim iFirst As Integer
sField( 0 ) = "Subject"
sFName( 0 ) = "Betreff"
sField( 1 ) = "SendTo"
sFName( 1 ) = "Empfänger"
Set docThis = Source.Document
sResult = ValidateFields( docThis , sField , sFName , iFirst )
If sResult = "" Then
Print "... alles in bester Ordnung ausgefüllt"
Else
Msgbox sResult , 0 , "Abbruch der Speicherung"
ws.CurrentDocument.GoToField( sField( iFirst ) )
Continue = False
End If
Function ValidateFields( docThis As NotesDocument, vField As Variant , vFName As Variant , iFirst As Integer) As String
Dim vValue As Variant
Dim i As Integer
' # Validierung der Feldinhalte im Backend
iFirst = -1
If Not docThis Is Nothing Then
If Isarray( vField ) And Isarray( vFName ) Then
If Ubound( vField) = Ubound( vFName ) And Lbound( vField) = Lbound( vFName ) Then
For i = Lbound( vField ) To Ubound( vField )
vValue = docThis.GetItemValue( vField( i ) )
If Trim( vValue( 0 ) ) = "" Then
ValidateFields = ValidateFields + vFName( i ) + Chr(10)
If iFirst = -1 Then
iFirst = i
End If
End If
Next
If ValidateFields <> "" Then
ValidateFields = "Folgende Felder enthielten keine Werte:" + Chr(10) + Chr(10) + ValidateFields + Chr(10) + Chr(10) + "Bitte geben Sie in diesen Feldern etwas ein"
End If
End If
End If
End If
End Function
... das wäre mal so ein kleiner Rund-Um-Schlag...
ata