Autor Thema: Lock Mechanismus  (Gelesen 1323 mal)

Offline Gulliver

  • Junior Mitglied
  • **
  • Beiträge: 75
  • Geschlecht: Männlich
  • Das hat's alles früher teilweise gar nicht gegeben
Lock Mechanismus
« 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  :-[
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Buzzy

  • Frischling
  • *
  • Beiträge: 40
Re: Lock Mechanismus
« Antwort #1 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
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Gulliver

  • Junior Mitglied
  • **
  • Beiträge: 75
  • Geschlecht: Männlich
  • Das hat's alles früher teilweise gar nicht gegeben
Re: Lock Mechanismus
« Antwort #2 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!
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Christopher

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.060
  • Geschlecht: Männlich
  • Dumm ist der, der dummes tut.
Re: Lock Mechanismus
« Antwort #3 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
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Client & Server R 5.011
Principal Certified Lotus Professional R5 System Administration
Microsoft Certified Systems Engineer 2000
Microsoft Certified Systems Administrator 2000
Microsoft Certified Systems Administrator 2003
Microsoft Certified Systems Engineer 2003

Offline Gulliver

  • Junior Mitglied
  • **
  • Beiträge: 75
  • Geschlecht: Männlich
  • Das hat's alles früher teilweise gar nicht gegeben
Re: Lock Mechanismus
« Antwort #4 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 ...



« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz