Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Colli am 29.05.05 - 18:44:13

Titel: Anfangsschwierigkeiten
Beitrag von: Colli am 29.05.05 - 18:44:13
Hallo,

ich möchte eine Notes Datenbank erstellen und habe vorab noch ein paar Fragen, die mir zum Verständnis dienen sollen.

Eine Person A soll mit einer Maske A Informationen zu einem Seminar speichern. Alle anderen Personen können sich diese Informationen anschauen und sich über eine Aktionsschaltfläche "Seminar buchen" für ein Seminar anmelden. Ich nehme mal an, dass dann eine andere Maske geöffnet wird, hier soll das Thema des Seminars mit übernommen werden und die Personen können den Namen eintragen.

In der Maske A erscheint in einem Feld nun die Teilnehmerzahl weniger 1.
Der angemeldete Teilnehmer wird auch angezeigt.
Ich nehme an, das dies über eine eingebettete Ansicht passiert.

Wie wird nun aber der Teilnehmer einem bestimmten Seminar / dem Dokument zugeordnet?


Wie ich das am besten realisiere, weiß ich nicht zu 100 %.
Vielleicht kann mir jemand helfen.

Danke


Titel: Re: Anfangsschwierigkeiten
Beitrag von: TMC am 29.05.05 - 18:55:55
Wie wird nun aber der Teilnehmer einem bestimmten Seminar / dem Dokument zugeordnet?

Das könntest Du über Haupt- und Antwortdokumente lösen.

Siehe hierzu auch: AtNotes BP: Das Arbeiten mit Haupt- und Antwort-Dokumenten (http://www.atnotes.de/index.php?topic=13984.0)
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Colli am 30.05.05 - 11:28:22
Danke, das hat mir schon etwa geholfen.
Ich habe Feldwerte in das Antwortdokument übertragen können.

Ich habe eine Ansicht erstellt, wo ich die Antworten anzeigen lasse. Dieses habe ich in die Maske A eingebettet. So kann man die Teilnehmer, die das Seminar buchen sofort sehen.

ABER:
In der Ansicht mit den einzelnen Seminaren, stehe die Antworten auch drin, zwar unsichtbar, aber sie sind da. Kriegt man die irgendwie ausgeblendet?

In der Ansicht mit den Antworten, stehen alle drin, auch die mit einem anderen Thema. Kann man die Ansicht irgendwie trennen? Soll heißen, wenn ich mir ein Seminar anschaue, dann will ich auch nur Teilnehmer dieses Seminars sehen.
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Axel am 30.05.05 - 12:13:10
ABER:
In der Ansicht mit den einzelnen Seminaren, stehe die Antworten auch drin, zwar unsichtbar, aber sie sind da. Kriegt man die irgendwie ausgeblendet?

 ??? ???
Verstehe ich nicht so ganz. Wieso willst du was ausblenden, was gar nicht angezeigt wird?


In der Ansicht mit den Antworten, stehen alle drin, auch die mit einem anderen Thema. Kann man die Ansicht irgendwie trennen? Soll heißen, wenn ich mir ein Seminar anschaue, dann will ich auch nur Teilnehmer dieses Seminars sehen.

Wenn ich das richtige verstehe, hast du die Ansicht in die Maske eingebettet. Dann kannst du mit der Option "Einzelne Kategorie anzeigen" festlegen, das nur die Antworten zu dem aktuellen Dokument angezeigt werden. Dafür musst du zum Einem die Ansicht anpassen, und zwar das in der ersten Spalte (muss kategorisiert sein, Spaltenformel: @Text($Ref) ) die ID des dazugehörigen Hauptdokuments. angezeigt werden. Bei der eingebetteten Ansicht trägst du bei der Option "Einzelne Kategorie anzeigen" die Formel @Text(@DocumentUniqueID) ein.

Axel
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Colli am 30.05.05 - 14:47:38
Ich habe alles genau so gemacht wie du beschrieben hast, aber ich bekomme in der eingebetteten Ansicht nur eine weiße Fläche ohne Inhalt.
Im Designer sehe ich die Antwortdokumente, aber was mich wundert ist, dass die erste Spalte, die ich eingefügt habe,

Zitat
und zwar das in der ersten Spalte (muss kategorisiert sein, Spaltenformel: @Text($Ref)

"Nicht kategorisiert" anzeigt. Muss das so sein?
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Axel am 30.05.05 - 14:56:30
Hi,

bei den Ansichten-Eigenschaften muss der Haken bei "Antwortdokumente hierarchisch anzeigen" raus. Die Option findest du auf den i - Reiter im eigenschaftsdialog.


Axel
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Colli am 30.05.05 - 15:07:36
Ok, in der Ansicht im Designer, sehen ich jetzt die ID, aber in den anderen Spalten ist nichts da.

In der eingebetteten Ansicht in Notes ist immernoch nur eine weiße Fläche, die erste Spalte ist richtigerweise nicht da.
Ich kann aber die erste Zeile anklicken und es öffnet sich ein Antwortdokument.
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Axel am 30.05.05 - 15:14:19
Hi,

in den anderen Spalten musst du dann die Felder der Antwortmaske eintragen, die du angezeigt haben willst. Der Haken "Nur Antworten..." in den Spalteneigenschaften darf nicht gesetzt sein.

Ich hab dir auf die Schnelle mal eine kleine Demo zusammengestrickt. Ich denke mal damit wird's etwas klarer.

"Eine Datenbank sagt mehr als tausend Worte"   ;D

Axel
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Colli am 30.05.05 - 15:21:39
Vielen Dank, dass du soviel Geduld mit mir hast.
Ich hatte die anderen Felder als Spalten schon angelegt, aber ein Häkchen zuviel "Nur Antworten anzeigen".
Das habe ich entfernt und schwupps, sieht alles Klasse aus.

Zu dieser Datenbank, die ich gerade erstelle, werde ich sicher noch mehr Fragen haben.

Also bis bald
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Colli am 30.05.05 - 17:36:00
Und schon gehts weiter ...

Ich habe nun eine Liste mit Teilnehmern und ich habe ein Feld, dass die maximale Teilnehmerzahl angibt.
Wie kann ich es realisieren, dass ein berechnetes Feld "freie Plätze", den Wert aus "maximale Teilnehmer" minus der angemeldeten Teilnehmer errechnet?

Und um es auf die Spitze zu treiben. Wenn keine freien Plätze mehr da sind, dann sollte es nicht mehr möglich sein sich für ein Seminar anzumelden.


 ??? ??? ???
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Axel am 30.05.05 - 21:00:48
Hi,

mal so ins Blaue hinein gedacht wäre folgendes möglich:

Wenn eine neue Seminarbuchung ageschlossen wird, d.h. ein Antwortdokument wird gespeichert, dann muss im dazugehörigen Hauptdokument das "Freie Plätze"-Feld um eins verringert werden.
Das kann beim Speichern des Antwort-Dokumentes passieren.

Aber Achtung!! Es darf pro Teilnehmer nur genau ein Antwortdokument geben, des weiteren musst du verhindern, dass bei weiteren Speichern-Vorgängen jedesmal das "Freie Plätze"-Feld verändert wird. Am besten ist es, dass Bearbeiten der freien Plätze davon abhängig zu machen, ob es ein neues Dokument ist.
Desweiteren musst du beim Löschen der Antwort-Dokumente aufpassen, dass dabei auch die freien Plätze entsprechend angepasst werden.

Das bei einem ausgebuchten Seminar keine weitere Buchung erfolgen soll, ist relativ einfach machbar. Dafür solltest du die Buchung nur über eine Aktion aus dem Seminar-Dokument erlauben. Dann kann du üvber die Hide-When - Formel die Aktion verstecken, wenn die freien Plätze den Wert 0 haben. Oder du musst beim Anlegen zuerst die freien Plätze prüfen.

Alles in allem ist das Ganze nicht ganz so trivial, denn es gibt dabei eine ganze Menge zu beachten, dass das Ganze einigermaßen wasserdicht wird.


Axel
 
Titel: Re: Anfangsschwierigkeiten
Beitrag von: koehlerbv am 31.05.05 - 00:00:53
Trivial ist es wirklich nicht - und mit @functions auch nicht wasserdicht hinzubekommen.

Aber zum Trivialen:
Die Buchung kann sowieso nur über das Seminardokument erfolgen (sinnvollerweise).
- mit @dbColumn auf eine Ansicht mit den Anmeldungen nach Seminarmerkmalen (und sei es die UNID des Seminar-Dokuments) bekommt man eine Liste aller Tochterdokumente
- mit @Elements kann man deren Anzahl ermitteln
Das ganze kann nur bei neuen Dokumenten ausgeführt werden, da ansonsten eine Editierung bei ausgebuchten Seminaren auch unmöglich wird.

Ich hoffe aber, das ganze wird nix produktives, Colli. Für eine Übung aber durchaus denkbar, wenn auch offensichtlich noch schwierig für Dich.

Bernhard
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Colli am 31.05.05 - 07:28:40
Es soll auf jedenfall was produktives werden.
Sicher ist es auch noch zu schwierig für mich, da ich erst seit ein paar Wochen Notes-Datenbanken erstelle und so etwas war noch nicht dabei.
Aber ich habe Zeit und werde es versuchen.

Natürlich hoffe ich auch auf eure Hilfe. ;)
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Axel am 31.05.05 - 08:24:06
Natürlich hoffe ich auch auf eure Hilfe. ;)

Klar kannst du auf unsere Hilfe hoffen und du bekommst sie auch. Nur erwarte keine fertigen Lösungen von uns.


Axel
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Colli am 31.05.05 - 11:49:16
OK, denken wir mal nicht ganz soweit und noch nicht ganz so Sicherheitsbewusst.

Wenn man die Anzahl der Dokumente in der eingebetteten Ansicht ermittelt und in einem Feld "belegte Plätze" speichert. (Das Feld kann ja unsichtbar sein) Dann müsste es doch möglich sein die maximale Teilnehmerzahl minus der belegten Plätze zu rechnen und dies im Feld "freie Plätze" speichern.

Ist das einfacher umzusetzen?

Die eingebette Ansicht hat zwei Spalten: die Erste sortiert und kategorisiert @Text($Ref) und die Zweite einen Feldwert aus der Maske
Titel: Re: Anfangsschwierigkeiten
Beitrag von: koehlerbv am 31.05.05 - 12:38:47
Wie das funktioniert, hatte ich schon geschrieben. Das Speichern der bisherigen Teilnehmerzahl im Seminardokument ist dabei obsolet.

Bernhard
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Colli am 31.05.05 - 13:06:10
In einem anderen Beitrag hatte ich dieses Ansatz gelesen.
Nach deiner Meinung ist das eher ungebräuchlich?

Code
_Lookup:=@DbLookup("Notes":"NoCache";"";"(Schulung\Teilnehmerliste)";"Schlüssel";2);
@If(
  @IsError(_Lookup);
     0;
  @Elements(_Lookup)
)

Unabhängig davon weiß ich nicht was unter Schlüssel zu verstehen ist!
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Axel am 31.05.05 - 13:23:05
Hi,

damit dir @DbLookup war zurückliefern kann, muss die Funktion ja erst mal wissen nach was sie suchen soll. Als "Schlüssel" wird dieser Suchbegriff der Funktion übergeben und damit wird in der angegebenen Ansicht in der ersten Spalte gesucht. Damit das Ganze funktioniert, muss die Ansicht in der ersten Spalte sortiert oder kategorisiert sein.

Wenn du die Teilnehmeranzahl im Seminardokument spieichern willst, dann ist das eine der möglichen Alternativen.

Was Bernhard gemeint hat (glaube ich zumindest), ist, dass es nur für das Prüfen, ob noch eine Buchung angelegt werden darf oder nicht, es nicht notwendig ist die Teilnehmeranzahl zu speichern. Das kann auch vor dem Anlegen einer Buchung passieren. Wenn noch freie Plätze vorhanden sind, wird eine Buchung angelegt, sonst wird mit einer Meldung abgebrochen.



Axel
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Colli am 31.05.05 - 13:30:25
Ob überhaupt eine Buchung angelegt werden darf, ist mir noch etwas hoch.

Daher will ich es erstmal nur hinkriegen, dass ich die freien Plätze sehen kann.

Ich habe hinter das Feld "belegte Plätze" folgendes geschrieben:

Code
_Lookup:=@DbLookup("Notes":"NoCache";"";"(Schulung\Teilnehmerliste)";"ID";2);
@If(
  @IsError(_Lookup);
     0;
  @Elements(_Lookup)
)
Aber ich bekomme immer nur 0 zurückgeliefert.

ID ist der Titel der ersten Spalte in meiner eingebetteten Ansicht und diese ist auch kategorisiert und sortiert. Damit sollte der Suchbegriff doch definiert sein, oder?
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Axel am 31.05.05 - 13:35:26
Hi,

du darfst hier nicht den Titel der Spalte angeben, sondern einen Wert.

Wenn du das in einem Feld in der Seminarbeschreibung machst, muss die Formel so aussehen:

_Lookup:=@DbLookup("Notes":"NoCache";"";"(Schulung\Teilnehmerliste)"; @Text(@DocumentUniqueID) ;2);
@If(
  @IsError(_Lookup);
     0;
  @Elements(_Lookup)
)


Axel
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Colli am 31.05.05 - 13:42:45
Ich bekomme immernoch 0 zurückgeliefert.

Kommando zurück:

Es geht. Ich hatte Probleme mit dem Namen der Ansicht. Aus (Schulung\Teilnehmerliste) hatte der immer (SchulungTeilnehmerliste) gemacht, das kann dann ja nicht funktionieren.
Aber mit "Teilnehmerliste" klappt es.  :)

Titel: Re: Anfangsschwierigkeiten
Beitrag von: Colli am 31.05.05 - 17:44:02
Das Problem mit den ausgebuchten Seminaren habe ich nun so gelöst, dass die Aktion "Seminar buchen" nur dann ausgeführt wird, wenn "freie Plätze" größer 0 sind. Das Antwortdokument lässt sich also nicht mehr öffnen, wenn keine freien Plätze mehr da sind.

Aber eins noch:
Das Feld "belegte Plätze" soll sich automatisch aktualisieren, wenn sich jemand angemeldet hat, oder jemand gelöscht wurde. Das macht es bisher noch nicht.

Das funktioniert nur, wenn man das Dokument zum Bearbeiten öffnet und Speichert, dann ist die aktuelle Teilnehmerzahl drin.

Aber es muss doch auch möglich sein, die Zahlen irgendwie anders aktuell zu halten.
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Axel am 31.05.05 - 18:51:11
Das Antwortdokument lässt sich also nicht mehr öffnen, wenn keine freien Plätze mehr da sind.

Was heißt das Antwortdokument... ?

Gibt es pro Seminar nur ein Antwortdokument oder pro Teilnehmer.

Aber eins noch:
Das Feld "belegte Plätze" soll sich automatisch aktualisieren, wenn sich jemand angemeldet hat, oder jemand gelöscht wurde. Das macht es bisher noch nicht.

Das funktioniert nur, wenn man das Dokument zum Bearbeiten öffnet und Speichert, dann ist die aktuelle Teilnehmerzahl drin.

Aber es muss doch auch möglich sein, die Zahlen irgendwie anders aktuell zu halten.

Erinnere dich, was ich weiter oben geschrieben habe. Das Ganze ist nicht trivial. Mit der Formelsprache kommst du hier auf keinen Fall weiter. Hier musst du mit den Backend-Funktionen von LotusScript arbeiten.

Beim Anlegen einer neuen Antwort kannst du dir z.B. mit der Eigenschaft ParentDocumentUNID aus der Klasse NotesDocument die ID des Hauptdokuments (Seminar-Dokument) beschaffen und dann anhand dieser ID dir einen Zugriff auf das Dokument ermöglichen und somit kannst du dann auch die Felder manipulieren, ohne das das Dokument geöffnet sein muss.

Beim Löschen muss du einen ähnlichen Weg gehen. Vom markierten Antwort-Dokument wieder die ParantDocumentID auslesen und so das Feld "Freie Plätze" aktualisieren.

In der Designer-Hilfe findest du die Klassen NotesDatabase, NotesDocument usw. und viele Beispiele wie die Eigenschaften und Methoden der Klassen anzuwenden sind.

Axel
 
Titel: Re: Anfangsschwierigkeiten
Beitrag von: Colli am 31.05.05 - 19:28:08
Zitat
Zitat einfügen
Zitat von: Colli am Heute um 17:44:02
Das Antwortdokument lässt sich also nicht mehr öffnen, wenn keine freien Plätze mehr da sind.

Was heißt das Antwortdokument... ?

Gibt es pro Seminar nur ein Antwortdokument oder pro Teilnehmer.

Es gibt schon ein Dokument pro Teilnehmer. Ich meinte, dass die Maske, mit der man die Antwort erstellen kann, nicht mehr geöffnet werden kann.


Ich werde mich morgen mal mit LotusScript beschäftigen.
Danke erstmal dafür