Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Jeremias am 01.04.08 - 13:05:23
-
Hallo,
liebe Notes Gemeinde:
ich bin zur Zeit ziemlich sauer auf Lotus Notes. >:(
Hintergrund:
Eine Ansicht soll alle Aufträge anzeigen, wo der Kunde in der EU sitzt. Im Auftrag gibt es aber kein Flag EU und ich werde es auch ganz bestimmt nicht setzten!
Dafür steht nämlich das Land des Kunden sehr wohl im Auftrag und eine andere Ansicht zeigt genau nur die Länder der EU an.
Folgender Ansatz müsste also klappen:
In der Ansichtsauswahl eine Liste mit den Ländern der EU erzeugen und dann einfach das Land des jeweiligen Auftrag/Kunden auf Mitgliedschaft prüfen.
Wie kann man nun so eine Liste erzeugen? (Das ist der Knackpunkt)
1. Hier sollte dbcolumn das Mittel der Wahl sein, was Notes aber an dieser Stelle nicht erlaubt :( (echt besch...)
2. Man baut die Liste lokal von Hand auf á la [liste := "a":"b":"c"...] , sowas machen aber nur Leute die auch alten Menschen über die Strasse helfen, die gar nicht wollen!
3. ?
Es kann doch nicht angehen, dass man für so eine simple Sache gleich wieder ein neues Item im Auftrag benötigt, welches die EU Zugehörigkeit markiert. Das ist doch echt unnötig, zumal die Information ja schon längst vorhanden ist, und zwar im Länderdokument. Also wie bekomme ich in meiner Ansichtsauswahl diese Liste möglichst elegant aufgebaut? Habe schon überlegt, ob man da was in den Globals der Ansicht machen könnte, worauf man dann zugreift...
Hat jemand da ne Idee ?
Mfg
Jeremias M.
-
Jeremias - Notes ist sauer auf Dich. So wird ein Schuh daraus, denn Du hast Notes nicht verstanden. Notes ist eine (u.a.) eine dokumentorientierte Datenbank und kein relationales System - darum kannst Du damit auch Dinge tun, die in der anderen Welt eben nicht funktionieren.
Das, was Du erreichen willst, ist mit Notes aber nicht machbar - in Ansichten kannst Du nur anzeigen (oder die Auswahl bestimmen), was in den Dokumenten auch vorhanden ist.
Ohne "EU-Flag" geht da also nichts. Punktum.
Bernhard
-
...
Das ist doch echt unnötig, zumal die Information ja schon längst vorhanden ist, und zwar im Länderdokument.
...
Man merkt das Du relationale Datenbanken gewöhnt bist.
Möglicherweise hat man Dir auch erklärt die Daten müssten immer automar sein.
Auf dem Trip war ich auch mal vor 10 Jahren.
Deine Aussagen und Thesen zu Notes zeugen von fehlender Erfahrung und könnten einigen hier sauer aufstossen.
Normalerweise haben Domino Admins zumindestens rudimentäre Entwicklererfahrung. Frage mal in Deiner Firma nach, ob die Admins Dirdie Grundprinzipien von Notes erklären können.
-
Hallo Jeremias,
wenn du das Flag EU im Auftrag "bestimmt nicht setzen willst", dann wirst du die Ansichtsformel der Länderansicht, die dir die EU-Länder anzeigt, in deine Auftragsansicht als Ansichtsauswahl übertragen müssen. Und immer schön beide nachpflegen, wenn mal wieder ein neuer Beitrittskandidat aufgenommen wurde.
Sonst kann es passieren, daß Notes und du nicht zueinanderkommen.
Gruß
Norbert
-
Moin,
@Bernhard: Hätte ich nicht bereits selber vom "EU-Flag" im Auftrag gesprochen, wäre Deine "Anmache" á la "Du hast Notes nicht verstanden" vielleicht noch gerechtfertigt. Allerdings wäre der Stil dann immer noch nicht korrekt...
Was ich hauptsächlich ausdrücken wollte, dass ich trotzdem Notes dokumentorientiert ist und nicht relational (was ich sehr wohl verstanden habe), überflüssige Redundanz vermeiden will! Wer das nicht tut, ist in meinen Augen ein schlechter Programmierer. Auch in Lotus Notes.
Oft habe ich hier schon Kniffs gefunden, womit eine Sache dann doch eleganter zu lösen war, als vorerst angenommen. Schade dass es in diesem Fall so unkonstruktiv gelaufen ist.
bis denne
Jeremias M.
-
Jeremias,
Schade dass es in diesem Fall so unkonstruktiv gelaufen ist.
wer so im ersten Post so wie Du herumpoltert, muss sich aber nicht wundern, wenn es dann so läuft.
Andreas
-
Und ausserdem hat Bernhard sowohl mit seiner Aussage, als auch mit der Art wie er dich anmacht recht.
Du schreibst selber:
Eine Ansicht soll alle Aufträge anzeigen, wo der Kunde in der EU sitzt. Im Auftrag gibt es aber kein Flag EU und ich werde es auch ganz bestimmt nicht setzten!
Dir wird also nicht anderes übrig bleiben, als deiner alten Dame zu Fuß über die Strasse zu helfen, sprich die Liste der EU Länder als Liste manuell in deine Selectformel einbauen.
So häufig passiert es ja nun wirklich nicht das neue Länder in die EU eintreten.
Und funktionieren tut das deswegen nicht weil du damit einen permanenten Trigger gegen den Indexer aufbauen würdest.
Das wäre ein ähnliches Debakel wie die Verwendung @today oder @now in Ansichten.
-
Warum steht das Länderkennzeichen eigentlich nicht im Kundenstamm ?
Ich würde das zu den Stammdaten zählen wie z.Bsp. PLZ, Ort, usw...
So steht in jedem (!!) Auftrag drin, dass der Kunde aus XX-Land kommt......
-
... mit etwas Phantasie und und halb so viel gepolter lässt sich das ganz leicht lösen:
Nimm alle europäischen Länder in einem Profildokument zur Datenbank auf. Dieses Profildokument liefert dir dann die Liste der Länder, die erlaubt sind für die Auswahl - oder wo ist das Problem?
Zum Bestücken der Liste im Profildokument kannst du einen periodischen Agenten, oder was auch immer verwenden...
Toni
-
Aber auf ein Profildokument kann man doch nicht in einer Ansichtsauwahl zugreifen, oder? Dann braucht man einen Mechanismus, der bei Änderungen dieses Profildokumentes die betroffenen Ansichten anpasst. Und da Änderungen an der EU-Zusammensetzung ja nicht so häufig sind, halte ich das sogar noch für vertretbaren Aufwand. Ein nettes Feature wäre hier nur, dass man die Änderungen mit zukünftiger Wirkung erfassen kann.
-
... Asche über mein Haupt - Profildokument geht nicht in Selektionsformeln:
This function does not work in column, hide-when, section editor, or view selection formulas. You can use it in toolbar buttons or agents
... dann wäre da aber die Notes.ini - was sicher nicht die Beste Lösung wäre - aber die geht...
Toni
-
... ein weiterer Ansatz ist, daß die Selektionsformel dieser Ansicht per Agent aktualisiert werden könnte - dann wäre die Liste der Länder in der Ansichtsauswahl fest verdrahtet...
Toni
-
Die NOTES.INI geht auch nicht, Toni - @Environment ist auch nicht zulässig ...
Bernhard
-
@Toni: Das war das, was ich in meinem Posting meinte. Ich glaube auch nicht, dass das zu schwer zu implementieren wäre. Kommt natürlich darauf an, wie flexibel man den Mechanismus haben möchte...
-
Wäre nicht auch eine eingebettete Ansicht mit der Option "Einzelne Kategorie anzeigen" eine eventuelle Alternative. Dann kann man auswählen für welches Land man die Einträge angezeigt haben will.
Axel
-
Die NOTES.INI geht auch nicht, Toni - @Environment ist auch nicht zulässig ...
... da zeigt sich die Praxis aber anders - ich habe das so in einer Datenbank verbaut... :-\ ::)
Toni
-
Hallo an alle,
vielleicht ist mein erstes Posting doch etwas emotional gewesen.
Ja, ich gestehe aus der relationalen Welt zu stammen und das ständige Erweitern von Masken um zusätzliche Items, versetzt mir jedesmal ein Stich ins Herz. Zumindest wenn es dabei um Flags für temporäre oder selten benötigte Ansichten geht.
Sehr gerne verfolge ich aber die jetzt diskutierten Ansätze. Habe leider gerade keine Zeit die Vorschläge auszuprobieren, werde es aber nachher nachholen.
Mfg
Jeremias M.
-
vielleicht ist mein erstes Posting doch etwas emotional gewesen.
Hallo Jeremias,
das passt schon. Und eine steife Brise vertreibt schnell alle Wolken ;)
Ich würde an Deiner Stelle wir folgt vorgehen:
- Sicherstellen, dass ich alle Stellen, an denen Dokumente erstellt / modifiziert werden können, kenne
- In einem Setup-Dokument (oder Setup-Dokumenten) die Zugehörigkeit zur EU kennzeichnen. Vorteil von Setup-Dokumenten pro Land: Wenn jemand auf die Idee kommen sollte, dass auch die NAFTA beispielsweise gekennzeichnet werden soll oder ... Man kann dann gleich reagieren.
- Beim Speichern der Dokumente die "Zugehörigkeit" kennzeichnen. Hierbei am besten gleich berücksichtigen, dass das Item auch eine Liste beinhalten könnte. Siehe oben: Wenn noch jemand Schengen oder die NATO berücksichtigen will ... Oder Länder der Eurozone ...
- Einen Agent schreiben, der - manuell angeworfen - die Zugehörigkeit setzt. Vielleicht muss ja 2009 Kroatien ergänzt werden. Die Türkei - wenn überhaupt - wohl eher erst in 15 Jahren. Bosnien-Herzegowina, Albanien, Mazedonien - das steht noch vollkommen in den Sternen. Ein dauerndes Update ist also vollkommen unnötig.
Der Umbau wird so im Rahmen der Umstände "minimalinvasiv".
HTH,
Bernhard
-
Lieber Jeremias,
gerade der letzte Beitrag von Bernhard zeigt übrigens eine mögliche fatale Schwäche von relationalen Datenbanken, in denen Programmierer versuchen, Redundanzen zu vermeiden, obwohl es gar keine Redundanzen sind.
Wenn du heute in einer relationalen Datenbank, in der die Aufträge kein eigenes "EU"-Flag haben, die EU-Aufträge vom Jahr 2003 auflisten läßt, dann erscheinen dir dort auch Bulgarien und Rumänien drin, obwohl die zu diesem Zeitpunkt noch gar keine Mitglieder waren. Und das heißt - in Klartext gesprochen: das EU-Flag ist KEINE redundante Information.
Ein zweites Beispiel kann das noch eher erhellen. Ein Programmierer, der in Rechnungen nur ein Umsatzsteuerkennzeichen und nicht den tatsächlichen Umsatzsteuersatz reinschreibt, hat bei Änderungen des Umsatzsteuersatzes große Schwierigkeiten.
Zeitliche Abhängigkeiten von Ausprägungen zu Merkmalen oder Attributen bedeuten, daß diese Ausprägungen nicht redundant zu den Merkmalen oder Attributen selbst sind.
Insofern würde dies, angewendet auf deinen Fall heißen: Nichtaufnahme des EU-Kennzeichens in die Aufträge ist Ergebnis einer fehlerhaften Datenanalyse.
Gruß
Norbert
-
Lieber Norbert,
das ist keine Schwäche von relationalen Datenbanken, vor allen Dingen zeigt das von dir genannte Beispiel einen weiteren möglichen Fehler in einer Analyse und Modellierung auf.
Grundsätzlich einmal sind meiner Meinung nach Redundanzen schon mal zu vermeiden, da man im Änderungsfall immer alle redundant abgelegten Daten ändern muss.
Zu deinem Beispiel: Wenn man das vorher richtig analysiert, kommt man zu dem Schluss, dass ein Land kein EU-Land ist (in OO gesprochen also keine Vererbung), sondern dass ein Land eine Beziehung zu irgend einer Organisation, beispielsweise die EU, haben kann. Da diese Beziehung aber fachlich gesehen mindestens einen Beginn und bei Austritt auch ein Ende haben kann, ist diese Beziehung mit eben diesen Daten zu versehen. (Grundsätzlich kann man viele Daten mit einem fachlichen Beginn und Ende versehen, da Objekte häufig den Charakter einer Zeitreihe haben, das dazugehörige Konzept nennt sich dann Historisierung.) Somit zeigt sich, dass eben aus dieser Perspektive das EU-Flag sehr wohl eine redundante Information ist, denn sie lässt sich ja über die Beziehungen von Auftrag über Firma, Land und Beziehungen des Landes ermitteln. Hierbei ist dann natürlich immer die fachliche Gültigkeit zu beachten. Beim zweiten Beispiel verhält es sich recht ähnlich. Also ist in meinen Augen die Aufnahme des EU-Kennzeichens in den Auftrag eben nicht korrekt, aus fachlicher Sicht.
A-Bär: Jetzt wechseln wir mal die Ebene, sprich gehen über von der Analyse in den Entwurf und betrachten das ganze unter gegebener Betriebstechnik, also hier Lotus Notes als Plattform: Dann ist es sehr wohl richtig die Daten auch dort zu redundant zu halten, wo man sie zB für Ansichten benötigt. Nur muss man sich dann einen geschickten Mechanismus überlegen, der es einem ermöglicht Änderungen an allen betroffenen durchzusetzen.
Zum Schluss für Jeremias: Mit Lotus Notes wirst du nicht umhin kommen, das Flag in den Auftrag aufzunehmen oder die Variante mit der Ansichtsauswahl zu fahren. Da musst du halt abwägen wie du es für dich besser umsetzen kannst.
-
Noch einer, der seinen Senf dazugeben muss:
1.) Ich habe vor meinem Notes-Leben sehr umfangreiche Projekte mit Relationalen DB's realisiert. Und ich muss aus dieser Erfahrung sagen, dass die puristische Vorgehensweise (Vermeidung der Datenredundanz) ganz schnell zu einem erheblichen Aufwand in der Programmierung führen kann. Das Beitrittsdatum eines Landes zur EU hat das m.E. hervorragend auf den Punkt gebracht. Da wird beim relationalen System gleich noch eine Tabelle fällig, die mit If-Then Konstrukten bedient werden muss (hier: Beitrittsdatum). Da darf man schon mal fragen, was hier sinnvoller ist ....
2.) Das hier vorliegend diskutierte Kennzeichen ist auch m.E. nicht zwingend als Redundanz zu sehen, eben wegen möglicher Austritte etc.
3.) Es darf auch mal nach dem Effekt gefragt werden! Wir reden hier wohl um ein Kennzeichen, das mit "einstellig String" auskommen dürfte. Wenn man's kompliziert machen will, dann kombiniert man verschiedene Kennzeichen in einen Wert ...
4.) Ich denke, dass der Kollege auch ein Recht hat, eine klare Empfehlung zu bekommen:
Ich plädiere lkar für die Variante der Speicherung des Flags im Dokument. Denn morgen wird in der Maske noch irgendein Kennzeichen beim Ausdruck gefordert (Barcode?), Übermorgen gibts das ganze noch mit variablem Aufbau der Maske etc. Alles das ist mit einem Flag durch eine "IF" leicht abzufangen. UND: man kann dann auch leicht EINE Ansicht machen, die die Zugehörigkeiten zu den verschiedenen Regionen als Kategorie darstellt. Und wenn diese Unterteilung in anderen Ansichten auch noch kommen sollte (Auftragsvolumen je Jahr/Monat/Region ...) wird es leichter: Denn wir wissen: Spalten können "shared" sein, Selektionsformeln nicht ...
cu
Jürgen
-
Lustig,
gerade wollte ich posten, da bekomme ich die Meldung dass noch jmd. gepostet hätte...
Das wäre mein Post gewesen:
Um das Ganze noch zu Ende zu bringen:
Habe nun das Flag mit aufgenommen und ein "Rödelscript" entworfen, dass jenes Flag setzt oder auch nicht...
Was die Sache mit der Redundanz betrift (Bsp. Rumänien): Das EU-Flag ist es!
Denn:
Eine Tabelle, welche Länder mit Organisationen verknüpft, hat natürlich auch eine Spalte mit Eintrittsdatum.
Der Fall des ständigen Ein- und Austreten, sei dabei vernachlässigt.
Mfg
-
Redundanz per se ist nur wirklich schlimm, wenn man sie nicht mit allen Konsequenzen beachtet. Daher ist hier das Flag im Auftrag womöglich sogar die bessere Wahl, da es eben auch die zeitliche Komponente besser beachtet, denn ein Auftrag in ein aktuelles nicht EU-Land bekommt das Flag nicht. Würde man jedoch bei einem späteren Eintritt dieses Landes die Ansichtsauswahl verändern, so führte das dazu, dass ein ehemaliger Nicht-EU-Auftrag zu einem EU-Auftrag wird, was aber nicht unbedingt so gewünscht sein kann.