Autor Thema: Laufende Nummern anlegen  (Gelesen 1929 mal)

Offline ReinhardR

  • Frischling
  • *
  • Beiträge: 24
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Laufende Nummern anlegen
« am: 28.03.03 - 12:43:30 »
Hallo ich habe ein Problem,

nachfolgender Code benutze ich zum Erzeugen einer laufenden Nr beim Erzeugen eines neuen Dokumentes. Hat bis jetzt auch funktioniert. Nun können aber mehrere Nutzer neue Dokumente anlegen. Folglich kommt es zu doppelten Nummern in der DB. Hat jemand eine Lösung wie ich das verhindern kann?


Sub Postopen(Source As Notesuidocument)
   
     'nur bei neuem Dokument lfd. Nr. bilden
   If Not source.IsNewDoc Then
      Exit Sub
   End If
   
   Dim sess As New notessession    
   Dim db As Notesdatabase
   Dim view As NotesView
   Dim doc As NotesDocument    
   Dim neunum As String
   
   Set db=sess.currentdatabase        
   Set view=db.GetView("Aufrüstungsliste")
   Set doc=view.getlastdocument
   If Not doc Is Nothing Then          
      neunum=Cint(doc.lfdNr(0))+1
   Else
          '1. Dokument
      neunum=1
   End If
   
     'Nummer eintragen          
   source.fieldsettext "lfdNr",Cstr(neunum)
   
End Sub

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Laufende Nummern anlegen
« Antwort #1 am: 28.03.03 - 12:56:12 »
... geh mal im Forum auf die Suche nach "Fortlaufenden Nummern" oder "Sequenzing" , ca 300 Tage zurück, du wirst auf jeden Fall fündig werden...

ata
Grüßle Toni :)

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:Laufende Nummern anlegen
« Antwort #2 am: 28.03.03 - 12:57:05 »
hm..kannst Du die Nummer nochmals im QuerySave checken, ob bereits vergeben? Wenn ja, dann nochmals hochzählen, sonst lassen. Möglicherweise benötigt der User Kenntnss von der systemseitig nochmals im QuerySave hochgezählten Nummer? Dann spuck ne Meldung aus zB. Somit kann man zumindest etwas besser verhindern, daß die Nummern doppelt vergeben werden, ausschließen auch da nicht.

Bei Deiner Lösung ist die Gefahr der Doppelvergabe recht hoch, - wenn die Nutzungsfrequenz höher ist - daß vom zeitlichen Abstand der Nummern-Vergabe im PostOpen bis zum Save einige Zeit vergehen kann.
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Laufende Nummern anlegen
« Antwort #3 am: 28.03.03 - 13:26:18 »
... schau mal da...

http://www.atnotes.de/index.php?board=7;action=display;threadid=6243;start=0

... doliman hat da ne DB zur Verfügung gestellt, in der so etwas verankert ist...

ata
Grüßle Toni :)

Offline ReinhardR

  • Frischling
  • *
  • Beiträge: 24
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:Laufende Nummern anlegen
« Antwort #4 am: 31.03.03 - 08:16:46 »
Hi,
ich habe den Code (siehe mein Posting) jetzt in QuerySave eingefügt und aus PostOpen rausgenommen. Funktioniert super. Wir haben es mit 4 gleichzeitigen Zugriffen getestet, keine Probleme. Ich hoffe das hilft auch anderen.

Hier die Lösung:

Sub Querysave(Source As Notesuidocument, Continue As Variant)
   
    'nur bei neuem Dokument lfd. Nr. bilden
   If Not source.IsNewDoc Then
      Exit Sub
   End If
   
   Dim sess As New notessession    
   Dim db As Notesdatabase
   Dim view As NotesView
   Dim doc As NotesDocument    
   Dim neunum As String
   
   Set db=sess.currentdatabase        
   Set view=db.GetView("lfdNrInst")
   Set doc=view.getlastdocument
   
   If Not doc Is Nothing Then          
      neunum=Cint(doc.lfdNr(0))+1
   Else
          '1. Dokument
      neunum=1
   End If
   
     'Nummer eintragen          
   source.fieldsettext "lfdNr",Cstr(neunum)
   
End Sub

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re:Laufende Nummern anlegen
« Antwort #5 am: 31.03.03 - 10:28:31 »
@ReinhardR

danke erstmal!
Hat aber leider ne Hacken wenn die Db auch im Web genutzt wird.
Bei der Doc Erstellung im Web greift der ganze Nonsens nicht, leider!

Grüße

Offline Till_21

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • I love Germany
Re:Laufende Nummern anlegen
« Antwort #6 am: 31.03.03 - 10:37:38 »
@adminnaddel ->

hierfuer gibt es den webquerysave...

Offline adminnaddel

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 819
  • Geschlecht: Männlich
  • What a wonderful girl, so beautiful und se....;-)
Re:Laufende Nummern anlegen
« Antwort #7 am: 31.03.03 - 10:41:20 »
 :'( :'( :'(
War ja nur ne Testfrage  :P ;D

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz