Hallo allerseits,
in einer Ansicht mit bearbeitbaren Spalten reagiert Notes in meinen Augen völlig unklar und uneinheitlich.
Diese Beispielansicht hat vier Spalten, von denen die ersten drei Spalten bearbeitbar sind. In der dritten Spalte soll kein freier Text eingegeben werden, sondern es soll sich eine Dialogbox öffnen, über die aus einer vorgegebenen Liste zulässiger Werte der gewünschte Wert ausgewählt werden kann.
Die bearbeitbaren Spalten heißen in diesem Beispiel "Position", "Art" und "LK". Die nicht bearbeitbare Spalte haben ich "Text" genannt. In dieser Reihenfolge sind die Spalten auch in der Ansicht positioniert.
Das InViewEdit-Ereignis ist folgendermaßen codiert:
Sub Inviewedit(Source As Notesuiview, Requesttype As Integer, Colprogname As Variant, Columnvalue As Variant, Continue As Variant)
Const QUERY_REQUEST = 1
Const VALIDATE_REQUEST = 2
Const SAVE_REQUEST = 3
Const NEWENTRY_REQUEST = 4
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim v_LK As Variant
Dim Kennzeichen(2) As String
If Source.CaretNoteID = "0" Then Exit Sub
Set db = session.CurrentDatabase
Set doc = db.GetDocumentByID(Source.CaretNoteID)
Kennzeichen(0) = "Kennzeichen 1"
Kennzeichen(1) = "Kennzeichen 2"
Kennzeichen(2) = "Kennzeichen 3"
Select Case Requesttype
Case QUERY_REQUEST
For i= 0 To Ubound(Colprogname)
Select Case Colprogname(i)
Case "LK"
v_LK = workspace.Prompt(PROMPT_OKCANCELLIST, "LK", "Bitte wählen Sie das LK aus:",, Kennzeichen)
Call doc.ReplaceItemValue("LK", v_LK)
Call doc.Save(True, False)
Call workspace.ViewRefresh
Continue = False
Exit Sub
End Select
Next
Case VALIDATE_REQUEST
For i= 0 To Ubound(Colprogname)
Select Case Colprogname(i)
Case "Position"
If Fulltrim(Columnvalue(0)) <> "" Then
If Isnumeric(Fulltrim(Columnvalue(0))) = False Then
Msgbox "Position ist nicht numerisch.", 0 + 16, "Fehler"
Continue = False
Exit Sub
End If
End If
Case "Art"
If Fulltrim(Columnvalue(0)) <> "A" And Fulltrim(Columnvalue(0)) <> "B" Then
Msgbox "Die Art muss A oder B lauten.", 0 + 16, "Fehler"
Continue = False
Exit Sub
End If
End Select
Next
Case SAVE_REQUEST
For i= 0 To Ubound(Colprogname)
Select Case Colprogname(i)
Case "Position"
Call doc.ReplaceItemValue("Position", Fulltrim(Columnvalue(0)))
Case "Art"
Call doc.ReplaceItemValue("Art", Fulltrim(Columnvalue(0)))
End Select
Next
'Änderungen im Dokument speichern
Call doc.Save(True, False)
Call workspace.ViewRefresh
End Select
End Sub
Das funktioniert soweit so gut. Problem ist nur:
1.Springt man in der Ansicht von der Spalte "Art" in die Spalte "LK" durch Drücken der Tab-Taste öffnet sich - wie gewünscht - die Dialogbox, auch die Auswahl eines Wertes ist möglich, aber wenn die Auswahl in der Dialogbox mit [OK] bestätigt wird, schließt Notes das Script mit der Fehlermeldung "Operation wurde auf Ihre Anforderung hin gestoppt" ab.
Klickt man dagegen direkt mit der Maus auf das Feld dieser Spalte, erscheint die Fehlermeldung nicht.
Wie kriege ich nun diese Fehlermeldung weg?
Anmerkung: Die Dialogbox_Funktion habe ich im Requesttype "QUERY_REQUEST" untergebracht, um zu verhindern dass sich das jeweilige Feld dieser bearbeitbaren Spalte für freie Eingaben, die nicht angenommen werden sollen, öffnet.
2.Das folgende Problem habe neulich schon hier im Forum ohne Erfolg gepostet (
http://atnotes.de/index.php/topic,47994.0.html). Da es gerade zum Thema passt, beschreibe ich es hier nochmal: Wird in den Spalten "Position" und "Art" ein falscher Wert (wie unter VALIDATE_REQUEST definiert) eingegeben, gibt Notes nach der selbst programmierten abschließend immer eine eigene Fehlermeldung aus "Fehler beim Validieren des Spaltenwerts".
Auch diese Fehlermeldung würde ich gern vermeiden.
Falls jemand irgendetwas zu diesen Problemen weiß, für Ratschläge und Hinweise bin ich sehr dankbar!
Viele Grüße
Thorsten