Combobox als input voor Dlookup geeft geen resultaat op formulier

Status
Niet open voor verdere reacties.

vincentdelaat

Nieuwe gebruiker
Lid geworden
18 dec 2014
Berichten
3
Waarde lezers van dit forum,

Ik heb het volgende probleem. Ik heb een database waarin ik 1 brontabel heb met gegevens. Deze brontabel bevat een lijst met hardware die bij een klant kan voorkomen. Uit deze brontabel wil ik lijsten genereren die klantspecifiek zijn.

Dit doe ik door een formulier te laten vullen waarin de klant aan kan geven welke hardware hij op locatie heeft. Om de klant een hoop moeite te besparen, heb ik een combobox gemaakt op het formulier. Als de klant daar bijv. object "kraan" selecteert, wil ik dat hij de andere velden op het formulier vult. Hiervoor had ik de functie DLookup in gedachte.

Deze heb ik dan ook ingeprogrammeerd (leve YouTube instructiefilmpjes) maar ik krijg geen resultaat. Zelfs geen foutmelding dat de syntaxis verkeerd is. Kunnen jullie mij uitleggen wat ik verkeerd doe?

Bekijk bijlage Database poging VIII.zip
 
Je doet een paar dingen niet goed, in mijn ogen.

1. De kleinste fout: je Keuzelijst heeft dezelfde naam als het veld dat er onder hangt. Dat is op zich niet zo'n probleem, maar handig is het niet, want als je een object hebt (de keuzelijst) dat dezelfde naam heeft als het onderliggende veld, hoe moet Access dan weten wanneer je naar het object refereert, en wanneer naar het veld? Nu is dat niet zo'n probleem, maar voor de uiteindelijke oplossing wél. Dus de keuzelijst heb ik hernoemd naar cboItem. Je gebruikt ook bij voorkeur vaste voorvoegsels bij objecten, dus txt voor tekstvelden, lst bij keuzelijsten en cbo bij keuzelijsten met invoervak.

2. Je slaat niet het sleutelveld op uit de tabel tblbron op, maar het veld itemnr. Als Itemnr uniek is, maak daar dan het sleutelveld van. Dan is het veld ID overbodig. Als het veld niet uniek is: wat is dan het nut van het veld?

3. Je hebt het tekstvak Omschrijving ook in je tabel zitten. Waarom? Helemaal niet nodig en zelfs ongewenst. Je slaat namelijk al een verwijzing op naar het artikel. We noemen dat dataredundantie, en je probeert dat zoveel mogelijk te vermijden.

4. Het échte probleem. Je keuzelijst geeft niet het veld [Itemnr] terug, maar het veld [ID].
Code:
SELECT Id, Itemnr, Omschrijving FROM tblbron;
In je DLookup moet je dus ook het veld ID gebruiken, en niet Itemnr. Dus:
Code:
    Me.Omschrijving = DLookup("Omschrijving", "tblbron", "ID=" & Me.cboItemnr)

5. De échte oplossing is een stuk simpeler, en die is: gooi het veld [Omschrijving] weg uit je tabel, maak van txtOmschrijving dus een niet-afhankelijk veld en zet er deze formule als <Besturingselementbron>:
Code:
=[cboItemnr].[Column](2)
Hoef je, kortom geen overbodig veld in je tabel op te nemen, en geen overbodige VBA code :)
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan