Probleem om afbeelding in te voegen

Status
Niet open voor verdere reacties.

Bavaria

Gebruiker
Lid geworden
14 okt 2004
Berichten
126
Beste,

Ik heb een code gevonden om een afbeelding in te voegen en deze verbouwd naar mijn wensen.

Maar nu ik op de knop klik geeft Access bovenstaande fout.

Wat betekent dit en hoe kan ik dit oplossen?...

Met google kom ik telkens uit op Excel dingen. Heb geprobeerd om er een tijdsvertraging in te bouwen, dat zou kunnen werken, maar tevergeefs.

Access geeft aan waar de fout zou moeten zitten:

Code:
Sub getFileName()
    Dim fileName As String
    Dim result As Integer
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Foto selecteren"
        .Filters.Add "Alle bestanden", "*.*"
        .Filters.Add "JPEGs", "*.jpg"
        .Filters.Add "Bitmaps", "*.bmp"
        .FilterIndex = 3
        .AllowMultiSelect = False
        .InitialFileName = CurrentProject.Path
        result = .Show
        If (result <> 0) Then
            fileName = Trim(.SelectedItems.Item(1))
            Me![ImagePath].Visible = True
            Me![ImagePath].SetFocus
            Me![ImagePath].Text = fileName
            Me.Id.SetFocus
            
            Me![ImagePath].Visible = False
        End If
    End With
End Sub

Wederom bedankt! :thumb:
 
Laatst bewerkt door een moderator:
Je geeft je foutmelding niet weer; het zou kunnen, dat de filterindex naar het verkeerde type filter staat. Ik zou in ieder geval ook de End With code verplaatsen; het verwerken van de lijst zit nu in de With constructie, en volgens mij moet die erna worden gedraaid. Het zou dus zo moeten:

Code:
Sub getFileName()
Dim fileName As String
Dim result As Integer
	With Application.FileDialog(msoFileDialogFilePicker)
		.Title = "Foto selecteren"
		.Filters.Add "Alle bestanden", "*.*"
		.Filters.Add "JPEGs", "*.jpg"
		.Filters.Add "Bitmaps", "*.bmp"
		.FilterIndex = 3
		.AllowMultiSelect = False
		.InitialFileName = CurrentProject.Path
		result = .Show
	End With
	If (result <> 0) Then
		fileName = Trim(.SelectedItems.Item(1))
		Me![ImagePath].Visible = True
		Me![ImagePath].SetFocus
		Me![ImagePath].Text = fileName
		Me.Id.SetFocus
		Me![ImagePath].Visible = False
	End If

End Sub
 
Ik zie het, dacht dat ik de foutmelding in de titel had geplaatst want het was een of ander nummer.

Maar die foutmelding geeft ie nu niet meer, nu krijg ik een compileerfout - niet of ongeldige verwijzing. Als suggestie geeft Access de code:

Sub getFileName()
Dim fileName As String
Dim result As Integer
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Foto selecteren"
.Filters.Add "Alle bestanden", "*.*"
.Filters.Add "JPEGs", "*.jpg"
.Filters.Add "Bitmaps", "*.bmp"
.FilterIndex = 3
.AllowMultiSelect = False
.InitialFileName = CurrentProject.Path
result = .Show
End With
If (result <> 0) Then
fileName = Trim(.SelectedItems.Item(1)) < hier zou het hem in moeten zitten
Me![ImagePath].Visible = True
Me![ImagePath].SetFocus
Me![ImagePath].Text = fileName
Me.Id.SetFocus
Me![ImagePath].Visible = False
End If

End Sub

Maar hij geeft al een melding voordat je iets kunt selecteren, zou het eigenlijk niet zo moeten zijn dat je eerst een bestand moet selecteren en indien je dat niet doet begint deze code te werken?... of zit ik er nu heel ver naast?

Wederom bedankt voor reactie :thumb:
 
De foutmelding kan te maken hebben met het al of niet geladen zijn van de juiste bibliotheken.
Deze code heeft, als ik mij niet vergis, de <Microsoft Office Object Library #> nodig, dus controleer eerst of die is geladen. Dat doe je vanuit het VBA scherm (<Alt>+<F11>) naar <Extra> te gaan, <Verwijzingen> en controleren of je iets als bijgaand plaatje ziet.
Als de bibliotheken kloppen, kun je, ook weer vanuit VBA scherm kijken wat <Foutopsporing>, <db Compileren> oplevert.
 

Bijlagen

  • Verwijzingen.jpg
    Verwijzingen.jpg
    63,2 KB · Weergaven: 51
Die library stond niet aan... en met die foutopsporing kwamen er een aantal fouten uit maar deze kan ik niet oplossen:

Private Sub RemovePicture_Click()
Me![ImagePath] = ""
hideImageFrame
ErrorMsg.Visible = True
End Sub

De fout is oneigenlijk gebruik van het sleutelwoord Me

Gr.
 
Check ook nog de volgorde van de bibliotheken, want die speelt ook nog een rol. Het kan ook zijn, dat Me![Imagepath] niet bestaat op het object, of dat een ander object actief is, dus daar kun je ook nog naar kijken. Evenuteel uitschakelen, door er een ' voor te zetten.
 
Met object bedoel je het formulier neem ik aan? Daar staat een tekstvak: ImagePath.

Als ik dit gedeelte uitschakel komt er eenzelfde foutmelding iets verderop in de code....

De bibliotheken staan in de dezelfde volgorde als de voorbeeld database.

Gr.
 
Object kan van alles zijn, maar is in dit geval inderdaad het formulier waarop het vak ImagePath zou moeten staan.
Stopt de procedure vervolgens bij <hideImageFrame>, of ergens in die routine?
 
Access stopt en selecteert Me. Als ik dat gedeelte uitzet dan gebeurd hetzelfde in de volgende sub.
 
Kun je het deel van je db posten waarmee we het kunnen reproduceren?
Nu blijft het toch een beetje een slag in de lucht slaan, wat mij betreft...
 
Ha Michel,

Het is ondertussen gelukt, ik kan deze applicatie maar 1x per formulier toepassen... dus ga het nu proberen met subformulieren. Wat wel nog raar is, is dat ik deze als eerste moet maken. Als ik de database ga bouwen en dan die foto applicaties toevoeg werken ze niet. Als ik eerst die foto applicaties bouw en daarna de rest van de database dan werken ze wel.... op zich niet erg, wel onhandig. Is hier nog iets voor te verzinnen eventueel?
 
Ik snap toch niet helemaal wat je bedoelt... En dan met name de opmerking:
ik kan deze applicatie maar 1x per formulier toepassen...
Als ik er een slag naar moet slaan, dan bedoel je, dat je maar één foto kunt selecteren per record. En dat je dat denkt te kunnen oplossen met een subformulier.
En dan heb je nog deze opmerking:
Als ik de database ga bouwen en dan die foto applicaties toevoeg werken ze niet. Als ik eerst die foto applicaties bouw en daarna de rest van de database dan werken ze wel....
Ik neem aan, dat je maar één database nodig hebt? Dan lijkt de volgorde waarin je bepaalde onderdelen opneemt, niet zo heel erg belangrijk. Al snap ik uiteraard niet, waarom de ene volgorde wel werkt, en de ander niet. Daarvoor zou ik beide db's dan toch moeten zien.
Maar goed, wat je denk ik zou moeten doen, als je meerdere foto's op wilt slaan, is werken met een extra tabel, puur voor de fotoverwijzingen. Daar hang je dan inderdaad een subformulier aan, zodat je door de foto's kunt bladeren. Voor één van de leden heb ik een oplossing bedacht waarbij in het klantrecord 12 velden werden gedefinieerd voor foto's, zodat je op één formulier die 12 foto's kunt zetten. Maar eigenlijk ben ik daar niet zo'n fan van, omdat je dus eerst 12 vaste velden opoffert, en niet zo snel kunt uitbreiden; dan moet je toch weer naar een aparte tabel gaan kijken.
Hopelijk kun je het probleem wat duidelijker maken? Of heb ik het al min of meer opgelost?
 
Bedankt voor je reactie....

Ik heb idd maar 1 database. Daarin heb ik een formulier met daarin de mogelijkheid om een foto te uploaden (deze wordt opgeslagen in een tabel). Nu zou ik graag willen zien dat er meerdere foto's tegelijk zichtbaar kunnen zijn en dat, wanneer deze geprint worden (vanuit query) ook allemaal op 1 formulier met de gegevens van het record geprint worden.

Als ik per record een meerdere foto's toevoeg kan ik ze niet tegelijk zien en niet printen. Maar als ik de mogelijkheid om foto's te upload 2x in 1 formulier zet dan werkt de 2e niet. Als ik per formulier 1x deze foto upload mogelijkheid gebruik werkt het wel. Met subforms kan ik ze dan in 1 formulier tegelijk weergeven en omdat ze in verschillende tabellen opgeslagen worden ook geprint.

Dit werkt op zich goed, er worden niet teveel foto's op deze wijze opgeslagen (is maar een gedeelte van de database).

Wat wel lastig is, en wat eigenlijk niet zou moeten uitmaken, is het tijdstip wanneer ik die code voor dat fotogebeuren invoeg. Als ik al aan het bouwen ben en dan de code invoeg en het formulier aanpas dan werkt de code niet. Maar voeg ik de code toe, bouw het formulier enz. en daarna de rest van de database dan werkt de code wel. Niet perse erg omdat ik formulierdelen enz wel uit een eerdere database in de nieuwe kan kopieren.

Hopelijk is dit wat duidelijker :confused:

Gr.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan