[access] verwijzingen naar afbeeldingen in aparte map*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Een hele goede dag
ik heb een vraag over Access die ik tot nu toe nog steeds niet beantwoord krijg
ondanks dat ik heel Bing en Google heb af gestruind

mijn probleem is dat ik een hele hoop foto’s in jpg formaat hebt staan
in de folder V:/documenten/mydatabaseproject/images/covers/(image name here).jpg
alleen de data base gaat van de ene pc naar de andere pc en krijgt daarbij telkens
een andere route name, zoals d:/ c:/ enz maar in Access veranderd die
link niet zelf dus als ik dan een formulier open met een image er in die naar die
map verwijst(V:/documenten/mydatabaseproject/images/covers/(image name here).jpg)
dan zie ik niets dan moet ik eerst al de links aan passen in me data sheet voor dat ie de images weer vind
is het mogelijk dat ik in acces kan laten specificeren dat ie aleen in een map zoekt ipv van dat ie met de hele route gaat werken zodat ik dan ??/mydatabaseproject/images/covers/(image name here).jpg
opgeef ipv van de hele naam zo kan ik de data base steeds van pc naar pc verplaatsen zonder telkens de image links hoef te veranderen

hopelijk dat er mensen zijn die dit wel weten pleaze egt pleaze help me ben egt al heel lang bezig maar kom er egt niet meer uit en wil zo graag dat Het goed gaat werken en als ik microsoft vraag dan bieden se me alleen en super dure cursus aan waarin vba word verteld maar ben geen miljonair ha ha dus dat is niet egt een optie :?

[ Voor 8% gewijzigd door Verwijderd op 03-05-2010 10:53 ]


Acties:
  • 0 Henk 'm!

  • Nielson
  • Registratie: Juni 2001
  • Laatst online: 20-09 13:02
Kerel, doe svp wat aan je spelling wat dit is een drama om te moeten lezen. Mensen willen je hier graag helpen, maar je mag dan wel een kleine beetje moeite in je post stoppen.

Weet verder niet waar je zoekt, maar op de Microsoft site staat wel wat info. Gebruik verder de zoekterm 'relative path' en je vind nog meer :)

Acties:
  • 0 Henk 'm!

  • Marko_J
  • Registratie: Maart 2010
  • Laatst online: 15-03-2024
@Nielson: Als ik het goed begrijp slaat hij de afbeeldingen niet op in Access zelf, maar alleen de paden - wat in principe wel de juiste tactiek is, want anders wordt je database wel erg groot.

@Brennan: je manier van schrijven is echt tenenkrommend inderdaad.

Er is geen server waar je de database centraal kunt plaatsen? En je kan geen algemeen pad bedenken wat voor iedere computer kan werken? Elke pc heeft toch wel een c-schijf zou je denken..

Zo niet, dan moet je inderdaad met relatieve paden gaan werken; in de tabel sla je alleen op wat echt relevant is; de bestandsnaam (en eventueel afwijkende subfolders). Het basis-pad (x:\mijnmooiedatabase\images\etc) bewaar je in een aparte tabel 'Instellingen' o.i.d. In je formulieren moet je vervolgens die twee waarden weer bijeen brengen om de afbeeldingen te kunnen laten zien, daar is in principe niet eens VBA voor nodig; gewoon de inhoud van twee velden aan elkaar plakken. [pad] & [bestandsnaam]

Op verschillende pc's hoef je dan alleen het basis-pad aan te passen in de instellingentabel om het te laten werken. Het kan uiteraard fraaier en beter, maar dit moet redelijk makkelijk te doen zijn.

Acties:
  • 0 Henk 'm!

Verwijderd

Regel 1 bij computers: gebruik nooit absolute paden.
Sla in je DB namen op als: "images/covers/(image name here).jpg" en maak een enkel veld (in een losse tabel of in je formulier) waar je het root path opgeeft, in dit geval dus "v:/documenten/mydatabaseproject/". Bij benadering van de files plat je die twee delen van het pad aan elkaar.

Meh, hierboven geeft het idee goed weer.

[ Voor 6% gewijzigd door Verwijderd op 03-05-2010 11:15 . Reden: Marko was eerder ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey bedankt voor het antwoord maar ik krijg het ondanks die informatie niet aan de praat
Ik zal uit leggen wat ik nu heb is misschien makelijker praten,
Ik heb een data sheet met daar in een aantal kolommen met informatie die gekoppeld zijn aan een formulier.
Met daar in ook een afbeelding venster
(dat venster is gekoppeld aan een kolom met daar in de bestand namen van het desbetreffende voorwerp dus de complete link naar de bestemming van de afbeelding )
Wat ik nu niet voor me kaar krijg is de bestand namen te verkorten zoals het op de site van microsoft staat.

(For example, if you place your database on a network, such as \\ServerName\ShareName\, and store your images in a folder on that share, such as \\ServerName\ShareName\Pictures, you don't have to specify the entire path.
So, instead of using \\ServerName\ShareName\Pictures\Picture.gif, you can use only the portion of the path that is different, relative to the location of the current Access file, like this: Pictures\Picture.gif.)

Maar op een of andere manier krijg ik dit niet aan de praat
Ik heb egt van alles geprobeerd, maar als jij het wel weet, is het dan mogelijk dat ik de data base op stuur en dat je dan daar in veranderd wat er veranderd moet worden zo dat het wel werkt
Hij is niet heel groot
Je zou me egt een heel groot plezier doen daar mee, want dan kan ik eindelijk verder met de data base te vullen

MVG brennan stoof d:)b

Acties:
  • 0 Henk 'm!

  • MadMarky
  • Registratie: Augustus 2001
  • Niet online

MadMarky

Begint eer ge bezint

offtopic:
Gast, volgens mij werd er gevraagd om eens op je spelling te letten :X

Waar jij nu naar zit te kijken gaat inderdaad over relatieve paden, dit werkt echter alleen als je afbeeldingen map deels in hetzelfde pad staat als je database.

Waarom sla je het pad niet op in een (visual basic) variabele? Je geeft het dan 1x op en voor de rest wordt er naar je variabele verwezen. Denk ook aan het optiescherm in veel applicaties waar je ook op die manier paden kunt opgeven, die vervolgens onthouden worden.

🖥️ | 🚗


Acties:
  • 0 Henk 'm!

Verwijderd

egt is een werkwoord, ik eg, jij egt, wij eggen. "Ik heb echt geëgd"
Ik krijg niet de indruk dat je het probeert, deels omdat je niet aangeeft wat je wel gedaan hebt en wat niet, of wat er niet werkte.
Met temporary tables (queries genaamd in Access), kan je resulterende kolommen maken. Een statement als het volgende zou het meoten doen. We gaan het niet letter voor letter voorkauwen, daar is GoT niet voor.
SELECT CONCAT(settings.rootpath, images.relpath) AS fullpath FROM settings, images;
Mijn SQL kennis is belabberd, dus waarschijnlijk klopt het maar half, maar met google bij de hand kom je er hiermee wel uit. Gebruik ook eens de online manual van MySQL (die voor het overgrote deel ook op MSSQL, en dus ook Access van toepassing is), die is erg handig in gebruik m.i.

@hieronder: Wij kunnen niet ruiken of je niets verkeerd hebt ingesteld. En we kunnen het ook niet zien, aangezien je niet deelt wat je al gedaan hebt.

[ Voor 11% gewijzigd door Verwijderd op 03-05-2010 12:04 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
MadMarky schreef op maandag 03 mei 2010 @ 11:26:
offtopic:
Gast, volgens mij werd er gevraagd om eens op je spelling te letten :X

Waar jij nu naar zit te kijken gaat inderdaad over relatieve paden, dit werkt echter alleen als je afbeeldingen map deels in hetzelfde pad staat als je database.

Waarom sla je het pad niet op in een (visual basic) variabele? Je geeft het dan 1x op en voor de rest wordt er naar je variabele verwezen. Denk ook aan het optiescherm in veel applicaties waar je ook op die manier paden kunt opgeven, die vervolgens onthouden worden.
Hey ik Kan helaas geen Visual basic, anders was ik er waarschijnlijk al uit gekomen.
Maar ik heb nu alle bestanden all in een folder

De data base zelf zit in de folder H:\My Dvd Data Base
En de images in H:\My Dvd Data Base\Images\DVD Covers

en als nog lukt het niet om de links te verkorten naar alleen die betreffende map.
zou ik ergens in me data base iets verkeerds hebben ingesteld.

Alvast bedankt

Acties:
  • 0 Henk 'm!

  • Nielson
  • Registratie: Juni 2001
  • Laatst online: 20-09 13:02
Had je deze ook al gevonden? En om dingen niet onnodig complex te maken, gebruik in eerste instantie geen paden en bestandsnamen met spaties erin.

Acties:
  • 0 Henk 'm!

  • Marko_J
  • Registratie: Maart 2010
  • Laatst online: 15-03-2024
Waar Nielson naar linkt is de meest logische en effectieve aanpak. Maar dan heb je dus wel (een beetje) VBA nodig. Maar ook zonder kennis daarvan moet het te doen zijn. Het kan echter ook zonder VBA.

Je moet echter wel wat informatiever zijn...

"Ik heb egt van alles geprobeerd"

Da's leuk, maar daar weten we hier nog niets mee. Als je niet onder woorden kunt brengen wat je geprobeerd hebt, dan weet je waarschijnlijk erg weinig van Access / programmeren, en dan wordt het sowieso een gebed zonder eind.

"De data base zelf zit in de folder H:\My Dvd Data Base
En de images in H:\My Dvd Data Base\Images\DVD Covers"

De folder waar de database staat is niet relevant :) Ook het pad naar de afbeeldingen boeit niet (want moet immers kunnen varieren).

Wat wel boeit: de tabel waar je de namen van de afbeeldingen opgeslagen hebt. Je hebt het over 'data sheet', dus ik vermoed dat je een tabel gemaakt hebt met 'Veld1', 'Veld2', etc. Daarin staat nu het volledige pad naar de afbeeldingen - en dat vormt dus een probleem. Het eerste wat je moet doen is daar vanaf komen; zoek/vervang "H:\My Dvd Data Base\Images\DVD Covers" voor "", zodat je alleen de bestandsnamen overhoudt.

Het pad sla je vervolgens in een nieuwe tabel op (tabel, geen datasheet).

In je formulier heb je waarschijnlijk een gekoppeld object staan die het plaatje weergeeft, klopt? Daar staat als veldnaam nu alleen 'Veld1' uit je originele datasheet. Maar die bevat nu alleen nog maar de bestandsnaam, en dus kan hij het plaatje niet meer vinden. Daar moet het pad nog bij. Kan als volgt;

=Dlookup("[veldnaam met inhoud pad]";[naam nieuwe tabel]) & [Veld1]

Dat is alles. Als je hier niet uit komt, dan weet je simpelweg te weinig van Access en wens ik je veel succes met het lezen van handleidingen, het doornemen van tutorials, etc. ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey ik heb de site waar nielson heeft gelink bekeken en geprobeerd te begrijpen maar vind het niet makkelijk om te begrijpen hoe de opbouw er nou van is ik heb nu een module aangemaakt(met vba)
Daar in staat het onderste.

Public Function GetDBPath() As String
GetDBPath = CurrentProject.Path & "\"
End Function

Die heb ik opgeslagen onder de naam Getpath. maar nu wil ik die gegevens die hij maakt samen voegen met gegevens die in picture staan. In de kolom picture staan nu alleen nog de afbeelding namen zelf met .jpg er achter (net zoals se in me Explorer staan)

Dus als ik het goed begrijp moet ik dan tog
Besturingselementbron =GetPath() + [Picture]
Of moet ik hier nog iets aan toevoegen want nu krijg ik geen afbeeldingen te zien :'(

MVG brennan stoof

Acties:
  • 0 Henk 'm!

  • Marko_J
  • Registratie: Maart 2010
  • Laatst online: 15-03-2024
Misschien moet je & i.p.v. + gebruiken, dus =GetPath() & [Picture]

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Marko_J schreef op maandag 03 mei 2010 @ 14:55:
Misschien moet je & i.p.v. + gebruiken, dus =GetPath() & [Picture]
Helaas Het zelfde resultaat ik vind het egt heel vreemd dat dat niet wil werken, ben nu al weer 5 uur bezig maar kom niet egt verder

maar in iedergeval bedankt voor de reactie :)

Acties:
  • 0 Henk 'm!

  • Marko_J
  • Registratie: Maart 2010
  • Laatst online: 15-03-2024
oh wacht... heet je module Getpath, en je functie GetDBPath? Want je moet wel de functie aanroepen en niet de module. Dus =GetDBPath() & [picture]

En volgens mij moet je subfolder voor images er nog bij. De standaardfunctie CurrentProject.Path geeft de locatie terug waar je database staat. In dit geval dus "H:\My Dvd Data Base". Daar heb je nu alleen een slash aan toegevoegd, maar ik denk dat '\Images\DVD Covers" er ook nog bij moet?

De functie wordt dan
GetDBPath = CurrentProject.Path "\Images\DVD Covers\"

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb =GetDBPath() & [picture]
al geprobeerd maar nog steeds geen resultaat
en ik heb me afbeeldingen in een map met de data base gestopt om het makelijker te kunnen verwijzen naar elkaar
egt heel vreemd mischien is het makelijker uitleggen en uitzoeken als je het zelf kan zien(de data base)
ik zou hem kunnen opstuuren naar je als je dat wilt,

in iedergeval echt heel erg bedankt voor de hulp tot zover

MVG brennan stoof

Acties:
  • 0 Henk 'm!

Verwijderd

Visual Basic:
1
GetDBPath = (CurrentProject.Path & "\Images\DVD Covers\")


offtopic:
brennan1990: welkom op het forum! lees je even ons algemeen beleid door, dan weet je wat de geplogendheden hier zijn (oa. niet nodig van te groeten), en dan weet je hoe een goede topicstart te maken, wat op zijn beurt weer helpt om de dingen duidelijker te formuleren

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op maandag 03 mei 2010 @ 15:40:
Visual Basic:
1
GetDBPath = (CurrentProject.Path & "\Images\DVD Covers\")


offtopic:
brennan1990: welkom op het forum! lees je even ons algemeen beleid door, dan weet je wat de geplogendheden hier zijn (oa. niet nodig van te groeten), en dan weet je hoe een goede topicstart te maken, wat op zijn beurt weer helpt om de dingen duidelijker te formuleren
klopt het dat mijn script er so uit moet zien
Sub
GetDBPath = CurrentProject.Path "\Images\DVD Covers\"
End Sub

want hij geeft nu aan dat er een syntaxfout is en alle text is rood gekleurd

En ik zal proberen geen bedankt meer te zegen onder me posts ha ha
En ik zal even het algemeen beleid door nemen TNX :)

Acties:
  • 0 Henk 'm!

  • Marko_J
  • Registratie: Maart 2010
  • Laatst online: 15-03-2024
Verwijderd schreef op maandag 03 mei 2010 @ 16:18:
klopt het dat mijn script er so uit moet zien
Verdorie gast :-( de juiste syntax staat er letterlijk boven. Je bent de & vergeten.

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Je kunt het ook simpel en voor jou begrijpelijk houden.

Dei afbeeldingen staan op een netwerkshare? Geef dan niet het pad op met een driveletter maar gebruik het volledige unc-pad: \\servernaam\sharenaam\subfolders\images.jpg. Da's op iedere PC binnen het netwerk gelijk. :)

Granted, relatieve paden is mooier, maar voor een huis-tuin-en-keuken project zie ik het bezwaar van absolute paden niet zo, en als je dit wel snapt is het een betere oplossing. Bovendien, als je je front-end lokaal draait zijn relatieve paden sowieso tot mislukken gedoemd.

[ Voor 9% gewijzigd door Lustucru op 04-05-2010 00:34 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey bedankt maar ik heb helaas geen server ik heb het of op de c drive of op een exerne drive maar ik denk dat ik maar eerst even wat vba tuorials ga op zoeken, voor dat ik weer verder ga met me database maar in iedergeval alemaal erg bedankt voor de moeite,

Acties:
  • 0 Henk 'm!

  • BoZ_
  • Registratie: Juni 2003
  • Laatst online: 05-10-2020
Als je puur een drive-letter wilt vinden kan je iets als het volgende gebruiken:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Function GetDrive(strSearchPath As String) As String

    Dim i As Integer
    Dim fso As Object
    Dim strDir As String
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    For i = 65 To 91
        If i = 91 Then
            GetDrive = "Geen"
            Exit Function
        End If
        strDir = Chr(i) & ":\" & strSearchPath
        If fso.FolderExists(strDir) Then
            Exit For
        End If
    Next i
    
    Set fso = Nothing
    
    GetDrive = Chr(i)

End Function


Dan kan je bijvoorbeeld bij het laden van een formulier zo de driveletter opvragen:

Visual Basic:
1
2
3
4
5
6
Dim strDriveLetter as String

strDriveLetter = GetDrive("My Dvd Data Base\Images\DVD Covers")
If strDriveLetter = "Geen" Then
    ' Het path is niet gevonden.
End If

[ Voor 10% gewijzigd door BoZ_ op 04-05-2010 13:08 . Reden: Kleine error handling toegevoegd voor wanneer het path op geen enkele drive wordt gevonden ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey Tnx man ik ga dat proberen,
Pagina: 1