Query-veld moet waarde halen uit een popdown-menu

Status
Niet open voor verdere reacties.

OBADE

Gebruiker
Lid geworden
9 feb 2016
Berichten
93
Hallo,

Deze vraag zal vast eerder zijn gesteld, en misschien is het zelfs wel basic informatie. dus een verwijzing naar een andere topic is prima.

Ik heb een selectiequery met een veld waarvan op de waarde moet worden geselecteerd. Alleen, deze waarde moet komen uit een andere tabel, waarbij via een popdown-menutje uit een waarde moet worden gekozen.
Volgend mij werd dat >20 jaar geleden al gedemonstreerd met die goeie ouwe Nordwind-trading voorbeeld-applicatie in de eerste versies van Access. Maar ik weet het ff niet.

Wie helpt mij?

Groeten,
OBADE.
 
Eenvoudigste manier lijkt me: lanceer de query vanop een formulier waarop een combox met de te selecteren waarden. In de query criteria verwijs je naar de waarde uit de combobox.
 
Wat ik altijd doe: zet via een formulier met keuzelijst de criterium waarde in de SQL door m.b.v. een QueryDef de SQL van de query te veranderen. Dan heb je voor het uitvoeren van de query daarna het formulier niet nodig. Het onderhouden van de query is ook een stuk makkelijker.
 
Hoe doe ik dat dan? Ik heb een formulier met als gegevensbron een tabel "betalingen", in dit formulier zit een keuzelijst met als gegevensbron de tabel "functienummers". In die keuzelijst zet ik een bepaalde waarden van dit functienummer dus vast. Beide tabellen zijn gekoppeld. Dan wil ik op een button kunnen drukken om een rapport op te maken, gevoed vanuit een query. In deze query moeten alle betalingen komen te staan met als waarde voor het veld 'functienummer' de in de keuzelijst vastgezette waarde.
Hoe zet ik in die query dan voor het veld 'functienummer'(in de tabel betalingen dus) het criterium de waarde van die keuzelijst?

Is querydef iets dat ik als criterium in deze query moet opnemen?
 
Laatst bewerkt door een moderator:
de querydef is wat het zegt: de querydefinitie bv.
select field1, field2, ... , field n
from tblTable1 inner join tblTable2 on ...
enzovoort.

Via VBA kan je die dynamisch aanpassen, alhoewel je imo dan beter een ADODB command object gebruikt.

Als je niet wil programmeren dan kan je altijd met een formulier en een combo box werken.
 
Je gebruikt een procedure die ik meestal ook wel gebruik voor rapporten, dus dat komt mooi uit :). Om te beginnen: ik definieer een 'tijdelijke vaste' query die ik voor alle rapporten kan gebruiken. Die noem ik bijvoorbeeld qTempRap. Van deze query pas ik steeds de SQL aan m.b.v. selecties op het formulier. Vervolgens open je dan het rapport, wat dan gelijk goed werkt. Zowel in schermweergave als in afdrukweergave (of mailings).

Code:
Dim qTmp As QueryDef
        Set qTmp = CurrentDb.QueryDefs("qTempRap")
        strSQL = "SELECT " & sVelden_Lijst & "From tblBetalingen WHERE [FunctieNummer] = " & Me.cboFunctieNummer.Value & " ORDER BY [FunctieNummer] DESC;"
        qTmp.SQL = strSQL
        DoCmd.OpenReport "rapBetalingen"
Dat is ongeveer de werkwijze :).
 
Dat ziet er inderdaad gestructureerd uit. Toch nog een paar vragen. Vanuit deze procedure wordt gewoon de hele query gedefinieerd? Dus die hoeft niet van tevoren aangemaakt te worden? En Me.cboFunctieNummer.Value is dus blijkbaar het argument voor het criterium dat in de query wordt gemaakt? cboFunctienummer is dan ook de veldnaam vanuit de keuzelijst die vóór deze procedure al is ingesteld? Of gebeurt dit ook vanuit de procedure?
 
Laatst bewerkt door een moderator:
Gelieve niet te quooten als het niet nodig is. En mij lijkt het niet nodig, en het maakt de tekst al helemaal niet duidelijker. Ik zou zeggen: even op <Bericht aanpassen> klikken, en de tekst weghalen.
Vraag 1: Deze procedure vervangt de complete bestaande query door een nieuwe.
Vraag 2: Als de query nog niet bestaat, kun je hem ook eerst laten aanmaken. Ik gebruik zelf een foutroutine die dat checkt. Je kunt echter al een simpele query maken en die opslaan onder de goede naam, dan komt de foutmelding niet.
Vraag 3: Ik heb je db niet, dus ik heb een 'fantasienaam' gebruikt voor jouw keuzelijst. Zelf geef ik keuzelijsten altijd een 'voorvoegsel'(lst voor keuzelijsten, cbo voor keuzelijsten met invoervak) zodat ik weet welk object ik opvraag. Een veldnaam zal dus nooit met cbo beginnen.
Uiteraard moet je mijn namen vervangen door de namen die je zelf gebruikt. Al mag je jouw namen uiteraard ook aanpassen :).
 
Hoi Octafish,

sorry voor het onnodig quoten. Maar ik weet ff niet hoe ik het bericht kan wijzigen. HELP biedt ook geen uitkomst (of ik heb het niet gelezen).
 
Je zou een knop moeten zien met <Bericht bewerken>, maar die zie je inderdaad niet altijd. Hangt wellicht van de browser af. Maakt niet uit, je weet het nu voor de volgende keer :).
 
En dat mag je helemaal zelf doen. Tenzij je een persoonlijke helper in huis hebt die voor jou de meldingen afsluit. Zelf heb ik die luxe helaas niet. :D
 
Je hoeft niet te sluiten. Gaat vanzelf.
Belangrijkste heb je al gedaan, topic als opgelost markeren.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan