Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: MasterminD am 21.01.10 - 14:59:38

Titel: NotesDatabase.Title -> Database has not been opened yet
Beitrag von: MasterminD am 21.01.10 - 14:59:38
Hallo

Ich habe einen Agent zusammengestellt, der folgendes LotusScript ausführt.
Er soll MailArchiv Datenbanken Titel renamen.

Dazu liest er aus einer Stammdaten DB (in der befindet sich auch dieser Agent) den Pfad/Filename zum Archiv DB und den zu verwendenden Titel aus.
Das funktioniert auch soweit.

Jedoch kann ich den Titel dieser DB nicht ändern, da die Meldung "Database  ... has not been opened yet" erscheint.

Was mache ich falsch?

Danke für eure Hilfe
(Durch Suchen im Forum bin ich nicht schlauer geworden, Google half mir auch nicht weiter)

Code
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim dbpath As NotesItem
Dim dbtitle As NotesItem

Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()

While Not(doc Is Nothing)
  Set dbpath = doc.GetFirstItem( "ArchiveDb" )
  Set dbtitle = doc.Getfirstitem( "ArchiveDatabaseTitle" )
  'MessageBox dbpath.Text
  'MessageBox dbtitle.Text
    
  Dim moddb As New NotesDatabase( "", dbpath.Text )
  Call moddb.Open("", dbpath.Text)
  MessageBox moddb.FileName,, "DB File Name"
  moddb.Title = dbtitle.Text
  MessageBox moddb.Title,, "DB Title"
  
  Set doc = collection.GetNextDocument(doc)
Wend
Titel: Re: NotesDatabase.Title -> Database has not been opened yet
Beitrag von: ascabg am 21.01.10 - 15:03:31
Hallo,

Den Titel welcher Datenbank?


Andreas
Titel: Re: NotesDatabase.Title -> Database has not been opened yet
Beitrag von: MasterminD am 21.01.10 - 15:11:30
Tja? Ich bin kein LotusScripter, deshalb.

Ich dachte mir hald, da ich mir mit dim ein NotesItem angelegt habe,

Code
Dim dbpath As NotesItem
Dim dbtitle As NotesItem

ich dieses auch mit set befüllen muss.

Code
Set dbpath = doc.GetFirstItem( "ArchiveDb" )
Set dbtitle = doc.Getfirstitem( "ArchiveDatabaseTitle" )

Für Verbesserungen bin ich aufgeschlossen :)

Aber soweit funktioniert es ja. Ich kann mir den DBName (NotesDatabase.DBName) ausgeben lassen. Nur das NotesDatabase.Titel will nicht.

Der Get Aufruf bring einen leeren String zurück und der Set Aufruf eben die beschriebene Meldeung "... not been opened yet"
Titel: Re: NotesDatabase.Title -> Database has not been opened yet
Beitrag von: ascabg am 21.01.10 - 15:17:30
Sorry. Fehler von mir. Ich hatte die Deklarationen der Variablen ueberlesen.

Daher nun noch mal.
Bei welcher Datenbank kommt es denn zu dem besagten Fehler?

Andreas
Titel: Re: NotesDatabase.Title -> Database has not been opened yet
Beitrag von: MasterminD am 21.01.10 - 15:25:00
Wenn diese Zeile ausgeführt wird

Code
moddb.Title = dbtitle.Text

Bei der DB, von der der Titel geändert werden soll, handelt es sich um eine MailArchive DB mit einer R7 Schablone.
Titel: Re: NotesDatabase.Title -> Database has not been opened yet
Beitrag von: MasterminD am 21.01.10 - 15:57:51
Ich konnte es nun zum laufen bringen, indem ich diese Zeile modifiziert habe.

Code
Dim moddb As New NotesDatabase( "", dbpath.Text )

Gibt man hier dezidiert den Server an, auf dem die zu öffnende DB liegt, funktionierts. Obwohl Agent und die zu öffnende DB auf dem gleichen sind.

Dieses Verhalten ist mir aber nicht klar, ich dachte durch "" wird der CurrentServer verwendet.
Titel: Re: NotesDatabase.Title -> Database has not been opened yet
Beitrag von: koehlerbv am 21.01.10 - 16:05:51
Dieses Verhalten ist mir aber nicht klar, ich dachte durch "" wird der CurrentServer verwendet.

Siehe DesignerHelp: Das gilt natürlich nur, wenn der Agent auch vom Server ausgeführt wird und nicht durch den Client (der meint damit natürlich sein eigenes Datenverzeichnis!).

Bernhard
Titel: Re: NotesDatabase.Title -> Database has not been opened yet
Beitrag von: MasterminD am 21.01.10 - 16:14:50
OK. Nun ist es mir klar.
Danke
Titel: Re: NotesDatabase.Title -> Database has not been opened yet
Beitrag von: pete_bla am 21.01.10 - 21:17:53
Hi,
ich dachte durch "" wird der CurrentServer verwendet.
für @Funktionen gilt es schon.

für Lotus Script aber nur wie Bernhard sagt:
Siehe DesignerHelp: Das gilt natürlich nur, wenn der Agent auch vom Server ausgeführt wird und nicht durch den Client (der meint damit natürlich sein eigenes Datenverzeichnis!).

Gruss, Pete(r)