VBA-PictureBox

Status
Niet open voor verdere reacties.

slev

Gebruiker
Lid geworden
18 jan 2023
Berichten
23
Ik heb een bestand "Planten" met afbeeldingen waarvan het merendeel is opgeslagen van het type jpg; een deel ook als jpeg. In een Access DB staan o.a. opgeslagen de Plantnaam en de bijbehorende afbeelding hiervan als attachment (bijlage) vanuit het bestand "Planten"
In een VBA project die gekoppeld is aan de genoemde DB heb ik nu een userform, waarop ook opgenomen zijn de Plantnaam en een PictureBox (imgPlant)
Met behulp van onderstaande code worden nu de planten in de PictureBox geplaatst. De code staat in het change event van de Plantnaam textbox

imgPlant.Image = Image.FromFile("path" & txtPlantnaam.Text & ".jpg")

Dus zodra de naam in het textbox wijzigt, wordt de bijbehorende afbeelding in de PictureBox geplaatst,; dat werkt prima, alleen de afbeeldingen van het type jpeg geeft foutmelding. M.i. moet ik ergens in de code "jpeg" toevoegen lijkt me, maar hoe? Ik kan me niet voorstellen dat ik alle jpeg bestanden moet converteren naar jpg.
Wie kan me helpen?
 
In een VBA project die gekoppeld is aan de genoemde DB heb ik nu een userform, waarop ook opgenomen zijn de Plantnaam en een PictureBox (imgPlant)
Leg eens uit wat je aan het doen bent, want hier klopt niet zoveel van. VBA is geen zelfstandige programmeertaal en werkt alleen in een Office applicatie. Zoals Access en Excel. Maar waarom zou je dit verhaal buiten Access doen, zoals Excel? Ik snap ‘t niet.
Tenzij je een VB project maakt, en dan zit je in het verkeerde forum. Kan ik je trouwens ook niet helpen.

Verder maak je m.i.nóg een denkfout, want volgens mij kun je geen bijlagen uit een bijlage veld buiten Access aanroepen. Dus ook niet in een VB project. En de belangrijkste fout: een bijlage veld bevat het complete object, dus een foto kun je gewoon zo op een formulier laten zijn. Dit: FromFile("path" & txtPlantnaam.Text & ".jpg") is dus fout, want de bijlage hééft al een extensie. Twee extensies is sowieso ook fout.

En het laatste dat ik je wil meegeven (niet echt een fout, maar ik vind het een veel betere aanpak): sla in een database geen foto’s op, maar alleen tekstverwijzingen naar pad + naam. Dat houdt de database mooi klein en hanteerbaar, en vermoedelijk kun je dan in je VB project wél verwijzen naar het (tekst)veld uit de database.
 
Allereerst dit, het is geen VBA- maar een VB.Net-probleem dat ik heb. Ik heb de vraag in dit forum neergelegd omdat ik zag dat in het verleden een aantal vragen m.b.t. de PictureBox in het verlengde van mijn probleem lag en misschien een oplossing bekend was.

In het bestand Planten staan plantnaam en extensie niet als 1 woord (klopt dat?) vandaar dat VB wil dat ik de extensie toevoeg. Met mijn code loopt het programma vast als er planten in voorkomen met een andere extensie. Zolang het afbeelding zijn met een jpg-extensie is er geen vuiltje aan de lucht. De vraag was dus wat moet ik aan de code toevoegen opdat ook bv jpeg bestanden geaccepteerd worden om zodoende te voorkomen dat alle afwijkende bestanden geconverteerd hoeven te worden

In mijn Access DB heb ik in formulieren afbeeldingen staan die de gegevens uit de bijlage haalt, waarbij meerdere extensies moge;ijk zijn.
Dit zijn inderdaad verwijzingen naar pad en naam. Deze bewerking wordt keurig door Access aangeboden.

Tenzij er nog opmerkingen komen lijkt het mij de vraag als opgelost te zetten
 
In het bestand Planten staan plantnaam en extensie niet als 1 woord (klopt dat?) vandaar dat VB wil dat ik de extensie toevoeg.
Of dit klopt, kunnen wij uiteraard niet zeggen zonder de db te zien. Jij weet wat (en hoe) er in je db zit :). Afbeeldingen hebben een extensie, daar kom je niet onderuit. Ook als je ze als bijlage opneemt in je database (nogmaals de tip: NIET DOEN!!). Die extensie is dus bekend in het bijlageveld. Het is dus nooit nodig om een extra extensie toe te voegen. Daarmee verziek je de handel alleen maar. Als je het bijlage veld in een query zet, zie je dat er meerdere velden zijn met gegevens van de bijlagen. Ik zou die velden gebruiken. (Dat meen ik uiteraard niet: ik zou het bijlageveld nooit gebruiken. Ik kom dus nooit in deze situatie).

De beste oplossing is dus echt om je afbeeldingen uit de db te halen, op te slaan in een aparte map en ze via een tekstveld op te halen. Of de vraag is opgelost, kunnen wijnuiteraar óók niet beantwoorden, want een echt antwoord is er (door mij) niet gegeven. Kan ook niet, want dan moet ik toch echt de database zien.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan