Domino 9 und frühere Versionen > ND8: Entwicklung
PROMPT_OKCANCELCOMBO mit variablem Inhalt
Bruce Willis:
--- Zitat von: Peter Klett am 09.08.12 - 07:00:24 ---Habe Dir in dem Script auch noch einiges an Optimierungspotential übrig gelassen.
--- Ende Zitat ---
Ich finde ihn doch perfekt, ein Beispiel für Designer Hilfe! :)
Oder meinst Du, noch welche Überprüfungen einbauen?
--- Zitat von: Peter Klett am 09.08.12 - 07:00:24 ---Probier z.B. mal aus, was passiert, wenn eines der Felder leer ist
--- Ende Zitat ---
Funktioniert einwandfrei!
Sogar wenn drei Felder leer sind.
:knuddel:
--- Code: ---Sub Click(Source As Button)
'08.08.2012 Neu! Elegantere und sogar EINSTUFIGE Version !!!
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim response, response1 As Variant 'User zweimal fragen
Dim myKey As String 'Schlüssel für die Suche nach szDok
Dim view As NotesView
Dim entry As NotesViewEntry
Dim docEntry As NotesDocument
Set db=session.CurrentDatabase
Set dc=db.unprocessedDocuments
Set doc=dc.GetFirstDocument
Dim values(3) As Variant
values(0) = "vHa"
values(1) = "nHa"
values(2) = "vVe"
values(3) = "nVe"
'Variable Listen-Zuweisung
Dim NEWvalues As Variant
Dim count As Integer
'Redim NEWvalues (15) 'es könnten nicht nur 4x4 sondern 4x5 Einträge geben, daher unten ersetzt
Redim NEWvalues (19)
Forall v In values
Forall vv In doc.GetItemValue (v)
NEWvalues (count) = v & "-" & vv
count = count + 1
End Forall
End Forall
If count > 0 Then
Redim Preserve NEWvalues (count - 1)
End If
Do While Not doc Is Nothing
response = ws.Prompt (PROMPT_OKCANCELCOMBO, _
"Servicezeit am " & doc.Datum(0) & ": ", "Bitte Funktion auswählen", NEWvalues(0), NEWvalues)
If Isempty (response) Then
Messagebox "Abgebrochen", , "Nichts ausgewählt"
Exit Sub
Else
'Msgbox Left(Strleft(response1," - "),14), ,"SZ-Dok öffnen für " & doc.Datum(0) & _
'" " & response
myKey = doc.Datum(0) & "-" & Strleft(response," - ") 'neu
End If
'Das gesuchte szDok finden und öffnen
Set view = db.GetView("szCalendarVollAlle") 'alle szDoks
Call view.Refresh
Set entry = view.GetEntryByKey(MyKey, False) 'das gesuchte szDok finden
If entry Is Nothing Then
Msgbox "Leider nicht gefunden!",,myKey
Exit Sub
End If
Set docEntry = entry.Document 'vom gefundenen Entry zum eigenen Dokument wechseln
Call ws.EditDocument(True,docEntry) 'das gesuchte szDok ins Frontend überführen und öffnen
Set doc=dc.GetNextDocument(doc)
Loop
Call ws.ViewRefresh
Call view.Refresh
End Sub
--- Ende Code ---
Peter Klett:
1. Wenn z.B. vHa leer ist, bekommst Du in der Auswahlliste einen Eintrag "vHa -", deshalb sollte vv (also jeder einzelne Wert in den 4 Items) auf Inhalt überprüft werden.
2. Die Redim Preserve-Nummer am Ende war unsauber. Wenn alle Einträge gefüllt sind, braucht kein Redim Preserve ausgeführt zu werden (ok, die halbe Millisekunde, die Du sparst, macht den Kohl nicht fett), aber wenn kein Eintrag auswählbar ist, könnte man das Script auch gleich abbrechen.
--- Code: ---Forall v In values
Forall vv In doc.GetItemValue (v)
If vv <> "" Then
NEWvalues (count) = v & "-" & vv
count = count + 1
End If
End Forall
End Forall
If count <= Ubound (NEWvalues) Then
If count = 0 Then
Msgbox "nix zu tun", 16, "Fehler"
Exit Sub
Else
Redim Preserve NEWvalues (count - 1)
End If
End If
--- Ende Code ---
P.S.: Dass man mir Pingeligkeit nachsagt, ist nur ein dummes Gerücht ;)
Bruce Willis:
Hi Peter,
--- Zitat von: Peter Klett am 09.08.12 - 15:46:57 ---1. Wenn z.B. vHa leer ist, bekommst Du in der Auswahlliste einen Eintrag "vHa -", deshalb sollte vv (also jeder einzelne Wert in den 4 Items) auf Inhalt überprüft werden.
--- Ende Zitat ---
Ah, Du meinst daaaaas... :)
Ich dachte, es sei nicht schlimm, da man diese halb-leeren Einträge als Separator zwischen den s.g. "Funktionen" betrachten könnte... ;)
--- Zitat von: Peter Klett am 09.08.12 - 15:46:57 ---2. Die Redim Preserve-Nummer am Ende war unsauber...
--- Ende Zitat ---
Oh, nochmals vielen Dank!
Und ein schönes Wochenende!
Gruß
Leo
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln