Domino 9 und frühere Versionen > Entwicklung

Hochzählen beim verlassen der Maske

(1/1)

Bellerophon:
*greetz* @ ALL!

Ich habe in der Suche nichts gefunden, deswegen Poste ich mal mein Problem:
Ich möchte eine "Mitgliedsnummer" automatisiert vergeben. Habe dafür im Querysave folgendes Script erstellt:


--- Code: ---'Vergabe der Mitgliedsnummer
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Querysave(Source As Notesuidocument, Continue As Variant)

Dim workspace As New NotesUIWorkspace
Dim sess As New notessession
Dim uidoc As NotesUIDocument
Dim doc, docnext As NotesDocument
Dim View As NotesView
Dim choice As String
Dim db As notesdatabase

Set db=sess.currentdatabase
Set uidoc = workspace.CurrentDocument

If uidoc.IsNewDoc Then

Set View = db.getview("(NachNr)")
Set doc = view.getfirstdocument

If Cint(doc.MitglNr(0)) > 1 Then
uidoc.fieldsettext "MitglNr", "1"
Exit Sub
End If

If doc Is Nothing Then
uidoc.fieldsettext "MitglNr", "1"
Exit Sub
End If

While Not doc Is Nothing

Set docnext = view.getnextdocument(doc)

If docnext Is Nothing Then
uidoc.fieldsettext "MitglNr", Cstr ( ( Cint(doc.MitglNr(0)) +1 ) )
Exit Sub
Else
If Cint(docnext.MitglNr(0)) - Cint(C) <> 1 Then
uidoc.fieldsettext "MitglNr", Cstr ( ( Cint(doc.MitglNr(0)) +1 ) )
Exit Sub
End If
End If

Set doc = docnext

Wend

End If

End Sub
--- Ende Code ---

Habe bei den Declarations folgendes stehen:


--- Code: ---Dim uidoc As notesuidocument
Dim db As notesdatabase
Dim doc  As notesdocument
Dim doc_save As notesdocument
Dim view As notesview
Dim item As NotesItem
Dim dc As NotesDocumentCollection
Dim Str_Suchdoc As String
Dim Str_Suchuidoc As String
Dim SaveFlag As String
--- Ende Code ---


Das Feld "MitglNr" ist ein Zahlenfeld (Berechnet), auch als Textfeld (Berechnet) funktioniert das nicht!
Die Nummer 1 vergibt er, alle anderen bekommen die Nummer 2! ;-(
Sehe ich vor lauter Bäumen den Wald nicht mehr? Oder was habe ich Übersehen.

ascabg:
Hi,

Frage.
Wie ist denn die Ansicht aufgebaut?
(schon sortiert?)

Wenn aufsteigend sortiert, dann ...

set view = ...
view.Refresh
view.AutoUpdate = False

set doc = view.GetLastDocument

If (doc is Nothing) then
  Call uidoc.Document.ReplaceItemValue("MitglNr", 1)
Else
  Call uidoc.Document.ReplaceItemValue("MitglNr", _
         CLng(uidoc.Document.GetItemValue("MitglNr")(0)))
End If

Andreas

umi:
1. Rot ist hässlich
Verwende doch lieber
--- Code: --- die Code Tags
--- Ende Code ---


--- Code: ---Sub Querysave(Source As Notesuidocument, Continue As Variant)
  
   Dim workspace As New NotesUIWorkspace
   Dim sess As New notessession
   Dim uidoc As NotesUIDocument
   Dim doc as notesdocument
   dim  docnext As NotesDocument
   Dim View As NotesView
   Dim choice As String
   Dim db As notesdatabase
  
   Set db=sess.currentdatabase
   Set uidoc = workspace.CurrentDocument
  
   If uidoc.IsNewDoc Then
  
     dim max as integer

      Set View = db.getview("(NachNr)")
      Set doc = view.getfirstdocument
      
      
      If doc Is Nothing Then
         uidoc.fieldsettext "MitglNr", "1"
         Exit Sub
      End If
      
      While Not doc Is Nothing
        if (cint(doc.getitemvalue("MitGlNr")(0)) > max then
         max = cint(doc.getitemvalue("mitglnr")(0)
        end if
        
         Set doc = view.getnextdocument(doc)
        
      Wend
      call uidoc.fieldsettext("MitGlNr",cstr(max))
   End If
  
End Sub

--- Ende Code ---

Thomas Schulte:
Und noch was.
Such doch einfach mal im Forum nach "laufender Nummer" Da gibt es haufenweise Beiträge mit funktionierenden Möglichkeiten und den entsprechenden Anmerkungen was man wann und warum machen oder nicht machen sollte.

Bellerophon:
@ascabg:
Danke für die Info, werde es mal ausprobieren.


--- Zitat von: ascabg am 08.02.06 - 08:53:51 ---
Wie ist denn die Ansicht aufgebaut?
(schon sortiert?)


--- Ende Zitat ---

Hi!

Ja, die Spalte in der Ansicht "NachNr" ist Aufsteigend sortiert und hat "keine Kategorien"
Zur Spalte habe ich noch folgende Formel geschrieben:


--- Code: ---@If(@Length(MitglNr) = 1 ; "00" + @Text(MitglNr) ;
@If(@Length(MitglNr) = 2 ; "0" + @Text(MitglNr) ; @Text(MitglNr)))
--- Ende Code ---

Dies ist Notwendig, da die Mitgliedsnummer 3-stellig sein sollte.........


@umi:
Thanx wurde sofort umgesetzt! War schon etwas länger nicht mehr im Forum....;-(

@Thomas Schulte:
TSCHULLIGUNG! ;-)
Darauf bin ich mal wieder nicht gekommen! Sorry! Werde beim nächsten mal ausführlicher Suchen! ;-)


Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln