06. oktober 2005 - 11:15Der er
19 kommentarer og 2 løsninger
Ændre stien i OLE-objeter (Billeder)
Hej Eksperter,
Jeg har det klassiske problem med at skulle gemme nogle billeder i Access. Hvis jeg embedder billederne i tabellen, så vil 10 billeder á ca 100K få databasen til at fylde 40 MByte :o(
Og da der skal være 100-200 billeder i databasen, så har jeg behov for en anden model. Jeg ønsker derfor at linke til billederne. Men da databasen skal distribueres, skal jeg kunne ændre stien til billederne.
Så jeg skal kunne opdatere alle min poster i tabellen, således at OLE-objektet ikke længere pejer på samme mappe.
Men jeg kan simpelthen ikke finde nogle oplysninger om dette! Hvis det var en ubundet objektramme på en formular, kan jeg skifte stien, da der er en egenskab til det. Men på tabelniveau er der ikke noget tilsvarende.
Et eks: Jeg har 200 poster, hvor der er linket til 200 billeder i mappen C:\Dokumenter\Billeder
Herefter flyttes hele databasen samt billederne til et nyt miljø, hvor billederne placeres i X:\database\mindatabase\billeder
Vha VBA-funktion eller opdateringsforespørgsel skal jeg således ændre stien i hver post.
Nogle forlsag?
Hvis nogen har hørt/set om en løsning, som koster lidt penge, har det også interesse (men der gives kun point, hvis jeg synes at pris og kvalitet hænger sammen)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Men jeg søger ikke andre løsninger end den, som jeg spørger om.
Sagen er, at der skal laves en fortløbende formular i Access, hvorpå billederne vises. Derfor er det nødvendigt at have bundet billederne til et OLE-objekt, da man ellers ikke kan vise dem i en fortløbende formular (hvis du har et ubundet felt, som du styrer vha VBA, så vil alle poster skifte, når du blot skifter stien på én objektramme/billede)
Jeg kan også omformulere spørgsmålet: Hvordan indsætter jeg et billedet i et OLE-objekt vha VBA?
Hvad med at give brugeren mulighed for at indtaste stien i en formular som er baseret på tabel_Sti
DErnæst skal du blot hente stien (billedsti) fra tabel_sti og sætte den ind før \billede.jpg i din billedtabel Nu ligger billedet nok som fx C:\accessDB\billeder\Billede14.jpg
Du kan så lave en kode som gemmer de sidste fx 14 tegn som en variabel fx X. Alternativt indtil et "\" Dernæst henter du billedsti fra et recordset
sætter sti = billedsti & X Opdaterer nu sti til din billedtabel voila
Terry-> Den kode, vil jeg MEGET gerne se :o) Du må meget gerne sende mig et eksempel, tak :o)
Jind-> Alt det har jeg helt styr på. Undtagen din sidste sætning: "Opdaterer nu sti til din billedtabel". Det er lige præcis det, som jeg forespørger! HVORDAN opdaterer jeg stien i et OLE-objekt?
Jeg kan ikke få Microsofts eksempel til at virke. Den indsætter et eller andet i tabellen, men jeg kan ikke se det fra Access.
Kan du selv indsætte et billede vha ReadBLOB-funktionen, og derefter få det vist i en Access-formular?`
Jamie's Imagealbum lader heller ikke til at kunne gøre det rigtigt. Jeg tror bare, at den gemmer stien og så viser det i en singlecolumn-formular, hvor det jo ikke er noget problem.
Just had a play around with this, and it doesnt seem to work as I had hoped.
I was hoping to be able to be able to save an OLE objecting using WriteBlob and then load it again expecting it to work as an OLE object again. That doesnt seem to be the case.
I eksemplet, som følger med imdlæses en fil, hvorefter der genereres en nøjagtig kopi med et andet navn. Metoden er at benytte ReadBLOB og WriteBLOB, således filen har været gennem OLE-objektet. Og de 2 filer er fuldstændig identiske (bortset fra oprettelsesdatoen)
Så funktionerne gemmer dataene godt nok, men det er bare ikke læseligt for Access selv. Jeg har prøvet både med billeder og dokumenter
Arne->De rå data skal vel gemmes i et OLE-felt? Hvordan vil du ellers vise billederne i en formular (fortløbende)?
Not sure I understand that Thomas "I eksemplet, som følger med imdlæses en fil..."
what example? Did you purchase the developer version or have youdownloaded the demo?
As I understand it, an OLE object can be used for storing binary (BLOB) files and and also OLE images. When you place a file in as an OLE object you choose the program which is used to display the object. And maybe also a link to the actual object. I would have thought that this extra information will be stored in the file too, so that if it was saved using WriteBlob then the same file could be loaded againg using ReadBlob and it would be displayed as an OLE image again. But it desont seem to work.
If you have JPG file and load this using ReadBlob then it doesnt contain the OLE information, so I can undertand that it cant be displayed as an OLE object.
I can remember (years ago) that there was a question in Access which mentioned that it was necessary to remove a number of byes from the OLE object before it could again be viewed as the original file, for example a JPG. But I dont seem to be able to find the question :o(
Med "I eksemplet, som følger med imdlæses en fil..." mener jeg bare det eksempel, som følger med i Microsoft's kode. Der ligger en procedure, som hedder "Copyfile" og som indlæser en fil og gemmer den som ny fil (via OLE-objektet).
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.