par Invité » 26 Jan 2005 à 17:34
Tu peux toujours essayer un truc du genre:
Sub Click(Source As Button)
Dim s As New NotesSession
Dim w As New NotesUIWorkspace
Dim destDb As New NotesDatabase("","")
Dim sourceDb As New NotesDatabase("","")
Dim AllDocs As NotesDocumentCollection
Dim AllDocsView As NotesView
Dim sourceDoc As NotesDocument
Dim destDoc As NotesDocument
Dim tempDoc As NotesDocument
Dim docCount As Variant
Dim current As Variant
Dim choices (0 To 2) As Variant
choices(0) = "Base courante"
choices(1) = "Base locale"
choices(2) = "Base sur serveur"
' get source database
sourceDbType = w.Prompt(PROMPT_OKCANCELLIST, "Sélectionner l'emplacement de la base", _
"Sélectionner l'emplacement de la base que vous désirez copier:", _
choices(0), choices)
If sourceDbType = "" Then
Messagebox "Opération annulée"
Exit Sub
End If
If sourceDbType = choices(0) Then
Set sourceDb = s.CurrentDatabase
Else
If sourceDbType = choices(1) Then
sourceDbServer = ""
sourceDbNameReturn = w.OpenFileDialog(False, _
"Veuillez sélectionner l'emplacement de la base que vous désirez copier", "*.nsf", _
s.GetEnvironmentString("Directory", True))
If sourceDbName = "" Then
Msgbox("Opération annulé: Impossible de continuer sans un nom de fichiers.")
Exit Sub
End If
sourceDbName=SourceDbNameReturn(0)
Else
sourceDbServer = Inputbox("Entrer le nom du serveur Domino (Source)")
sourceDbName = Inputbox("Entrer le nom du fichier relatif à la base désirée (Source)")
If sourceDbName = "" Then
Msgbox("Opération annulé: Impossible de continuer sans un nom de fichiers.")
Exit Sub
End If
End If
If Not (sourceDb.Open(sourceDbServer, sourceDbName)) Then
Msgbox("Impossible de trouver/ouvrir la fichier: " + sourceDbName)
Exit Sub
End If
End If
' get destination database
destDbType = w.Prompt(PROMPT_OKCANCELLIST, "Base destination", _
"Sélectionner l'emplacement de la base de destination", _
choices(1), choices)
If destDbType = "" Then
Messagebox "Opération annulée"
Exit Sub
End If
If destDbType = choices(0) Then
Set destDb = s.CurrentDatabase
Else
If destDbType = choices(1) Then
destDbServer = ""
destDbNameReturn = w.OpenFileDialog(False, _
"Veuillez sélectionner la base que vous désirez copier de", "*.nsf", _
s.GetEnvironmentString("Directory", True))
If destDbName = "" Then
Msgbox("Opération annulé: Impossible de continuer sans un nom de fichiers.")
Exit Sub
End If
destDbName=destDbNameReturn(0)
Else
destDbServer = Inputbox("Entrer le nom du serveur Domino (Destination)")
destDbName = Inputbox("Entrer le nom du fichier relatif à la base désirée (Destination)")
If destDbName = "" Then
Msgbox("Opération annulé: Impossible de continuer sans un nom de fichiers.")
Exit Sub
End If
End If
If Not (destDb.Open(destDbServer,destDbName)) Then
Msgbox("Impossible de trouver/ouvrir la fichier: " + destDbName)
Exit Sub
End If
End If
If destdb.server=sourcedb.server And destdb.filename=sourcedb.filename And destdb.filepath=sourcedb.filepath Then
Msgbox("Base Source et Destination ne peuvent être la même base")
Exit Sub
End If
Set AllDocs = sourceDb.alldocuments
docCount = AllDocs.Count
current = 0
Print Cstr(Round(current / docCount * 100, 0)) + "% copié"
' - copy these to dest. db
Set sourceDoc = AllDocs.GetFirstDocument
While Not (sourceDoc Is Nothing)
Call sourceDoc.CopyToDatabase(destDb)
' display progress
current = current + 1
Print Cstr(Round(current / docCount * 100, 0)) + "% copiés"
Set sourceDoc = AllDocs.GetNextDocument(sourceDoc)
Wend
'done
Msgbox("Documents ont été copiés. Fermer et réouvrir la base (Si ouverte) afin de la rafraichir.")
End Sub
Cela va copier les documents en arrière-plan sans ouvrir la base via le UI du client.
JRY