Foto in rapport obv waarde in tabel

Status
Niet open voor verdere reacties.

logkroon

Gebruiker
Lid geworden
18 mei 2007
Berichten
21
Ten eerste, ik ben vrouw en bijna blond dus wellicht zie ik iets over het hoofd. Ik probeer een database waarmee ik het maken van fotolijsten per groep kan automatiseren (het wordt nu nog handmatig gedaan in Word).
Ik heb een tabel met:

Studnr = 131415
Afbeelding = 131415.jpg
Foto's staan in de directory van de database

Het lukt me om de foto in het formulier te laten zien mbv de code die ik hier heb gevonden (waarvoor dank!). Nu wil ik het rapport maken.

Hiervoor gebruik ik deze code van OctaFish:
Code:
Private Sub Details_Format(Cancel As Integer, FormatCount As Integer)
On Error GoTo Foutafhandeling
Dim strFotos As String, tmp As String
    
    strFotos = Application.CurrentProject.Path
    tmp = Dir(strFotos & "\" & Me.txtNaamAfbeelding & ".jpg")
    If tmp & "" <> "" Then
        With Me.imgProfiel
            .Visible = True
            .Picture = strPic
            .Width = 5000
            .Height = 5000
        End With
    Else
        Me.imgProfiel.Visible = False
    End If
    Exit Sub

Foutafhandeling:
    MsgBox Err.Number & "  " & Err.Description

End Sub

Die ik vervolgens heb aangepast door txtNaamAfbeelding te wijzigen in studnr :
Code:
Private Sub Details_Format(Cancel As Integer, FormatCount As Integer)
On Error GoTo Foutafhandeling
Dim strFotos As String, tmp As String
    
    strFotos = Application.CurrentProject.Path
    tmp = Dir(strFotos & "\" & Me.studnr & ".jpg")
    If tmp & "" <> "" Then
        With Me.imgProfiel
            .Visible = True
            .Picture = strPic
            .Width = 5000
            .Height = 5000
        End With
    Else
        Me.imgProfiel.Visible = False
    End If
    Exit Sub

Foutafhandeling:
    MsgBox Err.Number & "  " & Err.Description

End Sub

Het rapport bevat in de detailsectie het veld studnr, afbeelding, imgProfiel (afbeeldingsframe)
Vervolgens plaats ik de code in de gebeurtenis "Bij opmaken" van de detailselectie en gebeurd er niets. Wie kan mij verder op weg helpen?
 
De code die je hebt gebruikt is bedoeld voor rapporten, en an sich niet voor formulieren. Daar zou ik eerder OnCurrent gebruiken. Maar als het werkt, dan werkt het :) Vreemd dan wel weer dat het op het rapport niet werkt... Ik zou zeggen: post er een voorbeeldje bij, dat kijkt een stuk makkelijker.
 
Ik zal er vanavond naar kijken, tenzij je nog een 2003 voorbeeldje kan maken, dan kan ik er overdag nog wel een blik op werpen.
Andere opmerking: berichten quooten waar je op reageert is nergens voor nodig; mijn bericht staat er immers pal boven, en ook nog eens een heel stuk leesbaarder.
Dus de quoot graag verwijderen :)
 
De reden dat je code in het voorbeeld niet werkt is een logische: je verwijst naar een verkeerde variabele.
Code:
    tmp = Dir(strFotos & "\" & Me.studnr & ".jpg")
en
Code:
            .Picture = strPic
zijn niet hetzelfde. .Picture = strFotos & tmp zou dus wel moeten werken. Althans: zo doet-ie het bij mij.
In je tabel gebruik je overigens wel èrg veel velden voor hetzelfde :)
 
Laatst bewerkt:
Thanks, hij gaf in eerste instantie nog een foutmelding, maar toen ik het codestukje wijzigde naar
Code:
.Picture = strFotos & "\" & tmp
werkte het wel. Op zich wel vreemd dat hij dat nodig heeft want je geeft in de code erboven ook al aan dat je "\" nodig hebt.

ik kan inderdaad een kolom uit de tabel weghalen, die 2e kolom had is gisteren nodig om het formulier werkend te krijgen. Ik zal eens proberen of ik daar ook zonder kan, zo niet dan maak ik er een berekend veld van (als dat lukt). Ik heb nooit een access cursus of wat dan ook gedaan dus het is een beetje learning by doing, met af een toe hulp van jullie.

Nu ga ik nog even proberen of ik de code zo kan aanpassen dat er een standaard foto verschijnt bij de mensen waar ik geen afbeelding van heb. Ik neem aan dat ik dan dit stukje code moet wijzigen'
Code:
 Else
        Me.imgProfiel.Visible = False
 
Deze opdracht (.Picture = strFotos & "\" & tmp) moet wel weten waar de afbeeldingen staan. Alleen de bestandsnaam is dan niet genoeg. Vandaar het hele pad. Bij het ontbreken van een afbeelding doe je dan:
Code:
.Picture = strFotos & "\GeenAfbeelding.jpg"
 
Laatst bewerkt:
Kan ik met behulp van deze code ook linken naar een URL ipv een file op mijn hd? Ik heb het volgende geprobeerd maar dat lukt niet:
De link doet het niet ivm privacy trouwens. Kan het aan de https liggen of heb ik de code verkeerd aangepast?

De foto staat op deze plek:
https://xxxx/foto/2013/778899.jpg

Code:
Private Sub Details_Format(Cancel As Integer, FormatCount As Integer)
On Error GoTo Foutafhandeling
Dim strFotos As String, tmp As String
    
    strFotos = "https://xxxxx/foto/2013/"
    tmp = Dir(strFotos & Me.studnr & ".jpg")
   If tmp & "" <> "" Then
        With Me.Foto
            .Visible = True
            .Picture = strFotos & tmp
            .Width = 1701
            .Height = 2268
        End With
    Else
        Me.Foto.Visible = False
    End If
    Exit Sub

Foutafhandeling:
    MsgBox Err.Number & "  " & Err.Description

End Sub
 
Dir werkt op een schijf, en een webpagina is dat natuurlijk niet. Dus kan Dir in dit geval niet gebruikt worden.
 
Kan het op een andere manier wel? Via google kon ik alleen een oud bericht vinden waarin stond dat het niet kon, maar wellicht hebben jullie een slimme truc.
 
Als het internet nog hetzelfde is, dan verandert er aan de techniek niet zoveel. Afbeeldingen van het internet kun je niet gebruiken, die moet je eerst downloaden. Met Dropbox staan ze nog in een map op je harde schijf, maar rechtstreeks van het internet afhalen? Veel succes daarmee :)
 
Via google kon ik alleen een oud bericht vinden waarin stond dat het niet kon
Ik heb nog even rondgespeurd, en kwam toch een oplossing tegen die wellicht werkt. Die is wellicht minder oud dan jouw berichtje :). Kijk maar eens of deze functie het bij jou doet:

Code:
Public Function httpGet(sourcePath As String, destinationPath As String)
Dim xmlHTTP
Dim contents
Dim oStr

    Set xmlHTTP = CreateObject("Microsoft.XMLHTTP")
    xmlHTTP.Open "GET", sourcePath, False
    xmlHTTP.Send
    contents = xmlHTTP.responseBody

    Set oStr = CreateObject("ADODB.Stream")
    With oStr
        .Mode = adModeReadWrite
        .Type = adTypeBinary
        .Open

        .Write (contents)
        .SaveToFile destinationPath, adSaveCreateOverwrite
    End With

End Function

En je gebruikt 'm dan zo:
Code:
httpGet "https://xxxx/foto/2013/778899.jpg", "H:\Temp\778899.jpg"
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan