Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: JD am 27.01.03 - 14:07:48

Titel: Number in View???
Beitrag von: JD am 27.01.03 - 14:07:48
Habe grade festgestellt, dass eine automatische Nummerierung des Dokumente stattfindet, wenn man in einer View das Feld Number erstellt. Sortiert nach den Kategorien!! Wie kann ich diese Nummer manuell ändern bzw. welches Feld in den Dokumentmasken ist es??
Titel: Re:Number in View???
Beitrag von: wflamme am 27.01.03 - 16:03:01
Keines.... leider. Dieser Wert stammt aus der Ansicht und ist nicht mit den zugehörigen Dokumenten verknüpft - taugt deshalb als Referenz auch nicht. Entsprechend kann dieser Wert auch zu nichts anderem sinnvoll herangezogen werden als zur Anzeige - Weiterverarbeitung in Spaltenformeln etc. ist nicht möglich.
Titel: Re:Number in View???
Beitrag von: JD am 28.01.03 - 09:01:53
Na toll, als wenn ich sowas erwartet hätte :-\ . Naja dann muss ich halt doch selber ran und nummern vergeben. Danke erstmal für die Info, so habe ich ne Menge Zeit gespart.
Titel: Re:Number in View???
Beitrag von: wflamme am 28.01.03 - 10:35:44
Du kannst aber
   position$ = notesViewEntry.GetPosition( separator$ )
verwenden, um die Dokumente in der akt. Numerierung der Ansicht zu 'stempeln'.
Vorsicht aber bei der Sortierung, zB:

...
1.12
1.2
...

Titel: Re:Number in View???
Beitrag von: Raimund am 28.01.03 - 10:53:36
Hi Entwickler,

vielleicht kann Dir meine DB helfen.
Rang-Nummer wird automatisch vergeben.(Maske)
Wird ein Dokument gelöscht, so werden alle Dokumente aktualisiert.

Gruß
Titel: Re:Number in View???
Beitrag von: JD am 28.01.03 - 11:23:43
Perfekt genau das ist es was ich auch haben will, nur das der rank innerhalb zweier kategorisierungen noch funktionieren muss!!!! Wie kriege ich das am besten hin??????

Habe jetzt den Weg eingeschlagen für jedes Dokument nummern zu vergeben und einen agenten drüberlaufen zu lassen der mir die doppelten nummern löscht, allerdings habe ich damit noch Probleme da die DokumentCollection die Dokumente nicht in der Reihenfolge wie sie in der View zu sehen sind aufnimmt, sondern nach dem Erstelldatum glaube ich.

Alsomir wäre geholfen wenn mir jemand varraten könnte, wie ich die Dokumente in die DocCollection bekomme in der Reihenfolge, wie sie in der View auftauchen ODER wie Raimund das gemacht hat. Was muss ich beachten????  
Titel: Re:Number in View???
Beitrag von: JD am 28.01.03 - 11:36:46
Hier mein Agent:

Code
import lotus.domino.*;
import java.util.*;

public class JavaAgent extends AgentBase {

   public void NotesMain() {

      try {
         Session session = getSession();
         AgentContext agentContext = session.getAgentContext();

               Database database = agentContext.getCurrentDatabase(); //get the database from the above context
               DocumentCollection docCollection = agentContext.getUnprocessedDocuments(); //get all documents belonging to the actual context
               Document doc = docCollection.getFirstDocument(); //get the first document of the whole collection
               
               int[] oldnumbers= new int[docCollection.getCount()];
               System.out.println(docCollection.getCount() + " Dokumente ausgewählt");                 
            
               for (int i=0; i < docCollection.getCount(); i++) {
                  int number = doc.getItemValueInteger("number"); 
                  oldnumbers[i] = number;
                  doc = docCollection.getNextDocument(); 
               }    
                   
               int[] newnumbers = killdoublevalues(oldnumbers);      
                
               doc = docCollection.getFirstDocument();
               for (int i=0; i < newnumbers.length; i++) {
                 System.out.println(doc.getItemValue("questionfield"));
                 int number = newnumbers[i];
                 Integer numberInt = new Integer(number); 
                 doc.replaceItemValue("number", numberInt); 
                 doc = docCollection.getNextDocument(); 
             }
           

     } catch(Exception e) {
         e.printStackTrace();
      }
   }

 public static int[] killdoublevalues(int[] a) {
     
       int[] b = new int[a.length];
       b[0] = a[0];
       for (int i=1; i <a.length; i++) {
           b[i] = (a[i] > b[i-1]) ? a[i] : b[i-1]+1;
       }
   return b;
  }


}