Domino 9 und frühere Versionen > Entwicklung
Werte aus Spalten abfragen und prüfen, aber wie??
Glombi:
Hallo Belgarion,
pro Auftrag gibt es ein Dokument, oder? Falls ja, kannst Du das wie folgt machen:
Im QuerySave oder PostRecalc:
Hole Dir in eine Collection alle Aufträge, die er an dem Tag hat. Dazu eine Ansicht machen, die in der ersten sortierten Spalte folgende Formel hat:
Annahme: Datum des Auftrags steht im Feld Datum, Name des Mitarbeiter im Feld Mitarbeiter
@Text(Datum) + Mitarbeiter
In der Zugriffsformel nur die Dokumente anzeigen, die tatsächlich berücksichtigt werden sollen. D.h. bspw., keine stornierten oder in Arbeit.
SELECT Form = "Auftrag" & (Status != "storniert" | Status != "In Arbeit")
Weiter....
Annahme: Feld für "Produkt" = Produkt
dim ws as New NotesUIWorkspace
dim uidoc as NotesUIDocument
set uidoc = ws.CurrentDocument
dim thisdoc as NotesDocument
set thisdoc = uidoc.Document
dim session as New NotesSession
dim db = session.CurrentDatabase
dim view as NotesView
set view = db.GetView("hier der Viewname von oben")
dim dc as NotesDocumentCollection
dim doc as NotesDocument
dim ze_zaehler as Integer
ze_zaehler = 0
CONST MAX_ZE = 6
dim key as string
key = cstr(thisdoc.Datum(0)) & thisdoc.Mitarbeiter(0)
set dc = view.GetAllDocumentsByKey(key,true)
set doc = dc.GetFirstDocument
while not (doc is nothing)
if doc.UniversalID <> thisdoc.UniversalID then
select case doc.Produkt(0)
case "Produkt 1":
ze_zaehler = ze_zaehler + 1
case "Produkt 2":
ze_zaehler = ze_zaehler + 2
case "Produkt 3":
ze_zaehler = ze_zaehler + 3
end select
end if
set doc = dc.GetNextDocument(doc)
wend
if ze_zaehler > MAX_ZE then
msgbox "Der Mitarbeiter hat bereits Aufträge für " & cstr(MAX_ZE) & " Zeiteinheiten!"
continue = false
end if
Mit doc.UniversalID <> thisdoc.UniversalID wird verhindert, dass das aktuelle Dokument bei der Summierung der anderen Aufträge mit berücksichgt wird.
Eleganter wäre das ganze noch, wenn Du bereits in der Auftragsmaske die ZE berechnest. Dann kannst Du Dir den Select case... Teil schenken,
also wenn die ZE im Feld "ZE" stehen, sähe das so aus:
set doc = dc.GetFirstDocument
while not (doc is nothing)
if doc.UniversalID <> thisdoc.UniversalID then
ze_zaehler = ze_zaehler + doc.ZE(0)
end if
set doc = dc.GetNextDocument(doc)
Ich hoffe, das hilft Dir weiter
Gruß
Andreas
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln