DLookUp van een query mogelijk?

  • Onderwerp starter Onderwerp starter Xoff
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Xoff

Gebruiker
Lid geworden
13 mrt 2013
Berichten
17
Beste,
Ik ben nog maar pas met Access bezig en heb hier al veel nuttige info gevonden, maar ik zit nu al even vast met een specifiek probleem.
Om het heel kort te houden; is volgende expressie correct kwestie haken en aanhalingstekens?

=DLookUp("[Categorie]";"[Stock Opgeteld]";"[Artikel]=" & [Query]![Stock Opgeteld]![Artikel])

Indien niet, gelieve dit dan even te verbeteren, indien wel, zal ik meer info moeten geven... :confused:
Alvast bedankt voor jullie reactie.

Mvg,
X-off
 
Het enige dat ik niet snap is het laatste stuk: het criterium. Doorgaans vergelijk je daarin het veld uit de tabel waarin je zoekt met de veldwaarde uit de tabel waarin je de formule maakt. Maar ik zie dezelfde zoektabel als vergelijkingstabel. Dus dat is vreemd. Dit zou wel moeten werken:
Code:
=DLookUp("[Categorie]";"[Stock Opgeteld]";"[Artikel]=" & [Artikel])
Maar als je probeert te zoeken in de tabel [Stock Opgeteld], dan snap ik je opzet dus niet. En hopelijk voor jou is [Artikel] een getal (sleutel) en geen tekst. Want anders klopt de syntax ook niet.
 
Hallo Michel,
Bedankt voor je reactie.
Dit werkt ook niet. En [Artikel] is dus wel degelijk tekst. :confused:

Ik zal het even toelichten.
Ik werk in een formulier "Uitleen Form" en probeer in een tekstvak de "Categorie" weer te geven die bij het Artikel hoort wat uit een keuzelijst (met invoer) wordt geselecteerd.
Deze categorie kan worden teruggevonden in een query "Stock Opgeteld".
Is dit duidelijk? Wat doe ik verkeerd? Of is dit uberhaupt niet mogelijk?

X-off
 
Laatst bewerkt:
Je code zou, als je op tekst wilt zoeken, er zo uit moeten zien:
Code:
=DLookUp("[Categorie]";"[Stock Opgeteld]";"[Artikel]='" & [Artikel] & "'")
Maar eigelijk zou ik zeggen: niet doen, want het kan veel slimmer en makkelijker. Als je de categorie namelijk opneemt als kolom in de query van de keuzelijst, dan kun je hem simpel daaruit lezen in een tekstvak. Stel dat je al 3 kolommen hebt (ArtikelID, Artikel, Prijs) dan zet je daar Categorie als 4e veld bij. In het tekstvak waarin je de categorie wilt zien, zet je dan als Besturingselementbron:
Code:
=cboArtikel.Column(3)
Nu zie je direct de categorie als je een artikel selecteert.
 
Nu, bij je eerste mogelijkheid geeft ie al geen fout meer, maar vult ie ook niets in.

Bij de tweede oplossing doet ie eerst ook niets, en daarna '#Naam?'.
Waarschijnlijk doe ik hier iets fout.
Hoe weet ie bij je 2de code dat ie in de query 'Stock Opgeteld' moet gaan zoeken?
De besturingselementbron van Artikel is de tabel 'Uitleen', maar de rijbron komt vd query 'Stock Opgeteld'.

Toch zou ik liever de eerste mogelijkheid opgelost zien, omdat ik dan eventueel die categorie ook in de tabel 'Uitleen' kan overnemen.
 
Hij moet niet in de query zoeken, maar in de keuzelijst. Laat de naam en de SQL van die keuzelijst eens zien?
 
Hmmm, ik ben echt nog een beginner, en heb gewoon in het eigenschappenvenster deze settings ingevoerd.
Besturingselementbron: Artikel
Rijbron: Stock Opgeteld
Type rijbron: Tabel/query

Dus geen SQL gemaakt hiervoor.
 
Een opgeslagen query als rijbron voor een keuzelijst mag uiteraard wel, maar is niet echt zinvol. Je kunt beter de SQL laten staan, want bewerken van een (rijbron van een) keuzelijst doe je toch in hetzelfde scherm. Het heeft dus geen enkele meerwaarde om die query op te slaan. Sterker nog: als je, zoals nu, de code zou willen posten dan kan dat niet eens!
Overigens heb je natuurlijk wel SQL gemaakt voor de keuzelijst, want elke query is SQL. Alleen moet je nu wat anders werken.
Ik raad je aan om de query eerst te bewerken, bijvoorbeeld een veld toevoegen, en dan niet als query op te slaan. Dus na het aanpassen van de query de knop Sluiten klikken, en uiteraard de aanpassingen bewaren. Als het goed is, bestaat de rijbron dan uit de SQL die je nodig hebt.
 
Ik vrees dat je me kwijt bent. :rolleyes:
"beter de SQL laten staan" terwijl ik geen SQL gemaakt heb?
Die query heb ik trouwens niet gemaakt met de bedoeling om als keuzelijst te dienen, maar omdat ik 'm toch had en de gegevens daarvan bruikbaar waren, heb ik daar de keuzelijst naar verwezen.
Nu vraag je om de query te bewerken (waarom er trouwens iets aan toevoegen als alle gegevens er in staan?), en dan niet als query op te slaan? Als wat dan? Hoe kan dit?

Is het niet gewoon simpeler om die 'DLookUp' code te verbeteren? Al de rest werkt zoals het zou moeten, tot nu toe... :)
 
Zoals ik al zei: je hebt wèl SQL gemaakt. Alleen heb je die opgeslagen, wat dus niet slim is. Door iets te veranderen aan de query, en die niet op te slaan als query, vervang je de querynaam door de SQL code als je na het bijwerken de query sluit om terug te keren naar het formulier. En dan zit je weer op roosjes...
En nee, het is zeker niet simpeler om de DLookup aan te passen.
Je hebt een foutje gemaakt, en dit is dus een leermomentje. De volgende keer, als je weer een keuzelijst maakt, natuurlijk nooit meer de query opslaan :)
 
Bon, zoals ik al zei; ik volg niet meer.
Ik snap wel dat ik 'onbewust' SQL heb gemaakt, maar een query niet opslaan als query...?!
Ik heb geen idee hoe ik dit moet doen.
Toch bedankt voor de moeite.
 
Die query heb ik trouwens niet gemaakt met de bedoeling om als keuzelijst te dienen, maar omdat ik 'm toch had
In dat geval zou ik zeggen: gooi hem weg (kwestie van de rijbron met Delete leegmaken) en maak een nieuwe query aan met de knop met 3 puntjes. Komt alles goed...
 
Ik heb nu "SELECT [Stock Opgeteld].Artikel FROM [Stock Opgeteld] ORDER BY [Stock Opgeteld].Artikel; " staan bij de rijbron van Artikel, en "=cboArtikel.Column(3)" bij besturingselementbron van het vak categorie.
Als resultaat krijg ik nog steeds "#Naam?"...

Ik blijf proberen met DLookUp.
Dan kan ik die categorie nog gebruiken om later te sorteren...
 
Laatst bewerkt:
Dan lees je niet helemaal zuiver, want ik heb eigenlijk al uitgelegd hoe de keuzelijst er uit zou moeten/kunnen zien.
Stel dat je al 3 kolommen hebt (ArtikelID, Artikel, Prijs) dan zet je daar Categorie als 4e veld bij. In het tekstvak waarin je de categorie wilt zien, zet je dan als Besturingselementbron:
Code:
=cboArtikel.Column(3)
Nu zie je direct de categorie als je een artikel selecteert.
En jij hebt nu het jofele aantal van één veld in je keuzelijst staan. Oftewel: daarmee kun je natuurlijk nooit het 4e veld uitlezen.... Zowiezo moet je het veld [Categorie] ook in de query zetten (zoals ik had gezegd). De telling is een beetje anders als je zou verwachten; de 4e kolom wordt als Column(3) opgezocht. En dat komt omdat Access bij 0 begint, en niet bij 1.
 
Toch niet.
In mijn query [Stock Opgeteld] stonden reeds meerdere kolommen, waaronder Artikel en Categorie.
Ik wist ook al dat de nummering van kolommen anders was bij Access, dus ik had de (3) al vervangen door 2, 4 (hoewel [Categorie] toevallig ook bij mij de 4de kolom was), maar krijg steeds hetzelfde resultaat: #Naam?
:(
 
Ik ga uit van de query die je nu gebruikt, en die bevat maar één veld in de keuzelijst. En dan gaat het niet werken.
 
Ja sorry, waarschijnlijk ken ik er te weinig van, maar toch bedankt voor de hulp.

Iemand anders een idee hoe ik de DLookUp code kan aanpassen zodat die werkt?

X-off
 
Ik heb het intussen gevonden.
Voor degene die het mocht interesseren; de code van OctaFish werkt prima,
(Code:
=DLookUp("[Categorie]";"[Stock Opgeteld]";"[Artikel]='" & [Artikel] & "'"))
maar ze moet staan op de besturingselementbron. :thumb:
Thanks!

X-off
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan