Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: Lionhead am 19.02.19 - 09:36:41

Titel: Datenbank für Botendienst - Prüfroutine
Beitrag von: Lionhead am 19.02.19 - 09:36:41
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
Titel: Re: Datenbank für Botendienst - Prüfroutine
Beitrag von: Peter Klett am 19.02.19 - 09:48:57
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
Titel: Re: Datenbank für Botendienst - Prüfroutine
Beitrag von: Tode am 19.02.19 - 09:53:19
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 )

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 )

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...
Titel: Re: Datenbank für Botendienst - Prüfroutine
Beitrag von: Lionhead am 20.02.19 - 11:03:58
Vielen Dank für die schnellen Lösungsvorschläge.

Gruß
Dieter