Autor Thema: Verschieben in eine andere Datenbank  (Gelesen 1963 mal)

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Verschieben in eine andere Datenbank
« 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


Windows XP
Notes 6.5

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: Verschieben in eine andere Datenbank
« Antwort #1 am: 07.04.05 - 17:02:51 »
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
†090620141300

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Verschieben in eine andere Datenbank
« Antwort #2 am: 08.04.05 - 13:40:38 »
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
Windows XP
Notes 6.5

Glombi

  • Gast
Re: Verschieben in eine andere Datenbank
« Antwort #3 am: 08.04.05 - 13:46:33 »
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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Verschieben in eine andere Datenbank
« Antwort #4 am: 09.04.05 - 16:48:55 »
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

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Verschieben in eine andere Datenbank
« Antwort #5 am: 04.05.05 - 15:43:20 »
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
Windows XP
Notes 6.5

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: Verschieben in eine andere Datenbank
« Antwort #6 am: 04.05.05 - 16:00:55 »
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
†090620141300

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz