18. juli 2003 - 10:58Der er
7 kommentarer og 2 løsninger
Embeddedobjects på notesdocument
Hej Eksperter. Jeg har et meget generende problem med embeddedobjects på notesdocument. Senariet er som følger: Brugeren opretter et dokument. Indtaster et udvalg og trykker på en knap. Knappen åbner Excel og overføre data fra notes. Brugeren lukker excel (ja til at gemme.). Lukker notesdokumentet (ja til at gemme). Excel dokumentet er nu gemt som vedhæftning på notesdokumenten. Når brugeren åbner dokumentet igen skal vedhæftningen vises i dok (som embeddedobject). Den del går fint. Jeg gør det ved at gemme vedhæftningen på disk, embedde det i et rt-felt, og slette på disk. Problemet opstår hvis brugeren siger gem+luk til dokumenten. Så bliver det embeddede object gemt på notesdocument, og hvis dokumentet åbenes igen, dannes en ny object men det gamle er der stadig. Hvordan fjerner man embeddedobjects fra doc? Jeg har prøvet følgende i postsave: Forall items In doc.Items If items.type = 1090 Then Call items.remove Call doc.save(True,True) End If End Forall
jeg har også prøvet: Forall o In doc.EmbeddedObjects o.remove End Forall
Man kan jo kaste sig over dette fra to sider. Brugeren har gjort noget "forkert", ergo rettes der op på dette med noget kode - Det er det du er i gang med. Alternativt kunne du forhindrer at brugeren gør noget "forkert".
Du skriver "Problemet opstår hvis brugeren siger gem+luk til dokumenten." - såvidt jeg husker er dette et menupunkt i Excell, fjern dette menupunkt fra den skabelon du anvender, så kan brugeren ikke lave fejlen.
Det brugerne gør skal sådan set være lovlig. Hvis man ikke kan gemme og lukke notesdokumentet er det da et sølle dokument. Hvis de beslutter at oprette et nyt excel dokument, skal de jo bare kunne gøre det, og når den bliver gemt overskriver excelfilen den gamle excelfil. Men det vil bare give samme problem som nu hvor man så åbner dokumentet og nu ser 2 embeddede objects istedet for kun det nye exceldok.
Hmmm, må nok indrømme, at jeg ikke helt forstår hvad det er du vil.
Jeg har derfor taget udgangspunkt i dit oprindelige indlæg, hvori du spørger "Hvordan fjerner man embeddedobjects fra doc?... Jeg har prøvet følgende i postsave:..."
Jeg har lavet en formular med ét felt "body" og i dette felt har jeg indsat et embedded Excell object baseret på en fil. Nedenstående LS fjerner dette object når jeg gemmer dokumentet på ny.
Sub Postsave(Source As Notesuidocument) Dim doc As NotesDocument Dim rtitem As Variant Set doc = source.document Set rtitem = doc.GetFirstItem( "Body" ) If ( rtitem.Type = RICHTEXT ) Then Forall o In rtitem.EmbeddedObjects If ( o.Type = EMBED_OBJECT ) Then Call o.Remove Call doc.Save( False, True ) End If End Forall End If End Sub
Jeg håber du kan bruge dette - ellers må du evt. lægge din database et sted så den er tilgængelig, så kan jeg kigge på den.
Btw mit setup er Windows XP home edition, Excell 2000 og Notes R5.0.11
Hvorfor vil du vise bilaget som et embedded-doc efter den oprindelige åbning? Det gældende Excel-ark er vel stadig det der er gemt som attachment.
Forstår jeg dig rigtig på følgende måde: Hver gang brugeren åbner dokumentet til læsning/skrivning skal attachmentet detaches og embeddes som OLE-objekt i RT-feltet (til visning?). Bliver der foretaget ændringer i regnearket? Hvis ja, i hvilken udgave?
jogii: Hvad skal jeg sige... vi har nogle meget vanskelige brugere og en ledelse som ikke kan sige nej.... Men bortset fra det har du fat i det rigtige. Idet dokumentet er oprettet ligger excel-filen som attachment. (btw så benyttes Swing -www.swingsoftware.com - til håndteringe af dette). Brugerne vil så kunne se vedhæftningen i dokumentet, så de ikke skal ulejlige sig med at trykke på 'åben vedhæftning'knappen. Det går jo fint første gang, men hvis der trykkes gem (+luk), vil der ved næste åbning ligge 2 embeddedeobjects. Hvis jeg debugger og stopper i postopen og tjekker doc egenskaber, er der intet som indikere at der skulle ligge embeddedeobjects, hvilket jo gør det ret svært for mig at slette dem!. Når dokumentet så åbnes vises de 2 emb.obj. Mega irriterende.
Forstår ikke helt hvad du mener med det. Jeg kigger undersøger jo dokumentet for emb.obj. i postopen og der vises ingen ??
Problemet må desværre ligge i 14 dage - jeg har ferie hurraaa - men derfor må i godt tænke over problemet indtil jeg er tilbage. Håbede på et quick-fix, men det er vist ikke så let endda. God sommer. :) M
Jeg afprøvede koden fra pr0gm4n, men det virker ikke da rtitem.EmbeddedObjects ikke indeholder noget (hvilket er løgn). Istedet laver jeg en removeitem i postsave og en new richtextitem i postopen. Det ser faktisk ud til at virke (til min store overraskelse).
Synes godt om
Ny brugerNybegynder
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.