Domino 9 und frühere Versionen > ND6: Entwicklung
Dokumente mit fortl. Nummer in Kombination mit Lesern- und Autoren
Basti07:
>> Ups..., gehört doch eher in "Entwicklung" und nicht hier rein.
Hallo zusammen,
ich bin an der Entwicklung einer Projekt-Daba und habe leider zu meinem Problem auf atnotes leider nichts gefunden.
Zunächst einmal zum Momentanen Sachlage:
In der Daba gibt es eine Projektmaske mit einem beim Anlegen berechnetem Feld "Projektnummer". Wiederum ist die Projektmaske mit Leser- und Autorenfelder ausgestattet.
Das Ermitteln der nächsten Projektnummer in der Projektmaske erfolgt mit folgender Formel fehlerfrei:
PJNummern := @DbColumn("":"NoCache";"";"View_P_NR";1);
PJMaxNummer := @Subset(PJNummern;1);
@If(PJNummern = ""; 1; PJMaxNummer + 1)
Die o.g. VIEW (View_P_NR) enthält "eine" Spalte mit dem Wert Projektnummer aus jedem angelegtem Projekt und ist absteigend nach der Projektnummer sortiert.
Jetzt zum eigentlichen Problem in Kombination mit Leser- und Autorenfelder:
- Der Benutzer XXX erstellt ein neues Projekt. Automatisch wird die Nummer '1' vergeben. Zusätzlich beschränkt XXX den Lese- und Schreibzugriff auf sich selbst.
- Zu einem späteren Zeitpunkt erstellt Benutzer YYY ein neues Projekt. (Nun sollte dafür ja eigentlich die Projektnummer '2' vergeben werden). Bei der Anlage wird nun aber die Projektnummer '1' vergeben...das sollte natürlich nicht passieren!!!
Die Ursache dafür war mir ziemlich schnell klar. Denn in der VIEW (View_P_NR) ist für den Benutzer YYY das von Benutzer XXX angelegte Projekt nicht sichtbar, weil dieser den Zugriff auf das Dokument geschützt hat.
Habt Ihr eine Idee wie ich z.B. in der VIEW trotz des Dokumentenschutzes den Wert für jeden angezeigt bekommen kann? Oder soll ich einen ganz anderen Weg fahren?!
Bin für jeden Ratschlag dankbar.
Gruß, Basti07
Glombi:
Hallo und willkommen im Forum.
Bevor jetzt hier gleich alle anfagen zu toben - bitte benutze mal die Forumssuche. ;)
Es gibt da einige Threads zu laufenden Nummern.
Andreas
m3:
Das Thema "fortlaufende Nummer" hatten wir schon öfter und eine Suche nach diesem Begriff in diesem Forum sollte Dir alle relevanten Informationen liefern.
Dein "Problem", dass die Nummerierung aufgrund der Leseberechtigungen nicht stimmt, ist nur ein kleiner Teilaspekt der "ich schau in einer View nach, welche Nummer als nächste kommt" Problematik. Stichwörter über die Du in diesem Zusammenhang nachdenken solltest: Repliken, Offline-Verwendung der DB, Atomarität, ...
flaite:
Sind Nummern überhaupt brauchbare Bezeichner für Projekte?
Gut. Man kann mit Nummern sotieren. Aber das geht auch über das Anlege-Datum des Projekts.
Nimm doch einfach den Namen des Projekts als Schlüssel. Beim Speichern überprüfst du einfach, ob der Name bereits existiert. Falls ja, soll der Projekt-Anleger einen anderen Namen wählen.
Vor der Zeit des knappen Speicherraums (Steinzeit bis 60er Jahre) wurden nämlich Dinge fast nie mit Zahlen oder irgendwelchen fixed-length Strings versehen. Zugegeben vielleicht im naturwissenschaftlichen Bereich manchmal schon (Periodensystem der Elemente). Aber sonst? Heissen unsere Städte vielleicht D-1, D-4, D-5, Bo-1. Oder doch eher Köln, Nürnberg, München, Dresden, Potosí?
Steckt da nicht vielleicht ein tieferer antroposophischer Sinn hinter. Dass sich nämlich das menschliche Hirn besser Folgen von Konsonanten und Vokale mit Dingen verknüpfen kann als irgendwelche Zahlen oder Buchstabenkombinationen wie 003_CB_134234, 14 oder 192.168.1.36 ???
Ich habe solche Diskussionen jetzt, 2007 Jahre p. Chr., in Webservice Projekten.
Jemand: Wir nummerieren die Fehler durch. Nummer 1 heisst: Der Vorgang ist bereits angelegt. Nummer 2 heisst: Es gab ein Verbindungsproblem mit dem Server. Nummer 3 heisst Daten fehlen.
Ich (denke): Oh nein. Nicht schon wieder. Es scheint Spaß zu machen in einem Excel Sheet Zahlen zu schreiben und denen Nachrichten zuzuordnen.
Ich: Und wie sollen die Administratoren wissen, was das bedeutet?
Jemand: Die sollen in der Dokumentation nachschlagen.
Ich: Und wieso geben wir das nicht einfach Klartext in englischer Sprache aus: A Request Discount for this offer allready exists, Cannot connect to the server, The message should contain the field "xxx"
Jemand: Sind Nummern nicht effizienter?
Ich: Nein. Das heisst vielleicht. Aber auf jeden Fall nicht merkbar. Die Vorteile bewegen sich im Tausendstel Millisekundenbereich. Und wir respektieren das Menschenrecht von Administratoren möglichst wenig in irgendwelchen voll langweilig geschriebenen Dokumentationen nachzuschlagen.
Der Grund warum Nummern eine so große Rolle spielen ist, dass
a) früher Speicher wirklich sehr teuer war und
b) Relationale Datenbanken mit Zahlen als primary und foreign keys tatsächlich deutlich schneller arbeiten können.
Deshalb benutzen von mir angelegte Relationalen Datenbanken für Primär- und Fremdschlüssel grundsätzlich integer oder bigint. Aber überall anders macht das heute praktisch fast nie Sinn.
cash:
habe auch eine Datenbank mit Nummern. Ich hole die Zahl von einem normalen Dokuemtn was ich als Profildokument nutze. Erst wenn der User "Speichern" klickt (alle anderen Arten von Speichern habe ich unterdrückt) wird im aktuellen Dokument die Nummer vom Profildokument geholt plus 1 addiert und in das Feld Nummer geschrieben und dann sofort das Feld im Profildokument ebenfalls um 1 erhöt. So klappt das bei uns ganz gut. Problem kann so nur auftreten wenn wirklich 2 Leute zu gleichen Zeit bei unterschiedlichen Dokumenten "Speichern" drücken...
Cash
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln