2010-09-21 5 views
1

J'ai quelques bases de données Lotus Notes que je voudrais importer dans Access ou SQL.Importation de la base de données Lotus Notes dans Access/SQL - Qu'en est-il des documents?

Je pense que j'ai la plupart des étapes vers le bas (installer le pilote ODBC NotesSQL, installer la connexion ODBC à DB Lotus, importer des données dans Access), mais je ne peux pas savoir quoi faire avec tous les documents Fichiers, documents PDF, classeurs Excel qui se trouvaient dans la base de données Lotus.

La base de données Lotus Notes est pleine d'entre eux. Après l'importation, je remarque une table dans Access appelée 'Documents', mais je ne sais pas quoi en faire. Je vois une ligne/enregistrement pour chaque document dans la base de données Lotus, mais ce n'est pas comme SQL où il y a une colonne pour les données de fichier réelles.

Veuillez me faire savoir comment je peux réellement utiliser les documents que je retire de la base de données Lotus.

+1

Quel est le schéma de la table des documents? Peut-être que le document est stocké dans un champ objet OLE (colonne)? Si c'est le cas, vous pouvez écrire l'objet sur le disque, ce qui est probablement le meilleur endroit pour stocker des documents. – Fionnuala

+0

La table de documents contient les champs suivants: Résumé (varvhar), Catégorie (varchar), Document (varchar) et _60 (DateTime). Je ne vois rien qui ressemble aux données ... en fait, après l'importation de la base de données dans Access, la taille totale du fichier Access est seulement de 1,63 Mo, donc il ressemble à des fichiers .DOC, .PDF et .XLS didn Ne faites pas le voyage :( – Albert

Répondre

1

Le mieux est d'extraire les documents de la base de données et de les stocker sur un partage de fichiers. Cela vous donnera la plus grande flexibilité. Pour conserver l'association avec les documents Notes d'origine, vous pouvez les exporter avec des noms de fichiers ou dans des dossiers avec des noms de dossier qui incluent l'ID de l'enregistrement associé dans Access. Ou au moins assurez-vous que les enregistrements incluent le chemin du document.

Je ne crois pas que vous pouvez insérer des pièces jointes via le pilote NotesSQL.

Voici un exemple de script que vous pouvez mettre dans un agent pour extraire les pièces jointes à partir de votre base de données: (de http://www.notes411.com/dominosource/tips.nsf/0/4F1FF33C52F08D76802570C2003A2FD6!opendocument)

Sub Initialize 
     Dim session As New NotesSession 
     Dim db As NotesDatabase 
     Dim collection As NotesDocumentCollection 
     Dim doc As NotesDocument 
     Set db = session.CurrentDatabase 
     Set collection = db.UnprocessedDocuments 
     Set doc = collection.GetFirstDocument() 
     While Not(doc Is Nothing) 
      Call extractMyAttachment(doc) 
      Set doc = collection.GetNextDocument(doc) 
     Wend 
End Sub 

Function extractMyAttachment (doc) 
     Dim emb As Variant 
     Dim nid As String 

     nid = doc.NoteID 

     Dim rtitem As Variant 

     Set rtitem = doc.GetFirstItem("Body") 

     Dim pathName As String, fileName As String, mydir As String, 
newfilename As String 
     mydir = "Coda" 
     pathName$ = "P:\" & mydir 

     fileName$ = Dir$(pathName$, 16) 

     Dim boxType As Long, answer As Integer 
     boxType& = 36 

     If fileName$ = "" Then 
      answer% = Messagebox("Directory "& pathName$ &" does not exist, 
would you like to create it ?", boxType&, "Create" & mydir & " on P:\ ?") 
      If answer% = 6 Then 
        Mkdir pathname$ 

        fileName$ = Dir$(pathName$, 16) 

        If filename$ <> "" Then 
         If (rtitem.Type = RICHTEXT) Then 

           Forall o In rtitem.EmbeddedObjects 
            If (o.Type = EMBED_ATTACHMENT) Then 
              newfilename$ = pathname$ & "\" & 
o.source 
              Call o.ExtractFile (newfilename$ 
) 
            End If 
           End Forall 

         End If 
        End If 
      End If 

     Else 
      If (rtitem.Type = RICHTEXT) Then 

        Forall o In rtitem.EmbeddedObjects 
         If (o.Type = EMBED_ATTACHMENT) Then 
           newfilename$ = pathname$ & "\" & o.source 
           fileName$ = Dir$(NewFileName$, 0) 
           If fileName$ <> "" Then 
            answer% = Messagebox("File "& 
NewFileName$ &" already exists, would you like to overwirite it ?", 
boxType&, "Overwrite" & NewFileName$ & " ?") 
            If answer% = 6 Then 
              Call o.ExtractFile (newfilename$ 
) 
            End If 
           Else 
            Call o.ExtractFile (newfilename$) 
           End If 

         End If 
        End Forall 

      End If 
     End If 
End Sub 
+1

Qu'en est-il des pièces jointes de style V2? Ne vaut-il pas mieux vérifier doc.HasEmbedded, si vrai, puis évaluer @AttachmentNames et utiliser doc.GetAttachment pour obtenir les NotesEmbeddedObjects? –

Questions connexes