Domino 9 und frühere Versionen > ND7: Entwicklung

NotesViewNavigator.GetNextCategory(cat) verliert den Index?

(1/2) > >>

Demian:
Moin,moin,

ich habe eine DB aus der an bestimmte Personen ohne Zugriff auf die DB eine E-Mail Aufstellung mit einzelnen Feldinhalten aus einzelnen Doks geschickt werden soll.

Ich bin jetzt auf folgendem Weg:

1.) Der entsprechenden Maske ein Feld vom Typ Namen eingefügt mit Mehrfachwerten zulassen (für die Mailaddresse(n)).

2.) Eine Ansicht erstellt, in der nach den einzelnen Namen kategorisiert wird.

Wenn ich jetzt mit folgendem Script, die einzelnen Personen mit den einzelnen Doks durchlaufe, funktioniert alles wunderbar. Er gibt mir die Mailadressen, sowie die Werte aus den einzelnen Doks zurück.


--- Zitat ---Sub Click(Source As Button)
   'General
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim work As New NotesUIWorkspace
   Dim doc As NotesDocument
   
   'View
   Dim uiview As notesuiview
   Dim ViewNav As NotesViewNavigator
   
   'Entries
   Dim ecol As NotesViewEntryCollection
   Dim cat As NotesViewEntry
   Dim entry As NotesViewEntry
   
   'create viewnaw
   Set db = s.CurrentDatabase   
   Set uiview  = work.CurrentView
   Set ViewNav = uiview.View.CreateViewNav
   
   'get first person
   Set cat = ViewNav.GetFirst
   
   While Not (Cat Is Nothing)
      Msgbox Cat.ColumnValues(0) & " - " & cat.ChildCount
      
      'get all childs
      Set Ecol = uiview.View.GetAllEntriesByKey(Cat.ColumnValues(0),True)
      'get first child
      Set entry = ecol.GetFirstEntry      
      
      'run over all childs
      While Not (entry Is Nothing)
         Msgbox entry.Document.Car(0)
         'get next child         
         Set entry = ecol.GetNextEntry(entry)
      Wend
      
      'get next person
      Set cat = ViewNav.GetNextCategory(cat)
   Wend   
End Sub
--- Ende Zitat ---

Rufe ich jedoch in dem Script Funktionen einer lib auf, erhalte ich in der Zeile Set cat = ViewNav.GetNextCategory(cat) folgende Meldung: Notes Error-Eintrag im Index nicht gefunden (Name der Ansicht).

Im Debugger ist zu sehen, dass das Objekt "cat" aber nach wie vor den Wert hat, der durch Set cat = ViewNav.GetFirst gesetzt wurde.

Alle Variablen aus der Lib haben eine andere Bezeichnung wie in o.g. Code. Meine Vermutung ist, dass er den Index im aufrufenden Script verliert, weil in der lib auch eine Ansicht (eine andere) geöffnet wird (jedoch unter anderem Variablennamen). Aber laut Debugger sind alle Variablen richtig gesetzt.

Hat einer ne Idee, woran das liegen könnte? Möchte nur ungern im aufrufenden Script erst alle Daten auslesen um danach nochmal durch alle Arrays rennen zu müssen.

Sollte der lib-Code benötigt werden, bitte Info. Da ich mich mit der Thematik NotesRichTextTable noch nicht beschäftigt habe, ist das Ganze halt noch auf Testbasis. Also auch noch nichts wirklich dokumentiert, oder so. Wenns erforderlich ist, würde ich die DB noch anhängen, aber vielleicht hat ja jemand auch so einen Workaround.


Änderung:
Mir fällt grad auf, dass ich statt NotesRichTextTable bzgl. lib-Code NotesViewNavigator geschrieben hatte  ;D

Thomas Schulte:
Es wundert mich ein wenig das das bei dir unter 7.0.x auftaucht ....

Irgendwann schreib ich da noch einen Artikel zu aber erst wenn IBM den PRIO 1 ESR wieder abwürgt ...

Sollte irgendeiner von euch beschließen auf Version 8.5 hochzugehen und er irgendwo mit NotesViewEintries und Kategorien arbeiten dann kann er sich schon mal darauf einstellen das es ohne Änderung in der Entwicklung nicht wirklich funktionieren wird.

PMR Nummer 77885 999 724 wurde vom IBM Support erfolgreich erstellt. Sie enthält die folgende Kurzbeschreibung:
Folgender Code innerhalb einer Anwendung führt dazu, das die View Entries nicht sauber abgearbeitet werden ...

Set category = nav.GetFirst
Do Until category Is Nothing
       Set nve = nav.GetNextDocument(category)
.
.
.
           Set category = nav.GetNextCategory(category)
Loop

Der Fehler, beziehungsweise die Serie von Fehlern die hinter den Viewentries stehen sind IBM bereits bekannt.

SPR # PRUN7NZRBR siehe hier ....
http://www-10.lotus.com/ldd/nd85forum.nsf/dba3ca7e515d55ff85256a0700727b35/6df1db53c2cd186885257555007322b3?OpenDocument
und
SPR # OIHZ7NAPDQ
siehe hier ...
http://www-10.lotus.com/ldd/nd85forum.nsf/DateAllThreadedWeb/d16da9512c53e7018525753e006f7d0f?OpenDocument

Bei uns hatte das Gottseidank den Effekt das gar nichts mehr ging. Eine winzig kleine Änderung am Code hätte dazu geführt, das der Agent problemlos gelaufen wäre, dummerweise aber immer nur das erste Dokument zurückgeliefert hätte. Der Schaden wäre dann erheblich größer geworden.

Demian:
achso, hatte ich vergessen zu erähnen: Version 7.01, wobei wir Ende des Jahres auf Version 8.X umsteigen.

Danke für die Links, die werde ich mir nachher nochmal in aller Ruhe ansehen. Wobei es auf den 1. Blick so aussieht, als würde das Problem da unabhängig vom drumherum auftreten. Bei mir funktioniert o.g. Code ja immer einwandfrei. Erst wenn ich lib-Funktionen aufrufe, steigt er aus.   :o

Ist ja wieder mal typisch. Da hab ich gedacht, ich hätt ne schön saubere Lösung ohne die Zugriffsrechte der DB anfassen zu müssen und dann sowas  ::)

Thomas Schulte:
Ach so ...
Kann es vielleicht sein das du am Range der erzeugten Objekte scheiterst?

Demian:

--- Zitat von: Thomas Schulte am 15.06.09 - 09:57:30 ---Kann es vielleicht sein das du am Range der erzeugten Objekte scheiterst?

--- Ende Zitat ---

Was meinst du mit Range der erzeugten Objekte  ???

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln