Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Gandalf am 18.02.03 - 16:48:24

Titel: Feld mit fortlaufender Nummer
Beitrag von: Gandalf am 18.02.03 - 16:48:24
Hi,

muss mich mal wieder outen und ne Anfängerfrage stellen.

ich erstelle eine neue Maske die unter anderem ein Feld mit einer fortlaufenden Nummer haben soll. 001 - aufwärts. Wie realisier ich es, das er beim Anlegen eines neuen Dokuments mit dieser Maske automatisch die nächst freie Nummer nimmt ?

Bye
Gandalf
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: ata am 18.02.03 - 16:52:18
... das ist keine Anfängerfrage, denn da gibt es in Notes einige Hürden zu meistern...

Gibt es die Anwendung auf mehreren Servern, die miteinander replizieren?

ata
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: Gandalf am 18.02.03 - 17:08:13
Hallo ata,

soll später mal angedacht sein.
Es soll aus ihr eine Produktdatenbank entstehen,
die auch in unser CRM Tool mit eingebunden werden soll.

Zu dieser Maske werden auch weitere Masken als Antwortdokumente erstellt.
Besagtes Feld soll anschließen auch als Teil Nummer in die Antwort Dokumente mit übernommen werden, an der dann eine weitere fortlaufenden Nummer angehägt wird. Aber das krieg ich dann hin, wenn ich einmal weis wie gezählt wird

Gandalf
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: ata am 18.02.03 - 17:24:41
... da gibt es verschiedene Methoden...

... du legst in der Datenbank ein Zählerdokument an. Dieses Dokument darf es nur einmal in der Datenbank geben. In einem Feld in diesem Dokument liegt der Zähler drin. Beim Speichern deines neuen Dokumentes holst du hier die aktuelle Nummer, zählst sie um eins weitter und aktualisiert die Nummer im Zählerdokument und speicherst es ebenfalls...

... wenn die DB an mehreren Standorten in Repliken liegt wird es dann kompliziert...

ata
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: eknori am 18.02.03 - 18:44:13
was wollt ihr eigentlich immer mit einer fortlaufenden nummer ? Ich dachte, die Zeiten von Ärmelschoner und Tintenfäßchen bei der Führung eines Hauptbuches sind vorbei.

Was machst du denn, wenn ein Dokument gelöscht wird ?? Das war es dann mit "fortlaufender Nummerierung".

Macht nur Ärger und funktioniert entgegen mancher Meinungen im LDD in replizierenden Umgebungen überhaupt nicht.


eknori
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: ata am 18.02.03 - 19:24:01
Hoy Ulrich,

... nur durch Schaden wird man klug - ich bin auch kein Freund von Nummerierungen bei replizierenden Datenbanken - absolut nicht - gebranntes Kind scheut das Feuuer - aber dennoch gibt es immer wieder den Wunsch danach...

ata
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: Alex W am 19.02.03 - 09:30:40
Hallo,

das mit den fortlaufenden Nummern ist ein heikles Thema. Benötigt werden sie auf jeden Fall, da man bei der Verarbeitung von vielen Daten irgendein unverwechselbares und doch  für alle Mitmenschen halbwegs  sinnvolles Kennzeichen haben sollte. Wenn Du nämlich 20 Vorgänge für deinen  Kunden Müller wegen der Angelegenheit in Musterstraße hast und der dir ne Rechnung bezahlt und auf dem Kontoauszug steht nur Müller und sonst nichts außer Musterstraße, mußt du erstmal eine nicht unerhebliche Zeit suchen, was er meint. Und versuch mal im Notes in den Doks zu suchen: 234,67 €. Bei mir findet er immer alles mögliche, aber nie das, was er soll, weil Notes das Komma auch als Trennzeichen versteht und beim Volltextindex auch gleich noch alles andere findet.

Insofern ist die Frage sicher, wie man ein sinnvolles Kennzeichen entwickelt. Die Kombination aus laufender Numer / Jahr hat sich da bei mir sehr bewährt.  Außerdem kann man mit fortlaufenden Nummer nachvollziehen, wenn einer rumgebastelt hat und gar Doks löschte. Das machen Programierer natürlich nie, aber der Enduser, der Enduser ...!?

Im Prinzip hab ich das an mehreren Stellen bei mir eingesetzt.  Ich ruf das dann immer mit @dblookup("";"NoCache";"Server1":"Datenbank"; "Zählerdokansicht";"Musterstandort";2) ab. Das Zählerdok hat dann ein Feld Musterstandort, nach dem in der Ansicht sortiert wird. Das ist zwar Blödsinn für nur ein Dok, aber für @dblookup nötig. Außerdem kannst du das ndann auch noch erweitern für viele Zählerdoks. In der zweiten Spalte steht das das Zähler feld, das, wie Ata schon mitgeteilt hat, hochgezählt werden muß. Für verschiedene Sachen kann man so mehrere Zähler einrichten. Mann kann auch mehr Zählerfelder in einenm Zählerdok machen und baut dann mehrer Spalten in die Ansicht. Wichtig ist, daß immer nocache angegeben wird und die Ansicht sich automatisch aktualisiert.

Dabei muß natürlich jedesmal zu dem einen Server eine Verbindung aufgebaut werden, sonst klappt es nicht. Wenn es wirklich keine Verbindung gibt,, kommt ein Error, das regele ich dann mit Hand, ist aber sicher für große Sachen keine Lösung. Aber bei mehreren Servern kann man ja zur fortlaufenden Nummer noch ein Kenzeichen des Servers mit hinterlegen, so daß man dann auf den Servern getrennt zählt und trotzdem die  Nummern nachvollziehen kann. Das könnte dann so ausehen :

        gezählte Nummer/Jahr/ Servername

also                324/03/Server1

So, viel Spaß, ich habe ein halbes Jahr gebraucht, um mal neben meiner Arbeit eine praktikable Lösung für das Problem bei mir zu finden.

Gruß

Alex W :)
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: Gandalf am 19.02.03 - 10:33:57
Hallo Ulrich, hallo ata,

die fortlaufende Nummer brauche ich für die Pos. Nummerierung in Angeboten. Besagte Datenbank wird eine Produktdatenbank. Aus einen Dokument eine anderen datenbank möchte ich halt auf diese Datenbank zugreifen können und ausgewählte dukumente in ein Angebot übernehmen - sich in diesem muss ich dann nochmal neu Nummerieren, aber wen ich das Problem in der Produktdatenbank schon mal gelösst habe........

Das Löschen von dokumenten - sprich das fehlen von Nummern in der Reihenfolge ist kein Problem, da ein eindeutiger Bezug der Positionen vom Angebot zur Produktdatenbank nachträglich nicht mehr sein muss.

Falls viel gelöscht wird, muss ich mir nur noch Gedanken über die Funktuion des Neunummerierens machen.

Danke für den Tipp - ich gehe jetzt ans ausprobieren. Da ich für sowas immer länger als andere brauche  :-[ wirds mit den Feedback was dauern.

Bye
Gandalf
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: CrazyCoder am 19.02.03 - 11:17:57
HI Leute!
Ich habe quasie genau das geleiche Problem wie Gandalf und hoffe das ich das nun auch hinbekomme.

Ich habe schon öfter mal mit dem @DBLookup() gearbeitet und denke mal das das einzige Problem, das dann auftritt, seien wird die Zahl in der andern Maske bzw. Ansicht (wo ich meine "Laufendenummer" her nehmen will) zu überschreibe!

Also, wenn ich die Nummer die ich brauche habe, diese um einen aufzähle, wie bzw. mit welchem Befehl bekomme ich die dann wieder zurück auf die andere Maske, damit die nächste Zahl "aktuell" aufgerechnet wird?????

HILFE!!! HILFE!!! HILFE!!! HILFE!!! HILFE!!! HILFE!!! HILFE!!!

Ich hänge da schon seit ca 5Wochen dran und es läuft immernoch nicht!  :-[

Ich hoffe Ihr könnt mir helfen!  :-\

cya
CrazyCoder   8)
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: ata am 19.02.03 - 11:25:02
... in dem Zählerdokument hast du ein Feld mit der UniversalID dieses Dokumentes...

... mit dem DBLookup kannst du die ID holen, und innerhalb der DB
... ... mit @GetDocField(...) einen Wert aus einem Feld lesen...
... ... mit @SetDocField(...) das Feld neu beschreiben...

eine von mehreren Möglichkeiten...

ata
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: Rob Green am 19.02.03 - 12:14:03
joo..die laufenden Nummern...wooo lauuuufen sie denn, woooo lauuufen sie denn hiiin  ;D ;D ;D

Ein Problem mit einem üblichen Zählerdocmechnismus bei Notes darf nicht verschwiegen bzw. übersehen werden: die klassische Racekondition und der Speicherkonflikt.

Eine Racekondition kann dann auftreten, wenn man mit Dbcolumn die letzte vergebene Nummer ausliest und um 1 im aktuellen Neudoc hochzählt. Tut man die Nummer beim Erstellen des Docs auslesen und dann speichern, führt die Verzögerung  zwischen Erstellung und Speicherung dazu, daß in der Zwischenzeit sich jemand die gleiche "letzte" Nummer geschnappt hat. Damit hat man 2 gleiche Nummern+1 am Ende. Ist man cleverer, zieht man sich die letzte Nummer beim Speichern des Docs. Da ist die Spanne von Nummer ziehen und Speichern im Sekundenbereich. Aber, auch da kann die Racekondition zuschlagen, denn Notes kann die Ansicht nicht so schnell aktualisieren, wenn 2 User zur gleichen Milisekunde ein jeweiliges Neudoc speichern. Notes gibt dann dummerweise vor dem nächsten Upfresh des Viewindex die gleiche "letzte" Nummer zurück.

Bei Verwendung eines zentralen Notes Zählerdocs kann es natürlich zu parallelen Schreib/Speicherkonflikten kommen, wenn 2 User im selben Moment auf das Zählerdoc zugreifen.

Die Gefahr kann  je nach Design bzw. Nutzungshäufigkeit der Datenbank gering oder hoch sein, doppelte Nummern zu erhalten. Einige helfen sich damit, einen regelemäßigen Agent laufen zu lassen, der doppelte Nummern bereinigt. Nicht schön, aber immerhin.

Auch replizierende DB´s beherrschen eine einheitliche Nummernvergabe...der Artikel ist auf LDD Today zu finden, bietet aber genau die gleichen Klippen & Hürden letztlich.

Nach wie vor erachte ich - unabhängig was nun eine laufende Nummer bringt - den Ansatz über eine Verwendung einer externen DB mit Sperrindex Mölichkeit zwecks Vermeidung paralleler Schreibvorgänge (zum Ablegen der vergebenen Nummer/n) am besten, um das zentrale Notesproblem hierbei zu umgehen: Notes kennt keinen Sperrindex auf Datensätze. Dies kann übrigens auch eine stinknormale Textdatei auf dem Notesserver sein, die über runonserver Agent beschrieben/gelesen wird.
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: CrazyCoder am 19.02.03 - 13:09:33
HEYYO!! 8)

ES HAT GEKLAPPT!!!

DANKE LEUTE!!!  ;D
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: Gandalf am 19.02.03 - 15:04:20
Ok - hab jetzt ne einfache Anfängervariante

hab eine Ansicht in der datenbank erstellt, die mir die benutzten Nummern anzeigt.
Ich mache in dem Feld der Maske ein @dbColum und nehme den letzten wert halt +1. Funzt.
@ RobGreen Da ich noch ganz am anfang mit dem Aufbau werd ich deine Angesprochene Problematik auf später verschieben. Ich weis aber um deren Wichtigkeit.  :)

Bye
Gandalf
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: wflamme am 19.02.03 - 17:55:21
das mit den fortlaufenden Nummern ist ein heikles Thema. Benötigt werden sie auf jeden Fall, da man bei der Verarbeitung von vielen Daten irgendein unverwechselbares und doch  für alle Mitmenschen halbwegs  sinnvolles Kennzeichen haben sollte.

Die mit @Unique erstellten Kennungen halte ich schon für fast optimal - eindeutig (auch in replizierenden Umgebungen) und passen auch noch ins Kurzzeitgedächtnis.

Wenn ich sehe, was Meckermann und Konsorten an Kundennummern-, Bestell-, Auftragsnummern- etc-Ungetümen vergeben, dagegen ist @unique richtig schlank und schick!
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: ata am 19.02.03 - 17:59:24
@Gandalf

... mit dem @DBColumn wirst du an eine Grenze stossen, den der hat eine Kapa-Grenze, die durchaus zu erreichen ist...

... ein Zählerdokument ist unabhängig von der Anzahl der Dokumente...

ata
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: doliman am 19.02.03 - 18:02:50
Hi,

hier gibts das schon fertig:

Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: Gandalf am 20.02.03 - 08:15:29
Hallo,

@Doliman
Das muss ich mir jetzt mal in aller Ruhe anschauen, :-) kann sich nur um Tage handeln.

@ata
Fürs schnell (sorry- ich weis das der Begriff bei mir no ein kleines bischen Paradox ist) erstellen reicht es erst mal.
Da ich die DB Hierachisch aufbaue hab ich da auch noch ein bischen Reserve.
Wichtig ist halt, das ich meine Idee zum Thema erstmal vorstellungsreif bekomme.
Du und RobGreen - ihr seit aber schon mit eureren Anmerkungen auf meiner ToDo Liste.

Bye
Gandalf
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: wflamme am 20.02.03 - 10:22:07
HEYYO!! 8)

ES HAT GEKLAPPT!!!

DANKE LEUTE!!!  ;D

OT:
Ahem: Nicht daß ich unken will, aber könntest Du Dir ev. ein etwas ruhigeres Logo besorgen?
Der flammende Zappelmann links neben Deinen Posings sorgt derzeit dafür, daß ich bestenfalls 5 Zeilen lesen kann, bevor ich den Faden verliere.

Nur ein gutgemeinter Vorschlag, anderen geht's vielleicht ähnlich und die kleine Änderung würde dann Deine Chance, aufmerksam gelesen zu werden wohl entspr. erhöhen.
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: Enelade am 20.02.03 - 14:35:30
ich habe da doch noch ein Problem mit dem Script.

Muss mich vorab mal entschuldigen !
dieses Thema ist ja schon ausgetappt und auch schon geschlossen, aber ich habs immer noch nicht hinbekommen.
Hoffe auf verständniss, ich programmiere noch nicht so lange in Notes und habe noch nie Lotus-Script angewandt.

Zu meinem Problem:
Ich habe die Mask Sequential Number, die ansicht, den Agenten sowie die Script-Bibliotek in meine Datenbank kopiert.

Wenn ich aber eine Nummer vergeben möchte kommt folgender fehler:
Cannot finde externl name: UIDOC

auf was bezieht sich diese Meldung?
Ich bin am verzweifeln, und bitte um schnelle Hilfe sowie auf verständnis. Ist bestimmt ganz einfach.

Danke
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: ata am 20.02.03 - 14:51:00
... schalt mal den Debugger ein und häng einen ScreenShot von der Stelle ins Forum, wo der Code aussteigt, damit man erahnen kann, was nicht initialisiert wurde - ich vermute fast, daß die Lib nicht sauber eingebunden ist - oder wtwas derartiges...

ata
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: Enelade am 20.02.03 - 15:09:09
hier das Fenster.
Vielen Dank für Deine Hilfe
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: ata am 20.02.03 - 15:14:02
... um deinen Code an der Stelle zu verwenden muß das uidoc noch deklariert werden. Ich vermute mal, daß in den Globals der Ursprumgsmaske noch globale Variablen gesetzt wurde, die dir jetzt nicht vorliegen...


... probiers mal mit

Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument

... un dann der restliche Code - vielleicht hilft das schon, kann aber sein daß ihm noch andere Variablen fehlen...

ata
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: Enelade am 20.02.03 - 15:18:01
so?

Sub Click(Source As Button)
   
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = ws.CurrentDocument
   
   If Not uidoc.editmode Then uidoc.editmode = True
   
   uidoc.document.Number = GenerateSequentialNumber( profileNumberForm_Main$ )
   
End Sub

Da bringt er mir aber beim speichern den Fehler, dass er aufgrund eines Fehlers nicht speichern kann.

Wie gesagt, ich habe noch nie Script programmiert, darum meine Blödheit !!

Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: Enelade am 20.02.03 - 15:28:03
Habe gerade in dem Script folgende Fehlermeldung gefunden:

Assign_number: Click: 9: Illegal parenthesized reference: GENERATESEQUENTIALNUMBER

@ata
ich bin auch von der ALB, geteiltes Leit oder besser gesagt Freud, auf der ALB zu wohnen
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: eknori am 20.02.03 - 15:40:38

GENERATESEQUENTIALNUMBER

ist ein eine function; die muß in irgendeiner ScriptLib enthalten sein.
Diese Lib mußt du mit Use "NameDerLib" in deinen Code einbinden.

So ist das bisschen Code nicht lebensfähig  ;)
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: Enelade am 20.02.03 - 16:04:44
Jetzt sind die Fehlermeldungen beseitigt

Aber leider wird die Nummer nicht hochgezählt.

Verzweiflung macht sich breit
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: Enelade am 20.02.03 - 16:11:10
habe gerade auch noch gesehen, dass ich die Maske "Sequential Number" nicht speichert, das heißt, wenn ich einen neuen WErt erfasse, und speichern sage ist dieser beim nächsten öffnen der DB wieder verschwunden
Titel: Re:Feld mit fortlaufender Nummer
Beitrag von: ata am 20.02.03 - 19:00:15
... schick mir ne abgespeckte Version der DB - ich schau mal was ich für dich machen kann...

ata