Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Raimund am 19.09.02 - 13:27:28

Titel: Laufende-Nummer
Beitrag von: Raimund am 19.09.02 - 13:27:28
Hi Entwickler,

gibt es eine Möglichkeit für ein Feld in der Maske, dass sich mit einem neuen Doc die Zahl um 1 erhöht??


Gruß
Raimund
Titel: Re: Laufende-Nummer
Beitrag von: eknori am 19.09.02 - 13:32:32
JA, die gibt es.

Ach so, du willst auch noch wissen, wie man das macht ??.

Guckst du hier:

http://217.160.137.156/html/cgi-bin/yabb/YaBB.pl?board=002-2;action=display;num=1031917607;start=2

eknori
Titel: Re: Laufende-Nummer
Beitrag von: Raimund am 19.09.02 - 13:44:50
Hi,

habe es damit schon versucht und es funktionierte nicht.
Die Feldnamen habe ich natürlich angepasst.

Gruß
Raimund
Titel: Re: Laufende-Nummer
Beitrag von: eknori am 19.09.02 - 13:48:47
Dann poste mal bitte deinen code ...
Titel: Re: Laufende-Nummer
Beitrag von: Raimund am 19.09.02 - 13:53:58
Hi,

     Dim session As New NotesSession
     Dim db As NotesDatabase
     Dim view As NotesView
     Dim doc As NotesDocument
     
     If Source.IsNewDoc Then
           Set db = session.CurrentDatabase
           Set view = db.GetView("Rank")
           
           Set doc = view.GetLastdocument '
           
           If doc Is Nothing Then
                 Source.Document.OrderCat = 1
           Else
                 Source.Document.OrderCat= doc.OrderCat(0) + 1
           End If
     End If
Titel: Re: Laufende-Nummer
Beitrag von: eknori am 19.09.02 - 14:05:25
und was funktioniert da nicht; du müsstest schon ein bisschen lauter sprechen  ;)

hab hier ne Formel, die ich mal eingestzt habe

create a Computed when Composed Number Field with the following formula:


REM "first doc number";
tempPRText := 1;
tempPRNumber := tempPRText;

REM "all docs after the first and add 1 to increase counter";
tempText:=@Subset(@DbColumn("" : "NoCache"; ""; "(docnumber)"; 1); 1);
temp := tempText;
@If(temp != ""; temp + 1; tempPRNumber)


then create a view called (docnumber) with the first column sorted in decsending order with the column value of the field you created above
Titel: Re: Laufende-Nummer
Beitrag von: Raimund am 19.09.02 - 14:46:57
Hi,

zählt leider nur bís 2.  :-/

Dann ist ENDE

Gruß
Raimund
Titel: Re: Laufende-Nummer
Beitrag von: gulp am 19.09.02 - 16:04:56
Ist die Ansicht richtig sortiert?

lg
gulp
Titel: Re: Laufende-Nummer
Beitrag von: Rob Green am 19.09.02 - 16:10:01
eknori hat ne lösung, die würde ich auch nehmen  ;)

Warum Dein Teil net funzt und nur bis zwei zählt?
A.) ich weiß nicht, wo das Script sitzt, also QuerySave oder wo? Wäre wichtig
B.) und B ob das Feld im Sourcedoccat mit 1 als Default Wert - wenn Doc neu generiert wird - gefüllt wird, aber ich bin mir ziemlich sicher, daß deswegen nur 2 kommt

If Source.IsNewDoc Then
'aha, Doc ist neu, dh nur dann soll das Ding rennen
 Set db = session.CurrentDatabase
 Set view = db.GetView("Rank")
  'Rankview scheint wichtig
 Set doc = view.GetLastdocument '
  'holt sich das letzte doc...muß wohl das Zählerdoc sein oder alle Docs im Sinne des eknorischen dbcolumns  ;D
 If doc Is Nothing Then
'ah jetzt, wenn also Doc jungfräulich ist
  Source.Document.OrderCat = 1  
'dann setzt ne 1 ins aktuelle Doc
 Else  
'sonst setze eben in aktuelles Doc Zähler um 1 hoch zu dem, was im letzten Doc in der View zu finden ist
  Source.Document.OrderCat= doc.OrderCat(0) + 1  
 End If  
End If

Sach mal *schaut ihn mit blinzelnden Augen an*
hat du etwa die View aufsteigend oder absteigend sortiert? Heißt: bekommt er das Doc mit der höchsten oder niedrigsten Zahl bei der methode "getlast"

Ich wette meine Buchstaben auf der Tastatur, daß Du immer das älteste Doc (das Jungfrauendoc) ziehst und daher nur die 2 stets bekommst...rofl....
Titel: Re: Laufende-Nummer
Beitrag von: Raimund am 20.09.02 - 07:37:54
Hi Entwickler,

vielen Dank für die Hilfe.
Rob_Green hatte Recht. Die Formel von Eknori war OK.
Ich hatte die View aufsteigend und nicht absteigend sortiert.

War wohl nicht mein Tag gestern. ;D

Gruß
Raimund
Titel: Re: Laufende-Nummer
Beitrag von: Raimund am 20.09.02 - 13:09:57
Hi Entwickler,

und jetzt eine perfekte Lösung:


Sub Postopen(Source As Notesuidocument)
     
     Dim session As New NotesSession
     Dim WebDB As NotesDatabase
     Dim View As NotesView
     Dim WebDoc As NotesDocument
     Dim uidoc As NotesUiDocument
     Dim workspace As New NotesUIWorkspace
     Dim i As Variant
     Dim Count As String
     Set uidoc = workspace.CurrentDocument
     Set WebDB = session.CurrentDatabase
     Set view = WebDB.GetView( "Rank" )
     Set WebDoc = view.GetLastDocument
     If WebDoc Is Nothing Then
           Goto Label
     Else
           i = WebDoc.GetItemValue("OrderCat")(0)
           
           
           count = i +1
           If  uidoc.FieldGetText("headline") = "" Then
                 Call uidoc.FieldSetText("ordercat",count)
           End If
     End If

End Sub


Gruß
Raimund
Titel: Re: Laufende-Nummer
Beitrag von: Rob Green am 20.09.02 - 14:48:23
gewagte Lösung...

wenn das Doc nicht im Editmode geöffnet wird, was dann? Denn fieldsettext geht nur im Editmode.

Zumal der Counter ganz fix zu Speicherkonflikten führen kann.

Nun denn, viel Glück
*oi oi oi*  ;D