Domino 9 und frühere Versionen > Entwicklung

Werte aus Spalten abfragen und prüfen, aber wie??

<< < (3/3)

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