Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Selin am 07.04.05 - 16:49:36
-
Hallo Ihr Lieben,
ich habe eine Formel erstellt, die eine Mail in eine andere Datenbank vershcieben soll.
Die Pickliste öffnet die Ordnerstruktur der Zieldatenbank und soll die Mail in den gewählten Ordner verschieben
temp:=@PickList([Folders]; "Server":"db.nsf");
@Command([Folder]; temp; "1");
Allerdings kommt die Meldung "Ungültiger Ordnername".
Habe mal ein @Prompt vor dem @Command gesetzt und temp ausgegeben.
Da kam auch der von mir ausgewählte Ordnername.
Habt Ihr ein Tip?
Danke + Gruß
Selin
-
Hi Selin,
der @Command([Folder] verschiebt IMHO ein Dokument in der aktuellen Datenbank in einen bestimmten Folder. Du wählst zwar aus einem anderen DB den Namen eines Folders aus, aber in deiner aktuellen DB existiert der Ordner nicht. Deshalb kommt der Fehler. Der Command weiß ja nicht was deine ZielDatenbank ist.
Die einzige Möglichkeit ist Script. Dokument in die ZielDB kopieren, mit PutInFolder dem Ordner zuordnen und dann in der QuellDB löschen.
lG
-daniel
-
Hi Daniel,
danke für die Antwort.
Habe jetzt mal die PutinFolder Option versucht.
Habe es erst einmal für einen bestmmten Ordner in der aktuellen Maildb getestet.
Hat funktioniert.
Allerdings weiß ich nicht, wie ich die Ordnerstruktur der anderen Datebank ansprechen soll.
Sowas wie die @picklist([Folder]) habe ich in Script nicht gefunden.
Gibt es da was?
Sub Click(Source As Button)
Dim ws As New notesUIWorkspace
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Set uidoc =ws.CurrentDocument
Set doc = uidoc.Document
Call doc.PutInFolder( "TEST" )
Call doc.RemoveFromFolder("($Inbox)")
End Sub
danke + Gruß
Selin
-
Du kannst via Script die Ansichten/Ordner aus einer anderen Datenbank lesen.
Bsp.
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Forall v In db.Views
Messagebox( v.Name )
End Forall
Mit
To get: flag = notesView.IsFolder
Return value
True indicates tha the NotesView object represents a folder
False indicates that the NotesView object represents a view
kannt Du dann abfragen, ob es ein Folder (Ordner) ist.
Andreas
-
Hallo, Selin,
die Aufnahme eines Dokuments in einen Folder beruht lediglich auf einer klitzekleinen Information (oder ggf. zwei Informationen): Der Folder "weiss", welche Dokumente dort dargestellt werden sollen, und ggf. wird diese Information auch im Dokument selbst abgelegt. Das Dokument an sich ist davon ansonsten vollkommen unberührt.
Du kannst also unter gar keinen Umständen ein Dokument von DB1 in DB2 einfach so "von Ordner zu Ordner" verschieben.
Wenn Du also von DB1 (woher auch immer - View oder Folder) ein Dokument in DB2 in einen bestimmten Folder "verschieben" (genauer gesagt: Dokument kopieren und einem bestimmten Folder in DB2 zuordnen) möchtest, musst Du wie folgt vorgehen:
- Dokument in DB1 auswählen
- Zielordner in DB2 auswählen (wie von Glombi bereits beschrieben - allerdings ist das Verfahren dafür in grösseren DBs heikel - die Standard-Notes-Methoden zur Ermittlung der vorhandenen Folder sind hier alles andere als performant. In R5 sollte man auf Damien Katz' DBDesign Class zurückgreifen, in R6 gibt es endlich die NotesNoteCollection class, die nochmals performanter ist)
- Dokument nach DB2 kopieren
- In DB2 jetzt das (ja nach dem Kopiervorgang nach wie vor bekannte) NotesDocument object in den ausgewählten Folder aufnehmen via PutInFolder.
Langer Rede kurzer Sinn: Einen @Command-Befehl oder eine Methode in irgendeiner Notes-Klasse, der das alles in einem Aufwasch erledigt, gibt es nicht.
Bernhard
-
Hallo,
ich habe das Kopieren der Mail in eine andere DB mit diesem Script gemacht.
Allerdings habe ich hier jetztd as Problem, dass ich die Folderstruktur nicht einsehen und dort einen Ordner auswählen kann.
Via PutinFolder kann ich ja lediglich einen Ordnernamen angeben.
Gibt es da nicht auch ne Möglichkeit wie:
@PickList([Folders];"SRV":"DB")?
Sub Click(Source As Button)
Dim dbtarget As NotesDatabase
Dim doc As NotesDocument
Dim niudoc As NotesUIDocument
Dim WS As New notesUIWorkspace
Dim docTarget As NotesDocument
Set doc = WS.CurrentDocument.document
Set dbtarget = New NotesDatabase( "SRV", "DB" )
If (Messagebox("Wollen Sie wirklich das aktuelle Dokument in die X Maildatenbank hinzufügen?", 3 ,"Hinzufügen") <> 6) Then
Messagebox("Sie haben die Aktion abgebrochen. Das Dokument wurde nicht hinzugefügt.")
Else
Set tmpdoc = doc.CopyTodatabase(dbtarget)
Call tmpdoc.PutInFolder ( Inputbox$("Bitte Ordner eingeben:","Ordner",""), True )
tmpdoc.PostedDate = Format$( doc.PostedDate(0), "Short Date")
Call tmpdoc.Save(True, True)
Set nuidoc= WS.CurrentDocument
Msgbox("Das Dokument wurde in xMaildatenbank hinzugefügt.")
End If
End Sub
Danke Euch + Viele Grüße
Selin
-
Hi,
Andreas hat eh schon beschrieben, wie du die Ordner einer anderen DB auslesen kannst...
Du kannst via Script die Ansichten/Ordner aus einer anderen Datenbank lesen.
Bsp.
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Forall v In db.Views
Messagebox( v.Name )
End Forall
Mit
To get: flag = notesView.IsFolder
Return value
True indicates tha the NotesView object represents a folder
False indicates that the NotesView object represents a view
kannt Du dann abfragen, ob es ein Folder (Ordner) ist.
Andreas
Du musst dann nur noch die Namen der Ordner in ein Array packen und dann mit
NotesUIWorkspace.Prompt(PROMPT_OKCANCELLIST, ...
einen Folder auswählen lassen. Das müsste es doch sein. Oder?
lG