Afbeeldingen in Access

Status
Niet open voor verdere reacties.
Nog één vraagje m.b.t. de code: hoe kan ik de code zo maken dat als er geen img is voor een bepaalde plant hij zonder foutmelding toch het formulier normaal opent voor dat bepaalde record?

Groet
 
Simpele oplossing: zet On Error Resume Next boven de regel die het bestand opent.
 
Fijn bedankt!

Dan heb ik nog een vraag: werkt de regel:
Code:
If Not Me.Plant_afbeelding & "" = "" Then
ook als er een keuzelijst voor dit record is? Als ik het beredeneer moet dat kunnen maar de invoer moet dan natuurlijk wel corresponderen met de afbeeldingen in de map.
 
Je kunt er ook een keuzelijst voor gebruiken. Die zou ik dan laten vullen a.d.h.v. een procedure (bijvoorbeeld de map laten uitlezen met DIR) zodat je inderdaad de juiste bestanden hebt.
 
dat is inderdaad wel het beste om fouten te voorkomen! Ik zie dat ik dit in de code moet aanpassen. Ik neem aan dat hij voor een deel op de afbeelding verwijzings code zal lijken!

Overigens, kan ik de code (om afbeeldingen te koppelen) zo vaak ik wil voor ieder afzonderlijk record gebruiken binnen hetzelfde formulier? Want ik krijg nu de foutmelding:
"er is een dubbelzinnige naam gevonden:Form_Current"
 
Laatst bewerkt:
Blijkbaar heb je de procedure inclusief de procedurenaam gekopieerd; dat levert dan een fout op. Alles tussen de regels SUB ... END SUB kun je hergebruiken, maar dus niet de naam ervan.
 
Kan ik dit dan op deze manier samenstellen?



Code:
Private Sub Form_Current()
    If Not Me.Plant_afbeelding & "" = "" Then
    On Error Resume Next
        Me.Afbeelding69.Picture = CurrentProject.Path & "\Plantimages\" & Me.Plant_afbeelding
    Else
        Me.Afbeelding69.Picture = ""
    End If
    
    
    If Not Me.Afb_WATER & "" = "" Then
    On Error Resume Next
        Me.Afbeelding90.Picture = CurrentProject.Path & "\Iconen\" & Me.Afb_WATER
    Else
        Me.Afbeelding90.Picture = ""
    End If
    

End Sub
 
Lijkt mij prima! Maar dat weet je ongetwijfeld al, want je zult hem vast al wel geprobeerd hebben?
 
Ja, ik heb hem uitgeprobeerd maar krijg de foutmeldingen:

Compileerfout: kan de methode of het gegevenslid niet vinden

Dit heeft dan betrekking op:
Code:
 If Not Me.Afb_WATER & "" = "" Then

Kom er even niet achter waarom hij Afb WATER niet vind.
 
Verwijder de spatie uit de naam van het tekstvak en probeer 'm eens zo:
Code:
If Not Me.AfbWATER & "" = "" Then
 
Nee, dat is hem ook niet. Dat probleem had ik in het begin met plant_afbeelding ook. Maar met de underline pakt hij die dus wel.

Kun je me nog een beetje op weg helpen met:
Je kunt er ook een keuzelijst voor gebruiken. Die zou ik dan laten vullen a.d.h.v. een procedure (bijvoorbeeld de map laten uitlezen met DIR) zodat je inderdaad de juiste bestanden hebt.
?
 
Als ik nu wijzigingen in de selectie van iconen maak verandert dat pas als ik afsluit en weer open. Is er een manier om meteen de verandering te zien?
 
Als de afbeelding is gekoppeld aan de keuzelijst, dan moet je op die keuzelijst een Form.Refresh geven. Dus de actie <Bij klikken> krijgt dan de opdracht:
Code:
Me.Refresh
Me.Repaint
Je hebt vermoedelijk alleen Refresh nodig, maar stoei er maar eens mee.
 
Ik krijg het toch niet aan de praat.
Ik heb eerst in het eigenschappenvenster bij actie <bij klikken> verschillende variaties geprobeerd. Zonder succes. Je ziet wel dat het scherm bij klikken wordt ververst maar de afbeelding niet. Toen dacht ik, het zit hem in de afbeelding, maar daar is niet echt de mogelijkheid, niet de juiste acties. Toch wat geprobeerd, ook zonder resultaat.
Verder redenerend: waarschijnlijk moet het als aanvulling op de koppeling tussen het veld plantafbeelding en de afbeelding (in een soort "if then" regeltje) alleen kom ik er niet uit hoe die regel samen te stellen.
 
Laatst bewerkt:
Het voorbeeldje! Voor maar één afbeelding. De bedoeling is dus voor allemaal zoals onder weergegeven. Repaint of Refresh werkt op deze manier niet. Misschien in de afbeeldingkoppeling verwerken. Heb ik wel geprobeerd maar zonder succes.

Code:
Private Sub Afb_WATER_Change()
    Me.Repaint
End Sub

Private Sub Form_Current()
    If Not Me.Plant_afbeelding & "" = "" Then
    On Error Resume Next
        Me.Afbeelding69.Picture = CurrentProject.Path & "\Plantimages\" & Me.Plant_afbeelding
    Else
        Me.Afbeelding69.Picture = ""
       
    End If
    
    If Not Me.Afb_ZON & "" = "" Then
    On Error Resume Next
        Me.Afbeelding91.Picture = CurrentProject.Path & "\Iconen\Licht\" & Me.Afb_ZON
    Else
        Me.Afbeelding91.Picture = ""
           
    End If
    
    If Not Me.Afb_WATER & "" = "" Then
    On Error Resume Next
        Me.Afbeelding90.Picture = CurrentProject.Path & "\Iconen\Water\" & Me.Afb_WATER
    Else
        Me.Afbeelding90.Picture = ""
    End If
    
    If Not Me.Afb_VOEDING & "" = "" Then
    On Error Resume Next
        Me.Afbeelding92.Picture = CurrentProject.Path & "\Iconen\NPK\" & Me.Afb_VOEDING
    Else
        Me.Afbeelding92.Picture = ""
    End If
    
    If Not Me.Afb_HOOGTE & "" = "" Then
    On Error Resume Next
        Me.Afbeelding93.Picture = CurrentProject.Path & "\Iconen\Hoogte\" & Me.Afb_HOOGTE
    Else
        Me.Afbeelding93.Picture = ""
    End If
    
    If Not Me.Afb_EETBAAR & "" = "" Then
    On Error Resume Next
        Me.Afbeelding94.Picture = CurrentProject.Path & "\Iconen\Eetbaar\" & Me.Afb_EETBAAR
    Else
        Me.Afbeelding94.Picture = ""
    End If
    
    If Not Me.Vorstbestendig & "" = "" Then
    On Error Resume Next
        Me.Afbeelding107.Picture = CurrentProject.Path & "\Iconen\Winter\" & Me.Vorstbestendig
    Else
        Me.Afbeelding107.Picture = ""
    End If
    
    If Not Me.Bladverliezend & "" = "" Then
    On Error Resume Next
        Me.Afbeelding109.Picture = CurrentProject.Path & "\Iconen\Blad\" & Me.Bladverliezend
    Else
        Me.Afbeelding109.Picture = ""
    End If
    
    If Not Me.Jaar & "" = "" Then
    On Error Resume Next
        Me.Afbeelding111.Picture = CurrentProject.Path & "\Iconen\Jaar\" & Me.Jaar
    Else
        Me.Afbeelding111.Picture = ""
    End If
    
    
End Sub
 
Ik snap het niet helemaal; een db zou als voorbeeld wat handiger zijn dan de code, want daar mankeert niet zoveel aan.
 
Je doet nu alleen een Repaint, maar je vult het plaatje nog niet met de nieuwe afbeelding. En dan gebeurt er uiteraard nog niks. Je moet de afbeelding dus opnieuw koppelen aan de invoud van het veld. Ik zou dan een check inbouwen die controleert of het plaatje wel bestaat:

Code:
Private Sub Afb_ZON_Click()
    If Not Dir(CurrentProject.Path & "\Plantimages\" & Me.Afb_ZON) = "" Then
        Me.Afbeelding91.Picture = CurrentProject.Path & "\Plantimages\" & Me.Afb_ZON
    Else
        Me.Afbeelding91.Picture = ""
    End If
    If Me.Dirty Then Me.Dirty = False
    Me.Repaint
End Sub
En dat voor alle plaatjes+keuzelijsten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan