DLookup() ... lukt mij niet.

Status
Niet open voor verdere reacties.

RadboudAKF

Gebruiker
Lid geworden
3 nov 2010
Berichten
219
En zoals steeds heb ik problemen met de Functie DLookup()

Ik heb een invulformulier gemaakt in ACCESS waarbij een bepaalde medicatie moet worden ingevuld. Ik laat de gebruiker een keuzelijst met invoerveld openen waarna men de medicatie kan invullen (tabelletje "Stofnamen") . Bij die medicatie hoort ook een houdbaarheidstermijn (in dagen). Die staat ook in hetzelfde tabelletje.

Voorbeeld:

Stofnaam Houdbaarheid
Ambisome 7
Amikacine 14
Benzyl-Penicilline 3

De tabel is de bron van de keuzelijst met invoerveld.

Hoe zorg ik er nu voor dat de houdbaarheid die hoort bij de gekozen medicatie wordt ingevuld in het veldje "houdbaarheid"

houdbaarheid.jpg

Ik heb hier al eerder mee geworsteld....ook met dLookup. Kennelijk begrijp ik het principe niet goed, ook na vele malen proberen.

Nu probeerde ik: Me.Houdbaarheid = DLookup("Houdbaarheid", "Stofnamen", "Me.Medicatie=Stofnaam") , maar dat werkt uiteraard niet. Hoe dan wel? En waarom worstel ik steeds met dLookup(). Ik ben waarschijnlijk de enige...(lol)

Groet,

Jan Stegeman
 
Hoi,

Kan te maken hebben met het feit dat je zoekt naar tekst. Hierbij een voorbeeld met bijbehorende link de bron.

Code:
   =DLookup("[ContactName]", "[Customers]", _
      "[CustomerID]='" & [CustomerID] & "'")

Link: https://support.microsoft.com/nl-nl/kb/208786

Heb je al eens gekeken naar Elookup? Dit is werkt sneller dan de standaard Access DLookup. Manier van werken is hetzelfde maar zul je wel zelf even een functie moeten aanmaken

Link ELookup: http://allenbrowne.com/ser-42.html
 
Waarom haal je de gevraagde informatie niet uit de keuzelijst? Makkelijker en vooral ook sneller als DLookup.
 
Uit de keuzelijst? Kennelijk begrijp ik dit écht niet goed. Ik werk met een keuzelijst, vind mijn keuze, maar die andere waarde wil ik ook invullen. Daar hoeft toch niet een nieuwe keuzelijst te worden gemaakt? Ik begrijp dit niet helaas....
 
Bij die medicatie hoort ook een houdbaarheidstermijn (in dagen). Die staat ook in hetzelfde tabelletje
Dat is de tabel "Stofnamen" neem ik aan. Als je alle tabelwaarden die je in je formulier terug wilt zien opneemt in de query die onder de keuzelijst hangt, kun je die waarden op basis van de gekozen waarde letterlijk (zoals ik in bericht #3 schreef) uit de keuzelijst halen. Ik zei niet dat je een extra keuzelijst moest maken :).
Dat concept is vrij simpel. Een keuzelijst (met invoervak of niet, maakt voor het verhaal niet uit) heeft altijd een afhankelijke kolom. Dat is de waarde die in je tabel wordt opgeslagen. Maar als je dus meerdere kolommen in je keuzelijst hebt gezet, kun je die terug laten komen in tekstvelden op je formulier. Dat doe je door in het besturingselementbron van dat tekstveld een formule te zetten die de waarde uit de keuzelijst haalt. Dat ziet er dan zo uit:
=cboMedicatie.Column(#). Hierbij is # het nummer van de kolom die je wilt zien -1. Dat komt dan weer omdat de functie begint te tellen bij 0, dus de eerste kolom (doorgaans gebruikt voor de afhankelijke kolom) is dan 0, de tweede kolom is dan 1, de derde 2 en zo verder.
Zo'n tekstvak is dan dus niet-afhankelijk maaar dat hoeft ook niet. Overigens is dat met DLookup natuurlijk ook het geval.
Je DLookup zou trouwens kunnen werken als je de juiste formule gebruikt :).
Code:
= DLookup("Houdbaarheid", "tStofnamen", "MedicatieID=" & cboMedicatie)
Omdat we niet precies weten hoe je velden/objecten heten, heb ik het maar even neergezet zoals de objecten en velden bij mij zouden heten.
 
Octafish, zeer bedankt voor de uitleg. Helder en begrijpelijk.

Weet ook niet waarom ik dit zo ingewikkeld vind. Ik paste dit al vaker toe en iedere keer weer moet ik weer op zoek !!
 
Je bent echt niet de enige; zoals zo vaak met dit soort zaken: de kracht ligt in de herhaling :).
 
Gelukkig maar ... voelde me even heel alleen. Ik zet de vraag op opgelost (en heb inmiddels alweer een nieuwe vraag gesteld...nu betreft het mijn worsteling met tijd-definities.)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan