cbo vult cbo voor opzoeken gegevens

Status
Niet open voor verdere reacties.

martijnverdaas

Gebruiker
Lid geworden
5 apr 2010
Berichten
44
Hallo Allemaal,

na dagen speurwerk op het internet geeft ik de zoek tocht op, voor mijn volgende uitdaging.

Ik bouw een ledenadministratie voor mijn dansschool en nu wil ik boven aan mijn leerling formulier in de koptekst twee cbo op de volgende manier laten werken.

in de eerste wil ik graag een keuze maken van beschrijvingen van zoek criteria uit diverse velden.

dus cbo moet zoeken op

LLID
achternaam
Voornaam
GeboorteDatum
enz

uit de tabel tblLeerling

en LLIban

uit de tabel tblLeerlingIban

Als ik daar dan de keuze heb gemaakt in bv. achternaam wil ik graag dat de cbo ernaast zich vult met alle achternamen in de database en dat ik met typen kan zoeken naar de naam. hit enter en display de gezochte leerling. Als ik nu in de eerste cbo de keuze emailadres kies, gaat de tweede cbo weer naar alle email adressen en kan ik zoeken naar een specifiek email adres. enz enz

ik dacht door een qry te maken voor de eerste cbo ik wel een eind op weg zou komen, maar helaas. Wie kan mij op weg helpen. of mij verwijzen naar een tutorial/stappenplan om dit te realiseren. Wil graag zelf doen omdat ik nog veel meer code zal gaan moeten schrijven.??

als ik de qry aan de cbo hang krijg ik een leeg veld, maar zie ook dat hij hier al de data wil gaan weergeven, en ik wil eerst die selectie maken tussen de diverse groepen (kollomnamen)

hier een print screen van mijn qry. & van het formulier waar de twee cbo 's boven in te zien zijn.

qryLeerling_cboFindLL_Input.jpg
frmLeerling.jpg
 
Laatst bewerkt:
Ik ben ook graag vrolijk, maar op dit moment meer verward... Want wat bedoel je nu eigenlijk? Wil je met de eerste keuzelijst een veld kiezen, dat je in de tweede gebruikt als criterium? Want dat is wat ik er nu van maak.
 
Ik ben ook graag vrolijk, maar op dit moment meer verward... Want wat bedoel je nu eigenlijk? Wil je met de eerste keuzelijst een veld kiezen, dat je in de tweede gebruikt als criterium? Want dat is wat ik er nu van maak.

hmmmm, en ik maar denken dat ik het aardig duidelijk had.

Misschien moet ik het andersom benaderen.

ik wil in de tweede cbo op alles "enigszins gesorteerd" kunnen zoeken.

dus wil ik in mijn database zoeken op een specifiek leerlingnummer. (denk aan scannen barcode op de inschrijfformulieren in een later stadium)

kan kies ik LLID in de eerste cbo die alle LLID weergeeft in de tweede cbo waar ik ga zoeken door te typen of door te scrollen. zo dacht ik dat ik doormiddel van twee cbo's te gerbuiken een compacte maar zeer uitgebreide zoek functie kon maken.

Hopelijk is het nu duidelijk.

zie mijn bijlage voor een getekende uitleg (langleve PhotoShop)
frmLeerlingmet uitleg.jpg
 
Ik vind die plaatjes nog steeds niet helpen, maar ik krijg nu de indruk dat je toch in de eerste keuzelijst een veld selecteert (in jouw voorbeeld Geboortedatum) en dat je in de tweede keuzelijst op geboortedatums wilt zoeken. En in je tekst heb je het over het veld LLID, en wil je zoeken op LLID codes. Ergo: de eerste zoeklijst bepaalt welk veld je wilt gebruiken in de tweede. Dat kan uiteraard wel, alleen zul je dan met VBA moeten gaan werken, omdat de tweede keuzelijst steeds andere velden gaat krijgen. Al neem ik aan dat je een aantal vaste gegevens wilt zien.
Dus als ik (nog steeds) gelijk heb, dan moet je twee dingen doen:
1. de eerste keuzelijst baseren op de tabel (of query) met de velden die je wilt laten zoeken (type rijbron: [Lijst met velden])
2. met het geselecteerde veld moet je bij de gebeurtenis <Bij klikken> een SQL string maken met dat veld, en de overige velden.
3. De SQL string uit stap 2 moet je in dezelfde procedure toewijzen als Rijbron voor de tweede keuzelijst
4. De procedure sluit je af met een Requery op de tweede keuzelijst
En dan moet hij werken.
En doe ons een lol: niet meer quooten, want dat is nergens voor nodig :)
 
Beste Octafish,

En ik maar denken dat het duidelijk was zo.

Wellicht is dit de reden dat ik het antwoord ook niet gevonden kreeg op het web, ik ga met jouw aanwijzingen verder duiken in de diverse tutorials voor het maken van de juiste code.
Ik hoop dat ik eraan uit ga komen.

bedankt voor de eerste aanzet!

ps, zal niet meer quoten. kwestie van het verkeerde knopje.
 
Mocht je er niet uitkomen: een voorbeeld bestandje doet wonderen :)
 
Beste Michel,

Ik ben me suf aan het testen, maar krijg niet eens die lijst met de rijbron voor elkaar.

damn, het ging allemaal zo lekker???

Nu wilde ik mijn database uploaden, maar deze is 1,9 mb beetje overdreven leek mij. wat is de beste methode om een stukje hier te krijgen, want alleen de twee tabellen waarover het gaat en het formulier in een aparte database lijkt me ook niet handig i.v.m. relaties t.a.v. andere tabellen??

geprobeerd een .rar te uploaden maar er komt een uitroepteken tevoorschijn, maar kan niet herleiden waarom?? .rar bestand is 168kb
 
Laatst bewerkt:
Je mag bestanden uploaden van 100kb, dus die van jou is nog te groot. Heb je de db eerst gecomprimeerd? Dat scheelt ook een heel stuk. En met Winrar kun je deelbestanden maken van 100kb, en die kun je dan wel uploaden. Verder zou je nog records kunnen verwijderen (+ comprimeren) om de db te verkleinen. Laatste alternatief: zet de db op mijnbestand.nl. Dan hoef je al die trucs niet uit te halen, en kun je het originele bestand uploaden.
 
OK, en nu nog één keer voor de zekerheid, want je keuzelijsten zijn nog maagdelijk leeg: wat is nu de bedoeling? Dat de eerste keuzelijst de beschikbare velden laat zien, en dat je op basis daarvan de tweede keuzelijst vult met de in de eerste keuzelijst aangegeven gegevens? Dus kies je in de eerste keuzelijst eerst een veld, zoals in bijgaande afbeelding.
 

Bijlagen

  • Lijst 1.png
    Lijst 1.png
    7,5 KB · Weergaven: 36
Beste Michel,

klopt, ik probeerde het met de qry voor elkaar te krijgen, die staat er nog wel. Die bevat de velden die ik zichtbaar wil hebben in eerste veld, en dan de waardes daarvan in de tweede lijst.

ik had alles weer verwijderd, op de qry na.

ben benieuwd, of ik het kan volgen straks, zodat ik hetzelfde trucje kan doen met inschrijvingen, kies seizoen, en daarna de clubs in dat seizoen.

alvast bedankt voor de hulp
 
De eerste keuzelijst is heel simpel; die heeft als Type Rijbron <Lijst met velden> en hij is gebaseerd op de tabel [tblLeerLing]. Echt heel simpel te maken, en daar hoef je ook niks voor te programmeren. Of een rare query voor te gebruiken.
Voor de tweede keuzelijst heb je geen query, want die maak je a.d.h.v. het veld dat is gekozen. En daarvoor moet je dus programmeren. Een voorbeeldje:
Code:
Option Compare Database
Const strVelden = "LLID; LLNummer; Voornaam; Achternaam; Geboortedatum; Woonplaats"
Initialisatiestring voor de eerste keuzelijst.
Code:
Private Sub Form_Current()
    With Me.cboFindLL_Input
        .RowSourceType = "Value List"
        .RowSource = strVelden
    End With
End Sub
Deze code vult de eerste keuzelijst met een selectie van zinvolle velden. Mijn eerdere oplossing laat alle velden uit de tabel zien, en dat werkt an sich wel, maar levert een lijst op met minder zinvolle keuzes. Die kun je op deze manier elimineren. Gebruik je deze oplossing, dan moet je de eerste keuzelijst niet koppelen, en zeker niet aan een tabel of een andere rijbron. Die moet dus leeg zijn.
Code:
Private Sub cboFindLL_Input_Click()
Dim arrVelden
Dim strSQL As String, RestVelden As String
Dim i As Integer

    arrVelden = Split(strVelden, ";")
    strSQL = "SELECT " & arrVelden(LBound(arrVelden))
    For i = LBound(arrVelden) + 1 To UBound(arrVelden)
        If Trim(arrVelden(i)) = Me.cboFindLL_Input Then
            strSQL = strSQL & ", " & Trim(arrVelden(i))
        Else
            RestVelden = RestVelden & ", " & Trim(arrVelden(i))
        End If
    Next i
    strSQL = strSQL & RestVelden & " FROM tblLeerLing ORDER BY " & Me.cboFindLL_Input
    Me.cboFindLL_Records_Input.RowSource = strSQL
    Me.cboFindLL_Records_Input.Requery
End Sub
En in de laatste code wordt de keuzelijst opgebouwd waarmee je het formulier kunt filteren. Omdat de gekozen waarde uit de eerste lijst als eerste moet verschijnen, wordt die gelijk in de SQL gezet. De rest gaat naar een variabele. Als laatste worden de restvelden aan de query toegevoegd.
De code kun je letterlijk in het VBA venster van je formulier plakken, en moet dan gelijk werken; ik heb niks veranderd aan je formulier.
 
Laatst bewerkt:
De eerste keuzelijst is heel simpel; die heeft als Type Rijbron <Lijst met velden> en hij is gebaseerd op de tabel [tblLeerLing]. Echt heel simpel te maken, en daar hoef je ook niks voor te programmeren. Of een rare query voor te gebruiken.

Beste Michel,

Bovenstaande is niet helemaal correct omdat ik moet putten uit twee tabellen, daarom had ik de qry gemaakt (althans dat dacht ik zo te bereiken).

Uit de tabel [tblLeerlingIBAN] wil ik ook het veld [LLIBAN].


Sorry dat ik nu een quote gebruik, maar nu leek het mij zinvol!

Alvast bedankt voor je snelle reactie en zo op het eerste gezicht duidelijke uitleg. Hier kan ik namelijk van leren, ipv alleen maar dankjewel en verder.

Ben nu al benieuwd of ik het kan vertalen naar de andere cbo binnen mijn inschrijf cyclus.... later op.


************************
Heb de eerste code draaien, als ik in formulierweergave kijk, komt er onder mijn lijstje geselecteerde velden een vaak {blokje} een bewerkingsveld, ik heb na het aanklikken, het veld LLIBAN toegevoegd in een nieuwe regel en de standaardwaarde aangepast aan LLID.

Volgens mij is bovenstaande daarmee getackeld nu!
************************

helaas,

Ik heb de eerste lijst voor elkaar (althans) met gegevens uit tabel [tblLeerling] het bijvoege zoals boven geschreven is niet gelukt? na het draaien van de code in formulier weergave gooide hij de extra toevoeging weg!

Maar ik krijg geen gegevens in mijn tweede lijst te zien?

Hier even zoals nu de code in [VBA] staat

Code:
Option Compare Database
Const strVelden = "LLID; LLNummer; Voornaam; Achternaam; Geboortedatum; Woonplaats"
Private Sub Form_Current()
    With Me.cboFindLL_Input
        .RowSourceType = "Value List"
        .RowSource = strVelden
    End With
End Sub
Private Sub cbo_FindLL_Input_Click()

End Sub

Private Sub cboFindLL_Input_Click()
Dim arrVelden
Dim strSQL As String, RestVelden As String
Dim i As Integer

    arrVelden = Split(strVelden, ";")
    strSQL = "SELECT " & arrVelden(LBound(arrVelden))
    For i = LBound(arrVelden) + 1 To UBound(arrVelden)
        If Trim(arrVelden(i)) = Me.cboFindLL_Input Then
            strSQL = strSQL & ", " & Trim(arrVelden(i))
        Else
            RestVelden = RestVelden & ", " & Trim(arrVelden(i))
        End If
    Next i
    strSQL = strSQL & RestVelden & " FROM tblLeerLing ORDER BY " & Me.cboFindLL_Input
    Me.cboFindLL_Records_Input.RowSource = strSQL
    Me.cboFindLL_Records_Input.Requery
End Sub

Private Sub LLFoto_New_Click()

End Sub

Public Function NewFoto()

End Function

broncode.jpg
 
Laatst bewerkt:
In dit geval is de quoot inderdaad een citaat, en mag het uiteraard. Jammer dat dan de eindtag weer niet correct is :) Daar moet nog [/ voor getypt worden!
Overigens niet geheel terecht citaat, want Access maakt functioneel geen verschil tussen een query of een tabel. Je kunt dus ook één query gebruiken als rijbron voor de keuzelijst. En dat in die query dan 1 of 31 tabellen zit(ten), maakt dan niet uit. Ergo: mijn oplossing is wel degelijk correct.
Ik snap overigens de tabel [tblLeerlingIBAN] niet; hoe denk je die te koppelen aan [tblLeerLing]? Beide tabellen hebben een veld [LLID], en beide velden zijn Autonummering. Ze zijn dus nooit aan elkaar te koppelen.
 
In dit geval is de quoot inderdaad een citaat, en mag het uiteraard. Jammer dat dan de eindtag weer niet correct is :) Daar moet nog [/ voor getypt worden!

Dat krijg je als je al een veel te lange tijd niet op forums bezig bent geweest.

Access maakt functioneel geen verschil tussen een query of een tabel. Je kunt dus ook één query gebruiken als rijbron voor de keuzelijst. En dat in die query dan 1 of 31 tabellen zit(ten), maakt dan niet uit.

Betekend dit dat ik dan een qry moet gebruiken om uit meerdere tabellen te putten? Ik snap hem niet helemaal namelijk. of kan ik die tabel in de broncode erbij voegen?

mijn oplossing is wel degelijk correct.

Daar ga ik ook geheel vanuit beste Michel, maar ik kan maar niet ontdekken waarom de tweede keuzelijst leeg blijft?? Heb je een vermoeden waar ik de mist in ben gegaan??

Ik snap overigens de tabel [tblLeerlingIBAN] niet; hoe denk je die te koppelen aan [tblLeerLing]? Beide tabellen hebben een veld [LLID], en beide velden zijn Autonummering. Ze zijn dus nooit aan elkaar te koppelen.

Ik put mijn info uit het ontleden van andere database-jes, Ik kwam er zelf ook niet echt uit met die dubbele waardes, maar ik zag dat het in een andere database wel werkend was en ben ik daarop gaan verder zoeken. Ik heb in mijn voorbeeld database verschillende tabellen met daarin twee relatie sleutel zichtbaar, na een hoop google werk, kwam ik erachter dat dit wel mogelijk is maar....... En toen hield de begrijpende info weer even op.

Ik wil graag dat de bankgegevens in een aparte tabel staan dus dacht ik dat op deze manier opgelost te hebben. Is het dan de bedoeling dat ik het veld [LLID] in de tabel [tblLLIBAN] op numeriek zet, en dat deze automatisch de juiste gegevens krijgt door de relatie die ik leg d.m.v. van een [één op veel] relatie tussen het veld [LLID] in tabel [tblLeerling] die als primaire sleutel dient?

Ik ben nog erg LEEK merk ik op het gebied van Access, maar ben leergierig en een doorzetter. Dus deze ledenadministratie zal gaan werken. :o

Alvast weer bedankt voor het meedenken/kijken.
 
Laatst bewerkt:
Beste Michel,

Na een hoop peuzelen en lezen, kwam ik erachter dat bij mijn tweede cbo veld de rij bron keuze niet op [tabel/query] stond. Toen ik dit veranderd heb, kreeg ik de lijst met nummers, dus ja ik ben weer verder op weg.

Nu rest mij de volgende vraag.


Als ik de keuze zet in de 1ste cbo op [LLID] dan zie ik de nummers van mijn leerlingen netjes in volgorde van 1 naar 30. :thumb: Maar wanneer ik de keuze zet op achternaam, zie ik nog steeds dezelfde nummers alleen allemaal door elkaar. :confused:
Nu denk ik dat de namen "zichtbaar" zijn op een oplopende volgorde, maar dat hij alleen maar de weergave doet doormiddel van de [LLID] nummers.

De bedoeling is dat wanneer ik de selectie achternaam selecteer ik een lijst krijg met alle achternamen in mijn database, Met het liefst een voornaam erachteraan [achternaam,voornaam] Omdat ik ongetwijfeld meerdere Janssens op les ga krijgen.

dit zelfde dan voor de email adressen enz.

tweede vraagje is, wat voor actie moet ik geven om de gekozen waarde in de tweede cbo ook zichtbaar te krijgen op mijn formulier eronder. De hele selectie optie die we nu maken is ervoor te zorgen dat ik straks makkelijk een leerling kan vinden en kan aanpassen in onderstaande formulier.?
 
Als je mijn voorbeeld correct over hebt genomen,moet de tweede keuzelijst zich aanpassen aan het veld uit de eerste. Je ziet dus steeds andere velden, en het eerste veld is degene waarop gesorteerd wordt. Dus kies je voornaam, dan staan ze op voornaam gesorteerd.
 
Beste Michel,

Kom nog even terug op deze post.

Kun jij eens kijken wat ik verkeerd heb gedaan in mijn formulier. Nu staat het zeker fout denk ik. Kom er even niet meer aan uit.

De velden vullen zich niet zoals jij het gemaakt hebt. en ik ben aan het proberen gegaan met weinig succes..?



Ik heb de database even zo toegevoegd was makkelijker voor mij. Alvast bedankt!
 
Laatst bewerkt:
De code doet het an sich wel, maar je tweede keuzelijst staat niet goed ingesteld. Die laat nu maar één kolom zien, (<Aantal kolommen> staat op 1) en dan kun je andere velden kiezen tot je een ons weegt, je zult nooit iets anders zien als het eerste (sleutel)veld. Dus dat moet je in ieder geval aanpassen naar 2 of meer. Verder moet de breedte van de eerste kolom 0 zijn, zodat je de waarde van het gekozen veld terugziet in de keuzelijst. Je krijgt dan bij <Kolombreedte> iets als: 0cm;5cm. En dan werkt het systeem.
 
Het werkt, hoe stom kan je zijn. hmmmmmmm.

Heb nu ook de staandaard waarde ingesteld op eerste record en dan krijg ik ook gelijk mijn eerste zoek resultaat te zien, Nu wil ik alleen nog dat wanneer ik iemand gevonden heb deze zichtbaar wordt in het formulier, want tenslotte is daar de zoek funstie voor.

is dat na bewerking actie??
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan