Domino 9 und frühere Versionen > ND9: Entwicklung
Datenbank für Botendienst - Prüfroutine
(1/1)
Lionhead:
Hallo,
ich habe eine einfache Datenbank für Botendienste. Diese funktioniert so, dass bei einem Transport ein Dokument mit Angabe des Datums, des Absenders, des Empfängers, dem transportierten Gegenstand sowie dem Namen des Boten erstellt wird. Der Empfang wird in der DB bestätigt.
Der Transport wird von mehreren (wechselnden) Boten durchgeführt. Es dürfen jedoch maximal 3 Boten gleichzeitig zur Ablieferung unterwegs sein. Genau da liegt für mich die Herausforderung.
Ich hätte mir dazu als Ansatz ein Statusfeld im Dokument überlegt:
Sobald eine Fahrt eingetragen wird, bekommt das Dokument den Status „Zustellung“. Nach der
Zustellungsbestätigung des Empfängers wird dieser auf „zugestellt“ geändert. Es müsste daher bei Erstellung eines neuen Dokuments geprüft werden, ob bereits drei Dokumente mit dem Status „Zustellung“ vorhanden sind und mit einem Hinweis quitiert werden.
Ich weiß jetzt aber nicht, wie ich das so überprüfen kann. Vielleicht gibt es aber auch einen anderen (besseren) Lösungsvorschlag.
Leider kenne ich mich mit Lotus Script nicht so gut aus. Ich fürchte aber, das wird nur mit einem Script gehen....
Grüße
Dieter
Peter Klett:
In Formelsprache holst Du Dir mit einem @DBLookup aus einer Ansicht die zugehörigen Zustellungsdokumente, das Ergebnis überprüfst Du mit @Elements, das ist die Anzahl der gefundenen Elemente
Tode:
Das geht sehr einfach mit LotusScript oder auch mit Formelsprache. Wichtig: Du musst sicherstellen, dass alle auf der selben Replik arbeiten, sonst geht das nicht.
Mit Formelsprache würde ich ein "Botenzähler"- Dokument erstellen, das per @SetDocField aktualisiert wird, wenn ein Dokument den Status ändert.
Also:
1. Ansicht "LkpAllByStatus", kategorisiert nach Status
2. Ansicht "LkpCounter": Enthält nur das Botenzähler- Dokument, 1. Spalte: @Text( @DocumentUniqueID ), 2. Spalte: Counter
Dann die Formel zum zurückschreiben (z.B. im PostSave- Event):
--- Code: ---_botenLkp := @DBColum( "" : "NoCache" ; @DBName; "LkpCounter" ; 1 );
@If( @IsError( _botenLkp ) | _botenLkp = "" ; @Return( @Prompt( [ok] ; "FEHLER" ; "Zählerdokument existiert nicht" ) ) ; "" )
_botenUnid := @Subset( _botenLkp ; 1 );
_lkpCount := @DBLookup( "" : "NoCache" ; @DBName ; "LkpAllByStatus"; "Zustellung" ; 2 );
_count := @If( @IsError( _lkpCount ) | _lkpCount = "" ; 0 ; @Elements( _lkpCount ) );
@SetDocField( _botenUnid ; "Count" ; _count )
--- Ende Code ---
Und dann beim in einer Eingabevalidierung eines Feldes sowas wie:
--- Code: ---_botenLkp := @DBColum( "" : "NoCache" ; @DBName; "LkpCounter" ; 2 );
@If( @IsError( _botenLkp ) | _botenLkp = "" ; @Return( @Prompt( [ok] ; "FEHLER" ; "Zählerdokument existiert nicht" ) ) ; "" )
@If( _botenLkp >= 3 ; @Failure( "Bereits 3 Boten unterwegs" ) ; @Success )
--- Ende Code ---
Mit LotusScript geht das natürlich viel eleganter, aber die Lernkurve ist auch höher...
EDIT: Peter hat mit seiner einfachen Vorgehensweise vollkommen recht... Die Sache mit dem Counter- Dokument ist natürlich quatsch und übermässig kompliziert...
Lionhead:
Vielen Dank für die schnellen Lösungsvorschläge.
Gruß
Dieter
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln