Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Don Pasquale am 29.09.03 - 16:16:30
-
bei erstellen eines Ordner Shared, priavte desktop on first use
hat jemand eine Idee, welche Einstellungen da fehlen könnten ?
Ciao
Don Pasquale
-
Frage am Rande: Ist diese Deine Frage
http://www.atnotes.de/index.php?board=3;action=display;threadid=11334
nicht die gleiche Problematik ?
Versionsnummern Server & Client wären noch interessant.
Bernhard
-
@bernhard,
ich habe Lotus 6.0 im Einsatz.
Es ist eine weitere Facette des gleichen Problem.
Zum Einen bekam ich keine Kopie angelegt, zum anderen bekomme
ich jetzt diese Fehlermeldung.
Was die Kopie angeht, so ist es ja durchaus möglich,
dass Lotus 6 die Private Kopie nicht mehr als eigenes Icon anzeigt.
Der Code, der den Fehler evoziert :
Dim ws As New NotesUiWorkspace
Dim s As New NotesSession
Dim view As NotesView
Dim dc As NotesDocumentCollection
Dim db As NotesDatabase
Dim LOESCHLISTE List As String
Dim doc As NotesDocument
Dim Kommandodoc As NotesDocument
Dim DocDelete As NotesDocument
Dim ORDNER_DOKS_NACH_INITIATOREN As String
Dim ORDNER_DOKS_NACH_SENDEN_AN As String
Dim ORDNER_EIGENE_DOKUMENTE As String
Dim j As Integer
ORDNER_DOKS_NACH_INITIATOREN = "_Initiator"
ORDNER_DOKS_NACH_SENDEN_AN = "_Senden"
ORDNER_EIGENE_DOKUMENTE = "Eigene Dokumente"
Dim session As New NotesSession
Dim vc As NotesViewEntryCollection
Set db = s.CurrentDatabase
Set db = session.CurrentDatabase
user = session.CommonUserName
Set view = db.GetView(ORDNER_EIGENE_DOKUMENTE)
-> Set vc = view.AllEntries
Call vc.RemoveAllFromFolder(ORDNER_EIGENE_DOKUMENTE)
Set db = session.CurrentDatabase
Set view = db.GetView(ORDNER_DOKS_NACH_INITIATOREN)
Set vc = view.GetAllEntriesByKey(session.CommonUserName,False)
Call vc.PutAllInFolder( ORDNER_EIGENE_DOKUMENTE, True)
Set view = db.GetView(ORDNER_DOKS_NACH_SENDEN_AN)
Set vc = view.GetAllEntriesByKey(s.CommonUserName, False)
Call vc.PutAllInFolder(ORDNER_EIGENE_DOKUMENTE, True )
Set view = db.GetView( ORDNER_EIGENE_DOKUMENTE )
Call ws.ViewRefresh
Ciao
Don Pasquale
-
Da gibt es ein Problem im LotusScript: Dieser Fehler wird generiert, wenn der Folder noch nicht besteht. Sprich: der Benutzer muss den Folder zuerst von Hand mal erstellt haben, bevor man mit LS auf den Folder zugreifen kann. Bei Private on First Use auf dem Server gibts Möglichkeiten, das zu umgehen, soviel ich weiss, gibt es aber bei Desktop-Foldern keinen Workaround, ausser dem Benutzer irgendwie mitzuteilen, dass er erst mal auf das Icon klicken soll.
-
Hm, meines Erachtens ist dies noch nicht einmal ein "Problem in LS", sondern eine völlig logische Konsequenz: Gibt es ein Objekt noch nicht, kann man auch nicht darauf zugreifen.
Der Code sollte nach dem Instantiieren eines Objekt sowieso immer auf Erfolg prüfen, hier also:
Set view = db.GetView(ORDNER_EIGENE_DOKUMENTE)
If Not (view is Nothing) then
'mach Dein Ding
else
'warne oder lege den Folder an oder ...
End If
Bernhard
-
Bernhard, Du hast natürlich prinzipiell Recht. Das Problem im LS ist, dass man einen solchen Folder nicht anlegen kann, schliesslich sollte er das ja eigentlich tun, genauso wie er das im UI macht, wenn man ihn anklickt. Ist also schon ein wenig ein Spezialfall. Entweder bekommen wir irgendwann die Möglichkeit, die Erstellung zu generieren, oder dann lernt LS, den Folder beim ersten Zugriffsversuch anzulegen - meine ich.
-
Ach, es wär so schon, wenn es so einfach wär.
Ich habe, weil ich es einfach nur wissen wollte,
die 3 kritischen Zeilen auskommentiert. Und
schwuppDich, da funktionierte es.
Jetzt sollte der Ordner ja eigentlich angelegt sein,
also habe ich die zeilen wieder einkommentiert und
leider,leider isses nu wieder so wie es vorher war:
Index can not be created on Server.
Ciao
Don Pasquale
-
Moment, leider tritt der Fehler in N6 manchmal auch auf, wenn der Folder exisitiert ......... :-(( .... Lotus Quality Management ist informiert ... heisst es so schön: Anders ausgedrückt, da gibts im Moment keine Abhilfe ....
Frage: passiert das mit dem leeren Folder oder wenn im Folder was drin ist oder in beiden Situationen?
-
Falls der Folder noch nicht existiert, beendet sich das Programm. !
Falls der Folder existiert, kommt eben die Fehlermeldung und die Funktion wird abgebrochen.
Ciao
Don Pasquale
-
Also, wenn der Folder nicht existiert, sollte man das so wie Bernhard beschrieben hat abfangen. Das sollte diese Sache in den Griff bekommen.
Anyway, meine Frage war eigentlich eher, wenn der Folder exisitiert, verhält es sich dann unterschiedlich abhängig davon, ob der Folder Inhalt hat oder nicht? Je nachdem lässt sich die Sache dann wenigstens abfedern, indem man beispielsweise view.Entrycount überprüft oder so.
-
@Semeaphorus
Der Fehler tritt konsequent auf, ob der Ordner nun leer
ist oder nicht.
Ciao
Don Pasquale
-
Ergänzung, der Fehler tritt auch bei folgendem Code auf
Dim ORDNER_EIGENE_DOKUMENTE As String
Dim STATUS_IN_BEARBEITUNG As String
Dim STATUS_NEU_ZUGEWIESEN As String
ORDNER_EIGENE_DOKUMENTE = "Eigene Dokumente"
STATUS_NEU_ZUGEWIESEN = "1. NEU ZUGEWIESEN"
STATUS_IN_BEARBEITUNG = "2. IN BEARBEITUNG"
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim entry As NotesViewEntry
Dim nav As NotesViewNavigator
Set db = session.CurrentDatabase
Set view = db.GetView(ORDNER_EIGENE_DOKUMENTE)
Set nav = view.CreateViewNav
> Set entry = nav.GetFirstDocument
While Not (entry Is Nothing)
Set doc = entry.Document
Irgendwas ist mit diesen Public, Private at first use
Ciao
Don Pasquale
-
Hm, da ist möglicherweise nichts zu machen, ausser vielleicht auf die eben gerade freigegebene 6.0.3 zu gehen und zu hoffen, dass das Problem dort gefixt ist.
-
Hast Du mir einen link hierzu ?
Ciao
Don Pasquale
-
Sorry, nein, ich hab die relevanten Daten intern. Aber Du findest eigentlich alles auf LDD:
http://www.notes.net
Einerseits die Knowledgebase
Andererseits die Liste mit den Bugfixes
Wo die dort genau liegen, weiss ich leider auch nicht, da ich das wesentliche Zeugs hier als Repliken liegen habe
-
@Semeaphorus,
vielen Dank für Deine Hilfe.
Wenn ich schon das Bugfix nicht finde, würde mir zumindest
der Bug helfen. Weisst Du, wo Du das geufnden hast ?
Ciao
Don Pasquale
-
Knowledgebase, ebenfalls über LDD erreichbar, suche nach der Fehlermeldung, es sind etwa 5 Einträge dazu drin
-
Scheint, dass es da tatsächlich unterdessen auch einen Workaround gibt:
Lotus Software Knowledge Base
Title:
Using Method or Property of NotesView Object Returns Error: "Index Is not to Be Generated on Server"
Product:
Platform(s): Lotus Notes > Lotus Notes > 6.x
Platform Independent
Document Number: 1108323 Date: 05.06.2003
This document is based on the following :
About SPRs
SPR Number SPR Status SPR Fixed Release
TGOO5JVEGC
Problem
When a LotusScript formula calls a method or property of the NotesView class obtained using the GetView method (of the NotesDatabase class), the following error message occurs:
"Notes Error: Index is not to be generated on Server (<view/folder name>)"
This issue occurs only in cases where the view or folder accessed by the GetView method is a Personal On First Use (POFU) view/folder, and the user has created their personal version of the view/folder. The issue occurs only when using a Notes 6 Client. It does not occur when executed from a Notes R5 Client.
Note: This same error can be observed in both Notes 5.x and Notes 6.x when the POFU view or folder has not been created yet by the user; this is expected behavior. The POFU version of the view or folder cannot be created using a back-end method such as GetView. For more information on this issue see the related document "Opening View Programmatically Returns Error: "Index Is Not To Be Generated on Server" (#1094072) .
This issue has been reported to Lotus Software Quality Engineering.
Workaround:
You can set the formula to loop through all of the views and folders in the database until the correct one is found (which is determined by testing for the name and checking whether the Readers field contains the user's name).
The example below uses the GetView method if it is being executed on a Notes R5 Client or Domino R5 Server; otherwise, it uses the loop workaround. In the example the references to "POFU" should be changed to the name of the view/folder you would like to get a handle to:
If s.NotesBuildVersion<190 Then 'If running R5 then simply use GetView.
Set pview=db.GetView("POFU")
Else 'If ND6 will do loop workaround
Forall v In db.Views
If v.name="POFU" And Isarray(v.readers) Then
If v.readers(0)=s.UserName Then
Set pview=v
Exit Forall
End If
End If
End Forall
End If
'now pview has handle to the Personal On First Use version of the view/folder
Related Documents:
Notes Client/Server Hang in Agent/LotusScript Getting Handle to Private-on-First-Use Folder
Document #: 1085379
Opening View Programmatically Returns Error: "Index Is Not To Be Generated on Server"
Document #: 1094072
-
@Semeaphorus
Ich glaube die 5 gefunden zu haben, oder auch nicht,
denn ich verstehe nichts, gar nichts und
das liegt nicht an meinem englisch.
Aber das war auf IBM Seiten fast immer so.
Ciao
Don Pasquale
-
Probiere doch mal, die Zeile mit dem GetView durch den oben empfohlenen Loop zu ersetzen:
Forall v In db.Views
If v.name="POFU" And Isarray(v.readers) Then
If v.readers(0)=s.UserName Then
Set pview=v
Exit Forall
End If
End If
End Forall
Das würde eigentlich sowohl in 5 wie in 6 auch funktionieren.
-
BINGO !
@Semeaphorus
Herzlichen Dank für Deine Unterstützung, darauf wäre ich nie gekommen.
Und ohne Deinen Hinweis dass dies ein Bug ist, hätte ich einen
Therapeuten benötigt.
Ich habe also genau Deinen Code genommen und
die fehlenden Declarations ergänzt nebst dem "POFU".
Nun will er wieder so wie ich will.
Die Welt ist schön.
Ciao
Don Pasquale
-
Schön, das das zum Klappen gekommen ist, gebe aber zu, dass der Code aus der Knowledge-Base kommt :-) Mir bleibt nur das Verdienst, dass ich mich an den Bug erinnert habe ...... :-))