Toon posts:

Automatisch koppelen ole objecten in access

Pagina: 1
Acties:
  • 262 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo,

Ik ben bezig met het maken van een database waarin tekeningen bijgehouden gaan worden. In de database bestaat een tabel "tekeningen". De tabel bestaat uit een veld "tekening naam" en "bekijk tekening". Nu zou ik graag willen dat in het veld "bekijk tekening" een link naar een pdf file komt. Alleen het gaat om een paar honderd tekeningen. De pdf files hebben dezelfde naam als die in het veld "tekening naam" gebruikt worden. Is het mogelijk om een koppeling aan te maken die naar een standaar locatie verwijst en kijkt naar de waarde in het veld "tekening naam" om te bepalen welke pdf hij uit die map moet linken? Bijv. C:\pdf_tekeningen\"tekening naam".pdf

Ik hoop dat het te begrijpen is!

Alvast bedankt!

  • Boss
  • Registratie: September 1999
  • Laatst online: 10:17

Boss

+1 Overgewaardeerd

Ik zou alleen maar de naam van de tekening opslaan in de database.
Als de tekeningen allemaal in dezelfde map staan (c:\pdf_tekeningen\) kan je de naam van die map het beste als een variabele opnemen. Als je dan een keertje de tekeningen wilt verplaatsen hoe je niet alles aan te passen. Het opslaan van de tekeningen als OLE links zou ik in dit geval dus niet doen.

Bij de tabel maak je een formulier, en daarop een knop 'Bekijk tekening'. Via die knop laat je vervolgens het bestand openen via het Shell commando.

en natuurlijk welkom op GoT!

[ Voor 6% gewijzigd door Boss op 17-10-2005 11:39 ]

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Wanneer ik een knop aanmaak op de pdf te kunnen openen krijg ik de volgende code:

Private Sub Knop3_Click()
On Error GoTo Err_Knop3_Click

Dim stAppName As String

stAppName = "C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe C:\20300.pdf"
Call Shell(stAppName, 1)

Exit_Knop3_Click:
Exit Sub

Err_Knop3_Click:
MsgBox Err.Description
Resume Exit_Knop3_Click

End Sub

Ik ben helemaal niet thuis in vb. Maar wat ik graag zou willen is dat ik C:\20300.pdf kan vervangen door een variabele die kijkt naar het veld "tekening naam". Dus de waarde die op dat moment wordt weergeven in het formulier. Is dit mogelijk?

  • Boss
  • Registratie: September 1999
  • Laatst online: 10:17

Boss

+1 Overgewaardeerd

Dat is wel heel erg basic:

Visual Basic:
1
stAppName = tekening_naam


Overigens zou ik geen spaties gebruiken in veldnamen, daar krijg je alleen maar ellende mee. Ik geloof dat je dan de spatie in de code moet vervangen door een _. Maar beter zou zijn om het veld te hernoemen naar TekeningNaam.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Oké, ik heb het volgende:

Private Sub Knop15_Click()


Dim mod_ID$, stAppName$, stPathName$

mod_ID = Me!mod_ID
stAppName = "F:\tmp\Reader\AcroRd32.exe"
stPathName = "F:\tmp\" & mod_ID & ".pdf"

If Dir(stPathName) = stPathName Then
Call Shell(stAppName & stPathName, 1)
Else
MsgBox stPathName & " bestaat niet"
End If
End Sub

Alleen dit script werkt niet. Wanneer ik ervoor zorg dat in de map F:\tmp\ een pdf bestand staat met dezelfde naam als het veld mod_ID, geeft hij toch de melding F:\tmp\123.pdf bestaat niet.

Wat doe ik fout?

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

DIR geeft alleen de bestandsnaam terug, en niet het pad; dus dir(spathname) zal nooit gelijk worden aan stPathName. Beter:
code:
1
Dir(stPathName)<>"" of

code:
1
Dir(stPathName & sFileName)=sFileName


Je kunt dit zelf onderzoeken door een breakpoint te zetten op de 'if' regel. Als je danmet de muis over de regel beweegt zie je de actuele waarden van de variabelen. Je kunt ook in het else-statement een debug.print opnemen:
code:
1
debug.print Dir(stPathname), stPathName

dan zie je meteen waar het mis gaat.

offtopic:
Wil je code tussen '[code] [/code]'tags zetten? Dat leest prettiger

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


Verwijderd

Topicstarter
Bedankt! Ik heb het nu werkend. Alleen heb ik nog één vraag. In de map met tekeningen staan nu nummers die precies gelijk zijn aan de veldnaam, maar we werken ook met revisies binnen de tekening. Bijv. in het veldnaam staat 200 in de map tekeningen staat ook een pdf met de naam 200, maar ook één die 200c heet. Dan is 200c degene die hij moet laten zien ook al staat er in bij de veldnaam 200. Is dit mogelijk en hoe kan ik dit het beste voor elkaar krijgen.

Alvast bedankt!

  • Boss
  • Registratie: September 1999
  • Laatst online: 10:17

Boss

+1 Overgewaardeerd

Ja, dat is mogelijk. MAar ik denk dat je zelf wel kan raden dat daar geen standaard oplossing voor is. Met een paar regels code zal het wel te doen moeten zijn. Als het altijd op alfabet gaat, kan je met een paar herhalingen van het DIR commando met de juiste parameters uitzoeken wat het bestand is met de hoogste letter op het einde en die vervolgens laten zien.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Zou je misschien een voorbeeld kunnen geven?

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Er staat een uitstekend voorbeeld van het gebruk van dir() in de help file van Access. Omdat het niet de bedoeling is dat we je alles voorkauwen, ik hier toch wel iets van eigen inzet mis, en, last but not least, omdat het inmiddels aardig offtopic gaat, sluit ik dit topic.

Mocht je er met de voorbeelden in de helpfile niet uitkomen dan kun je altijd een nieuw topic openen, maar dan graag mét een beschrijving van wat je niet snapt aan de voorbeelden in de help.

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

Pagina: 1

Dit topic is gesloten.