Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Gulliver am 11.06.02 - 08:58:27

Titel: Lock Mechanismus
Beitrag von: Gulliver am 11.06.02 - 08:58:27
Hallo zusammen!

Was mache ich nur falsch ?

Ich möchte für Dokumente, die mit verschiedenen Masken erzeugt werden jeweils eine laufende Nummer führen. Wegen der möglichen Gleichzeitigkeit muß das Dokument mit den Counterfeldern gesperrt werden. In diversen Schriften habe ich diee Lock-Funktionen gefunden, aber leider klappt das nicht so recht. Ich habe den eindruck, dass jeder Client seine eigenen Lockobjecte erzeugt ???

Hier ist eines der zahlreichen Experimente
Sub Initialize
     Dim LockNr As Integer
     Dim DestNr As Integer
     Dim CdLck As Variant
     Dim UnLck As Integer
     
     Msgbox "Achtung, jetzt wird die Locknummer created: CreateLock()"
     LockNr = Createlock("lfdNummer")
     Msgbox "Die erzeugte Nummer lautet " + Cstr(LockNr)
     
     Msgbox "Achtung, jetzt wird die Locknummer reserviert: CreateLock()"
     CdLck = Codelock(LockNr)
     Msgbox "Ergebnis der Reservierung: " + Cstr(CdLck)
     
     Msgbox "Achtung, jetzt wird die Locknummer freigegeben: CodeUnLock()"
     UnLck = Codeunlock(LockNr)
     Msgbox "Ergebnis der Freigabe: " + Cstr(UnLck)
     
     Msgbox "Achtung, jetzt wird die Locknummer zertrört: destroylock()"
     DestNr = Destroylock(LockNr)
     Msgbox "Ergebnis von Destroy: " + Cstr(DestNr)
End Sub

Solange Agent auf dem ersten Client die LockNr nicht freigibt, müsste eigentlich bei den weiteren "false" von der Funktion CodeLock() zurück kommen.

... bin dankbar für jede Antwort  :-[
Titel: Re: Lock Mechanismus
Beitrag von: Buzzy am 12.06.02 - 13:18:45
Hi!
Ich hab mir ein zentrales Dok angelegt, in dem die lfd. Nr. liegt. Wenn nun ein neues Dok erstellt wird, wird auf dem QuerySave die Nummer geholt, um eins erhöht und eingefügt und gleich danach in das "zentrale" Dok. zurückgeschrieben...und so ist die wahrscheinlichkeit, dass zwei Doks die gleichen Nummer bekommen, rel. gering...

Wär des ne Möglichkeit?
Gruß,
Buzzy
Titel: Re: Lock Mechanismus
Beitrag von: Gulliver am 12.06.02 - 17:17:08
Hallo Buzzy,

das funktioniert bei mir auch ganz gut, ich fürchte nur, dass bei sehr vielen Zugriffen in kurzer Zeit doch einmal die gleiche Nummer zweimal gelesen wird und das darf in dieser DB nicht passieren!

Aus diesem Grund suche ich nach einem funktionierenden "LM" siehe oben ;)

bis neulich!
Titel: Re: Lock Mechanismus
Beitrag von: Christopher am 12.06.02 - 22:54:19
'Declartions
Dim LockNr As Integer


Sub Initialize()
     LockNr = Createlock("lfdNummer")
     Call NummerHochzaehlen()
End Sub

Sub Terminate()
     LockNr=Destroylock(LockNr)
End Sub


Sub NummerHochzaehlen()
     
     Dim result As Variant
     
     result=Codelock(LockNr)
     
     While result = False
           Sleep(5)
           result=Codelock(LockNr)
     Wend
     
'Setzen der laufenden Nummer
     
     result=Codeunlock(lfdNummer)
     
End Sub

Gruß Christopher
Titel: Re: Lock Mechanismus
Beitrag von: Gulliver am 13.06.02 - 16:24:55
Moin!

Hab ich schon genau so getestet, geht nicht! ???

.... hätte nicht gedacht, dass das was besonders ist ...