Hej! Länka in bildtabellen i din anropande applikation. Då behöver du inte överföra bilderna. Hej Andreas! Du kan göra det enklare än så och ha länken i frågan. Tack Andreas! BoundObjectFrame förutsätter att det finns en OLE server som kan rendera data för den lagrade bilden. Detta innebär att du måste spara ett OLE datatyp för vilket det finns en server. T.ex. BMP bilder. Hej Andreas! Om du förklarar vad du vill åstakomma. Rör det sig om en bild som ibland uppdateras? Man ska kunna klicka på componentid i ett formulär och då ska en bild tillhörande den komponenten visas, antingen i samma formulär eller att det öppnas ett nytt formulär innehållande enbart bilden.Stoppa in bilder i en accessdatabas från en annan
Jag har en accessdatabas med bilder i. Den innehåller enbart bilder samt ett component id för att visa vilken component bilden tillhör.
Sen har jag en accessapplikation där man vid klick på component Id i ett formulär vill hämta bilden med matchande component id.
Databaserna är helt fristående och inte länkade till varandra. Man vet var bild-databasen ligger, that's it.
(De SKA inte vara länkade heller av olika anledningar).
Så.... att komma åt den andra databasen och plocka ut rätt bild är ju inga problem.
Problemet är hur man lättast visar bilden i den anropande applikationen?
Den behöver inte sparas undan men jag provade lösningen att stoppa in innehåller av recordset från bilddatabasen i en tabell i applikationsdatabasen.
strsql = "INSERT INTO Pictures (ComponentId,Picture) VALUES ('" + CStr(compId) + "','" + rs(0) + "');"
Där rs(0) syftar på bilden hämtad från bilddatabasen och instoppad i rs.
Får meddelandet "Type mismatch".
Jag vet inte hur jag hanterar bilden?
Så antingen om någon vet hur jag får in bilden från recordset in i tabellen eller hur man modifierar en bild på ett formlärs control source direkt till recordsetet.
Har provat med Form_Picture.OLE_Picture.ControlSource = rs(0)
Men får meddelandet:
RunTime error 2131
An Expression can not be longer than 2048 characters.
Någon som är kunnig på "bildhantering"?
Alla tips mottages tacksamt!
/SofiaSv: Stoppa in bilder i en accessdatabas från en annan
Om du ändå vill överföra bilder så rekomenderar jag att du länkar och använder en fråga:
INSERT INTO Pictures (ComponentId, Picture)
SELECT ComponentId, Picture
FROM Linked_Pictures_Table
Sv:Stoppa in bilder i en accessdatabas från en annan
Som jag skrev ovan så vill jag inte ha länk mellan tabellerna.
Detta av flera olika anledningar som att det bara är en temporär lösning, det är inte alla användare som kommer att få tillgång till denna bild-db.
Om man inte kan göra så att man i ett startscript kollar om bilddbn finns på plats, och i såna fall länkar in tabellen.
Vid nedstängning av programmet tar man via kod bort länken?
Det borde väl gå att fixa via kod?Sv: Stoppa in bilder i en accessdatabas från en annan
INSERT INTO Pictures (ComponentId, Picture)
SELECT LinkedPictures.ComponentId, LinkedPictures.Picture
FROM [;DATABASE=C:\PathToDatabase\DatabaseName.mdb].Pictures AS LinkedPictures
Om du bara vill lägga till nya bilder:
INSERT INTO Pictures (ComponentId, Picture)
SELECT LinkedPictures.ComponentId, LinkedPictures.Picture
FROM [;DATABASE=C:\PathToDatabase\DatabaseName.mdb].Pictures AS LinkedPictures LEFT JOIN
Pictures ON LinkedPictures.ComponentId = Pictures.ComponentId
WHERE Pictures.ComponentId
Då kan du först kolla om filen finns tillgänglig. I så fall skapar kör du fråga.
Sv:Stoppa in bilder i en accessdatabas från en annan
Funkar kalas bra! :-)
Nu kom ett annat problem istället...
På formuläret som ska visa bilden har jag lagt en BoundObject Frame.
Formulärets recordsource är satt till att "SELECT Pictures.ComponentId, Pictures.Picture FROM Pictures; "
(Det kommer alltid bara att finnas ett enda record där).
BoundObjectFramens control source är satt till "Picture".
Men när jag kör så visas bara componentidt i BoundObjectFrame? Dubbelklickar jag på den så öppnas bilden i Windows Picture and Fax viewer??
Jag vill ju att bilden ska synas i formuläret?
/SofiaSv: Stoppa in bilder i en accessdatabas från en annan
Annars finns det lite andra "omvägar" man kan ta för att garantera att bild visas.Sv:Stoppa in bilder i en accessdatabas från en annan
Det är just nu bara jpg-bilder men det vet man ju inte om det kan slinka in en .gif.
Har du några tips på genvägar?
Tack för hjälpen!
/SofiaSv: Stoppa in bilder i en accessdatabas från en annan
Vill du visa den i ett formulär en post i taget eller i en lista/rapport?Sv:Stoppa in bilder i en accessdatabas från en annan
Bilderna är alltså olika beroende på vilken komponent du klickat på.
Mvh,
Sofia