Ingesloten plaatje in formulier kan niet worden geopend.

Status
Niet open voor verdere reacties.

OBADE

Gebruiker
Lid geworden
9 feb 2016
Berichten
95
Hallo,

Ik wil in mijn systeem de ingesloten plaatjes vanuit een externe database vervangen door losse plaatjes in een directory, met een linkje vanuit de betreffende tabel.
De linkjes zijn geplaatst en de plaatjes in stelling gebracht in hun directory.

In het formulier een leeg plaatjesobject geplaatst. In het formulier bij "bij aanwijzen" de code Me![Imageframe(dit is de naam van het plaatjesobject)].Picture = Me![Image(naam van het hyperlink-veld in de tabel)] .

Vervolgens het formulier getest en hij komt meteen met de foutmelding "Fout 2220 tijdens uitvoering, Het bestand .....\Nogniet.jpg kan niet door Microsoft Access worden geopend.
En als ik het probeer met png of bmp hetzelfde verhaal.

Wat doe ik hier fout?
 
screenshot.jpg

Ik weet niet of het helpt maar hierbij de eigenschappen van het plaatjesobject.
 
Ik zou geen uitroepteken gebruiken maar de punt (IntelliSense), maar het zou zo wel moeten werken. Controleer het pad eens van de afbeelding, misschien gaat daar wat fout.
 
Hallo OctaFish en anderen,

Ik heb inmiddels de !-en door .-en vervangen, maar de fout blijft hetzelfde. Hieronder ff een screenshot van de foutmelding, misschien dat dat duidelijkheid brengt:
foutmelding.jpg .

En ook ff een shot van de foutmelding in het scherm:

Foutscherm.jpg

en ten slotte een shot van het formulier in de edit-mode met de eigenschappen van het afbeeldingsobject.

objectscherm.jpg

Ik hoop dat iemand mij kan helpen.


Groeten, peter.
 
Als je code correct is, zal Access zelf de objectnamen neerzetten zonder rechte haken. Bij jou staan ze er nog. Die moeten dus in ieder geval weg, want zo werkt de code niet. Ik heb getest met een eigen afbeeldingsobject, en bij mij werkt dit prima:

Code:
Private Sub Form_Current()
Dim sFoto As String
    sFoto = "H:\Mijn afbeeldingen\jpg\Plaatje_" & Right("00" & CurrentRecord, 2) & ".jpg"
    On Error GoTo GeenPlaatje
    Me.ImageFrame.Picture = sFoto
    Exit Sub

GeenPlaatje:
    Me.ImageFrame.Picture = "H:\Mijn afbeeldingen\OctaFish.gif"
End Sub
 
Hoi OctaFish,

Ik heb de haken weggehaald (zie bijlage):
foutmelding.jpg

Maar ik kreeg exact dezelfde foutmelding. In jouw voorbeeld werk je met een opgebouwde string, maar ik haal de hyperlink dus uit een veld van de tabel.
Zou daar hem de kneep kunnen zitten? Moet ik die hyperlink soms eerst tot tekststring maken en deze "voeden" aan de functie?
 
Overigens vind ik jouw oplossing met de plaatjes met een volgnummer vanuit de tabel wel netjes. Maar ik geef er de voorkeur aan om elk plaatje zijn eigen naam te geven. Dan kun je ze ook makkelijker vervangen door een beter plaatje als die zich voor doet.

En toch zal ik het eens met jouw oplossing proberen.
 
Hoi Octafish,

Het is al opgelost. Ik werk in de applicatie meer met hyperlinks, te openen met een klik op een button. Hierbij moest als directory uitsluitend de locatie vanaf waar de Access-applicatie zélf staat worden opgegeven.
De positie van het doelplaatje vanuit een afbeeldingsobject moet blijkbaar helemaal worden opgegeven (naam van de schijf/directory/ subdir/ etc.,etc.).

Ik denk dat ik nu wel jouw methode met mijn methode kan combineren om tot het door mij gewenste resultaat te komen: wél werken met een string-variabele te combineren met de waarde van een veld waarin de zelf gekozen naam van het plaatje wordt gebruikt.

Dank je wel voor jouw hulp.
 
Jouw probleem zit hier:
In jouw voorbeeld werk je met een opgebouwde string, maar ik haal de hyperlink dus uit een veld van de tabel.
Nooit Hyperlinks gebruiken! Heb ik in 30 jaar Access nog nooit hoeven doen :).
De nummers die ik gebruikt heb zijn puur voor het gemak; ik had toevallig een aantal genummerde plaatjes en daar heb ik dus snel mee kunnen testen. Ik zou het nooit voor productie gebruiken, omdat het nummer verandert als je anders sorteert. Krijg je wel boeiende resultaten van trouwens...
Dit:
uitsluitend de locatie vanaf waar de Access-applicatie zélf staat worden opgegeven
is ook simpel op te lossen door de plaatjes te koppelen aan CurrentProject.Path.
 
Hallo OctaFish,

Ik dacht dat ik er was. Ik heb inderdaad die hyperlinks losgelaten en jouw methode gevolgd. En die werkt redelijk goed, behalve dat het formulier uitsluitend het plaatje van On Error laat zien en niet een plaatje als dat een andere moet zijn.

De koppeling van een plaatje aan een record van de tabel geschiedt aan de hand van het dossiernummer van het record: een string van 5 posities beginnend met een "O" en daarna vier cijfers.

In de bijlage kun je zien hoe de functie hierop checkt:

foutmelding.jpg

In het geval van het onderstaande record met dossier nummer "O0018":

Editscherm.jpg

Zou hij probleemloos het onderstaande plaatje moeten vinden:

filescherm.jpg

Maar nee dus. Het zal simpel zijn, maar ik doe iets fout.

Ik hoor weer graag.
 
Het middelste plaatje in het vorige bericht is fout. Hiervoor komt deze:

objectscherm.jpg
 
Vergelijk jouw code eens met mijn code; daar zit één essentieel verschil tussen. En dat regeltje is gelijk de oplossing.
 
Ik vermoed dat iets niet goed gaat met Left(Me.Dossiernummer, 5) omdat dat volgens mij het belangrijkste verschil is.

Maar hou me niet langer in spanning, OctaFish.
 
Je hebt de regel Exit Sub niet meegenomen :). Nu gaat de procedure dus altijd door naar je foutroutine. Ook als dat niet mag.
 
En dat was idd de oplossing, tjonge, wat stom.

Hartelijke dank.
 
En ik had je zo graag opgenomen in de club die nooit stomme fouten maakt.... Nou ja, dan blijf ik maar weer alleen lid :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan