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