Avatar billede borsk Nybegynder
18. december 2003 - 12:26 Der er 7 kommentarer og
1 løsning

Extract embedded object fra notes DB

Hejsa

Vi er igang med at trække dokumenter ud af en stor notes database (9 GB) det går også fint.

Men der er nogle embedded objectes og de driller.

En som har et godt eksemple på et bid kode som detacher et embedded object ud til f.eks. D:\files\

Koden vi bruger:

Set rtitem = doc.GetFirstItem( "Body" )
Forall o In rtitem.EmbeddedObjects
  If ( o.Type = EMBED_OBJECT ) Then
      Messagebox "Embedded object!"
    Set obj = doc.GetAttachment( o.Source )
    Call obj.ExtractFile( "d:\files\c\tmp.txt" )
    End If
End Forall

Når vi forsøger får vi denne fejl:

Cannot extract objects or objectlinks.

Nogle ideer ?

Borsk
Avatar billede jogii Nybegynder
18. december 2003 - 12:35 #1
Notes håndterer almindelige attachede objekter lidt forskelligt fra OLE-objekter. GetAttachment virker kun for "Attachede"-embeddede objekter.

Hvis det er OLE-embedde objekter, skal du faktisk lave kode der aktiverer objektet og via OLE/COM kald gemmer en kopi inde fra f.eks. MS Word.
Det svarer til at du via UI aktiverer objektet og så fra Word vælger SaveAs.
//Jörg
Avatar billede cdelicht Nybegynder
18. december 2003 - 12:36 #2
Prøv at lave en msgbox o.name for at få Registry default name
Avatar billede avest Nybegynder
18. december 2003 - 13:57 #3
Du kan prøve med
set object = doc.getFirstItem("navn").getEmbededObject("name")
if not object is nothing then object.ExtractFile( path$ )
Avatar billede borsk Nybegynder
18. december 2003 - 15:59 #4
Ved hjælp at "obj.Activate", er det nu lykkedes mig at kunne aktivere OLE-objectet fra scriptet (enten som true eller false). Det var første skridt!

Nu mangler jeg at kunne få scriptet til at gemme dette object i en fysisk fil på disken. Er der nogle af jer der har ideer om hvordan dette kan gøres? jogii du snakker om at dette kan gøres via et OLE/COM kald - hvordan gøres dette?

Borsk
Avatar billede jogii Nybegynder
19. december 2003 - 09:07 #5
Den handle du får, når du "obj.Activate" er nøglen. Dvs den fra
  Set handleV = notesEmbeddedObject.Activate( show )
Den er dit OLE-interface. Afhængig af hvilken objecttype der nu er tale om (Word, 123, Excel, Powerpoint etc) skal de efterfølgende kald tilpasses objekttypen du har fat i. Den nemmeste måde er at starte Makro-optageren i de pågældende produkter og udføre de funktioner du ønsker udført manuelt. Derefter kigger du koden i makroen efter og laver tilsvarende kode i LotusScript.

Desværre er det ikke altid nemt i MS produkter at finde ud af den rigtige syntakts for en metode/funktion. LotusScript kan kun kalde "funktioner" af typen funktion( var1, var2, var3, ...), mens de i MS ser lidt anderledes ud. Men ved at granske inline og online hjælpen kan man ofte gætte sig frem til syntaksen.

f.eks. kunne nedenstående være gyldig kode:
call handleV.FileSaveAs("C:\temp\dummy.doc")
Jeg har ikke checket koden, men det er bare for at vise dig ideen.
//Jörg
Avatar billede borsk Nybegynder
19. december 2003 - 10:57 #6
Hejsa

Så lykkedes det og jogii du er tæt på pointene :) du gav den inspiration der skulle til før vi fandt den rigtige metode.

    Call handle.SaveAs("d:\files\tmp.doc")

Men har lige et "sub" spørgsmål der er også nogle enkelte dokumenter som siger: "You need to supply the bulk encryption key to ...." når jeg forsøger at detache dem? er de virkelig blevet krypteret eller er det en eller anden fejl.

Borsk
Avatar billede jogii Nybegynder
19. december 2003 - 11:06 #7
Jeg ledte på Google efter "bulk encryption key" og fandt lidt på MSDN omkring det. Det lader til at være en ren MS-affære.

bulk encryption key
A session key derived from a master key. Bulk encryption keys are used in Schannel encryption.

//Jörg
Avatar billede borsk Nybegynder
19. december 2003 - 11:10 #8
Jogii tak for det, jeg vil prøvet at kigge lidt på det.

Håber at du gider svarer hvis jeg poster endnu et indlæg her lidt senere....

Borsk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
Søstrene Grene skifter Microsoft ud med SAP og rykker for første gang i clouden i stor ERP-transformation: Der er brug for en helt ny tilgang