Domino 9 und frühere Versionen > ND7: Entwicklung
Counter
ata:
... wenn du pro Server ein Setup-Dokument hast und für jeden Server einen Kennbuchstaben, dann gibt es auch keine Probleme. Meine DB' laufen an 20 verschiedenen Standorten - weltweit verteilt und teilweise auf Clustern...
... ich habe keine doppelten Nummern - es sein denn man erzwingt sie ;D
Toni
koehlerbv:
Geht diese unsägliche Diskussion denn schon wieder los? In Daniels Antwort #1 verweist ein Link auf ein Posting mit einer AUSWAHL zur bisher geführten Diskussion allein hier bei AtNotes. Dort ist zu finden, warum das mit dem ProfileDocument mentale Diarrhoe ist und warum thomson bisher einfach Glück hatte.
Lesen bildet.
Bernhard
flaite:
Allererstmal sollte man sich mal die Frage stellen:
Brauchst du überhaupt eine fortlaufende Nummerierung?
Das gibts übrigens auch in relationalen Datenbanken eigentlich nicht. Da gibts zwar in jedem mir bekannten Datenbanksystem einen Autoincrement INT oder BIGINT (oder etwas, was dies erzeugt). Aber in der realen Welt da draussen sind die in den Tabellen praktisch nie fortlaufend.
Zum einen wird bei bulk-inserts da oft ein ganzer Satz angefordert, von denen manche nicht gebraucht werden, und zum einen zählen die unteren nicht hoch, wenn man einen in der Mitte löscht.
Mag sein, dass man im Volkshochschulkurs Access for Dummies in der zweiten Stunde kurzfristig den Eindruck bekommen könnte, es gäbe fortlaufende Nummern, aber schon in der dritten Stunde wird der Dozent sicher erklären, dass das eine Illusion ist.
Meinst du nicht eher einen eindeutigen Identifier?
Ein eindeutiger Identifier ist nicht unbedingt fortlaufend und sieht öfters kryptisch aus.
Notes Dokumente besitzen einen eindeutigen Identifier: Die DocumentUniqueID.
Sehr selten gibt es Gründe, dass man in einer Notesanwendung einen eindeutigen Identifier benötigt, der nicht die DocumentUniqueID ist. Dann kann man so in die Richtung vorgehen, die Anton Tauscher aufgezeigt hat.
In meinem Java Mock Framework für Notes hab ich das Notes-Feature DocumentUnique ID nachprogrammiert und habs so gemacht: Milisekunden seit irgendwann 1970 (System.getCurrentMilis (oder so ähnlich)) ein _ und dahinter noch eine Zufallszahl.
Glombi:
Ich verwende als eindeutigen Identifier in der Regel die Funktion @Unique.
Das ist im Gegensatz zu @Text(@DocumentUniqueID) einigermassen überschaubar und lesefreundlich.
Dubletten sind mir bei @Unique auch noch nie untergekommen. Die Wahrscheinlichkeit dafür ist auch verschwindend gering.
Andreas
Jörg:
Die DocumenteUniqueID verwende ich nachher zum auslesen aller Antwortdokumente,
aber der Counter verwende dazu erstmal alle Dokumente zu Kategoriesieren.
Hier nun der Code , mit dem ich auf einen Server und bei einen neuen Hauptdokument
einen Counter hochzähle:
--- Code: ---Sub Postopen(Source As Notesuidocument)
Set uidoc = source
Set thisuidoc=source
Set thisdoc=thisuidoc.Document
Set doc = uidoc.document
Dim doc_ID As NotesDocument
Dim IDcounter As Variant
Dim ID_Doc As Variant
Set db = session.currentdatabase
If thisdoc.IsNewDoc And db.Server <> "" Then
'Abfrage profile Dokument auf dem Server
Set doc_ID=db.getprofileDocument("dokumentcounter","DocCounter")
'Wenn Feld schon vorhanden
If doc_id.hasitem("DOC_ID") Then
'Counterwert holen
IDcounter = doc_id.DOC_ID(0)
Else
'Wenn Feld nicht vorhanden dann anlegen
IDcounter =0
doc_id.DOC_ID="0"
End If
'Wenn Documenten Status ist Neu
IDcounter = IDcounter +1
doc_ID.DOC_ID = IDcounter
Call doc_ID.Save(True,False)
doc.ID_MainDOC = IDcounter
Else
Exit Sub
End If
End Sub
--- Ende Code ---
Sicherlich gibt es andere Lösungen , aber die ist für meine Anwendung völlig ausreichend.
Auch wenn ich dann Dokumente lösche ist es mir dann egal , ob der Counter fortlaufend
ist oder nicht.
Gruß Jörg
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln