Keuzelijst met invoervak

Status
Niet open voor verdere reacties.

tclaesse

Gebruiker
Lid geworden
8 jan 2004
Berichten
240
Hallo,

Ik ben net begonnen aan een database waarin ik binnen m'n formulier een keuzelijst met invoervak heb gemaakt. Hierbij selecteer ik een 'bestuur' en hierdoor verschijnt automatisch de 'postcode' en de 'provincie'.

Nu heb ik wel gemerkt dat, wanneer ik voor de eerste keer een bestuur ingeef, dit nooit automatisch verschijnt en dit steeds dus moet aanklikken in de keuzelijst. Wanneer ik hetzelfde bestuur een tweede maal intyp (bijvoorbeeld 'aar' voor 'aarschot') kom ik automatisch bij Aarschot uit (omdat dit reeds van tevoren werd aangeklikt in de keuzelijst).


http://www.mijnbestand.nl/Bestand-B3ZRENXWGAFE.accdb
 
Ik wou gewoon weten of bij de input van de gegevens > bijvoorbeeld 'Lon' ik niet automatisch bij 'Londerzeel' als bestuur terecht kom.
Ik dien het de eerste keer dus steeds te selecteren bij een keuzelijst met invoervak? Zonder invoervak kom ik namelijk altijd automatisch bij 'Londerzeel' uit.
 
Ik snap je vraag ook niet, maar geef eens aan in welk formulier dit verschijnsel zit?
 
Binnen het formulier openingsvenster bovenaan bij 'input besturen' werden er al bijvoorbeeld bij het bestuur Aarschot tevoren gegevens ingevoerd.
Dus bij het invullen van 'aarsc' kom ik al automatisch bij het gewenste bestuur in m'n keuzelijst aan.
Wanneer ik nu een ander nieuw bestuur inbreng waar ik tevoren nog geen gegevens in m'n formulier had dan dien ik telkens via keuzelijst dit bestuur eerst te selecteren.

M'n vraag is dan ook : kan ik niet automatisch naar het gewenste bestuur gaan? Bijvoorbeeld : input 'Lon' dan zou ik automatisch bij Londerzeel moeten komen.
Dit gebeurt momenteel nog niet omdat er dus nog geen gegevens instaan.
 
ik snap nog niet , maar je gewoon ook iets in type bij de keuzelijst en je zal zien dat wat je ook type hij daarbij een woord zoekt die overeenkomt met de aangevoerde letters.
dus bv ik type lon en word londezeel .
hoe meer letters hoe dichter hij in de buurt komt van wat jij zoekt.
 
Laatst bewerkt:
Dat weet ik maar eigenlijk zou het de bedoeling moeten zijn dat ik via de knop 'input besturen' en dan bij 'bestuur' ik LON intyp en direct op m'n formulier bij LONDERZEEL zou terechtkomen.
 
Ik vind dat je een uiterst ongelukkige constructie hebt bedacht om het formulier <Frm_Erediensten> te openen. Ik zou dat althans never nooit doen met een parameter in de onderliggende query. Want je komt nooit meer van de parametervraag af. Als je al zo nodig een gemeente wilt kunnen kiezen bij het starten van het formulier, zet dan een keuzelijst met de beschikbare namen (die je uiteraard uit de tabel [Erediensten] haalt) op het formulier <Frm Openingsvenster> i.p.v. de knop <Input besturen> en hang het openen van het formulier dan aan de gebeurtenis <Bij klikken> van die keuzelijst. Je voorkomt daarmee dat je iets intypt dat niet bestaat (kan nu makkelijk) en je keuzelijst zoekt netjes op naam, dus intypen van de eerste letters is ruim voldoende om naar de gewenste waarde te springen. het gekozen record selecteer je dan door de waarde mee te geven in de OpenArgs parameter, die je op <Frm_Erediensten> weer uitleest.

Op die manier hou je de recordbron schoon, en het formulier schoon. Extra voordeel: als een waarde niet bestaat (je vindt dus niks in de keuzelijst) dan kun je het formulier openen in de Toevoegmodus, waarbij je de ingetypte waarde als nieuwe waarde gebruikt, en het formulier verder kunt invullen.
 
Octafish, ik heb ondertussen een keuzelijst met invoervak van de verschillende gemeenten op m'n openingsvenster geplaatst. Ik heb deze echter wel gehaald uit m'n bestaande tabel 'besturen' en evenwel niet uit de tabel 'erediensten'.

De gebeurtenis 'bij klikken' was ook geen probleem maar met die OpenArg zit ik voorlopig nog vast. Dien ik misschien in VBA hiervoor de code ergens aan te passen waarin wordt verwezen naar m'n Frm_erediensten? Kan u me hierbij misschien effe op weg zetten want begrijp niet helemaal wat je bedoelt met
het gekozen record selecteer je dan door de waarde mee te geven in de OpenArgs parameter, die je op <Frm_Erediensten> weer uitleest.
Toch alvast bedankt!
 
Nog even een kleine rechtzetting : ik heb m'n gemeenten gehaald uit de tabel 'locatie' en niet 'besturen' zoals hierboven beschreven.
 
Als je mij kunt uitleggen wat het verschil is tussen de tabellen [Locatie] en [Besturen], dan graag :). Ik zie in [Locatie] slechts een extra veld ([Provincie]). Verder hebben beide tabellen 65 records met dezelfde plaatsnamen. Lijkt mij een klassiek geval van dataredundantie! Oh ja: ze hebben andere ID's om het makkelijk te maken ;)
Je hebt overigens nog wel wat werk voor de boeg, want de tabel [Erediensten] mist nog een veld. Je hebt nu alleen een veld [Bestuur] in die tabel (tekstveld) en dat moet er uit; je moet dat vervangen door een numeriek veld [BestuurID] zodat je de tabel [Locatie] kunt koppelen aan [Eredienst]. Nu kan dat niet.
Vervolgens kun je het formulier openen met de gekozen waarde uit het startformulier. De code die je gebruikt op de keuzelijst is dan:
Code:
Private Sub cboBestuur_Click()
    DoCmd.OpenForm "Frm_Erediensten", OpenArgs:=Me.cboBestuur.Value
End Sub
En op het formulier gebruik je deze code:
Code:
Private Sub Form_Load()
    If Not Me.OpenArgs = "" Then
        Me.Filter = "[BestuurID] = " & Me.OpenArgs
        Me.FilterOn = True
    Else
        Me.Filter = ""
        Me.FilterOn = False
    End If
End Sub
En dat is voldoende. Nu open je het formulier <Eredienst> met de waarde uit de keuzelijst gefilterd. En als je het formulier rechtstreeks opent, is er geen OpenArgs, en zie je gewoon alle records. Dus daar kun je de normale knop voor blijven gebruiken.
 
Michel,
Ondertussen heb ik m’n frm_openingsvenster voor een stuk aangepast zoals in de voorbije berichten werd voorgesteld. Dit wil zeggen dat ik de parametervraag verwijderd heb en een keuzelijst met de beschikbare gemeenten heb gemaakt. Automatisch verschijnt zowel de postcode als de provincie ernaast. Er is ook de relatie tussen de tabellen ‘erediensten’ en ‘locatie’.

Bij het tweede formulier (frm_Erediensten) loopt het echter nog altijd fout omdat ik het geselecteerde bestuur vanuit m’n openingsvenster erop niet kan terugvinden. Normaalgezien zou ik na het selecteren in het openingsvenster direct bij het formulier erediensten moeten komen. Of dien ik toch nog steeds gebruik te maken van de knop ‘input’? Dit is me nog niet volledig duidelijk.

Hoewel ik momenteel nog maar weinig ervaring heb in VBA heb ik getracht om de beschikbare code op de keuzelijst in het frm_openingsvenster en frm_erediensten aan te passen. Het formulier frm_erediensten heb ik gemaakt uit de qry_Erediensten omdat er zowel velden uit de tabellen ‘erediensten’ als ‘locatie’ zijn.
Zou het mogelijk zijn om de codes uit VBA eens te bekijken en/of eventueel waar nodig aan te passen?
Alvast bedankt!

http://www.mijnbestand.nl/Bestand-JAC6ECJRILDV.laccdb
 
Je gebruikt een macro die niks anders doet dan het formulier <Erediensten> openen. Dus dat schiet niet op. Je moet echt met VBA gaan werken, en (bij voorkeur) nooit meer een macro aanraken ;). Verder heb je nu wel de tabellen goed aan elkaar gekoppeld, maar je keuzelijst (die je vreemd genoeg lstBestuur hebt genoemd, terwijl je een combobox gebruikt en geen listbox en waardoor de code ook niet werkt) gebruikt het ID veld niet, en dat heb je nodig in het formulier Erediensten.
 
Zou het mogelijk zijn om binnen m'n database de VBA-codes aan te passen? Dan kan ik me er eens grondig op toeleggen
wanneer ik het in de toekomst zelf nodig heb. Ook mede het verschil tussen listbox en combobox want ik dacht dat ik in m'n openingsvenster
bij de keuzelijst toch moest gebruik maken van 'lstbestuur'?
 
Een Keuzelijst met Invoervak heet in het Engels een Combobox, en meestal noem je die dan cbo+Naam. Een gewone keuzelijst heet een Listbox, en die krijgt vaak de naam lst+Naam. In mijn voorbeeldcode ging ik uit van de naam cboBestuur, maar omdat jij hem lstBestuur had genoemd, werkt hij natuurlijk niet :)
 
Ik heb het ondertussen aangepast aan cboBestuur en nu krijg ik een popupvenster waarin het bestuur verschijnt als parameterwaarde. Verder is er binnen m'n vba code 'Me.Filteron = True' geelgekleurd
 
Je gebruikt nog steeds het veld [Bestuur] als afhankelijke kolom, niet BestuurID. En dat moet wel. Ik zou dat veld dus vooraan zetten:
Code:
SELECT BestuurID, Bestuur, Postcode, Provincie FROM Qry_Locatie ORDER BY Bestuur;
en dan de keuzelijst opmaken met deze Kolombreedten: 0cm;5cm;1cm;3cm. De Lijstbreedte wordt dan 9,7 cm
 
Ik blijf problemen ondervinden met de link naar m'n tweede formulier (frm_Erediensten)
Bij het selecteren van een bestuur verschijnt telkens het ID-nummer bovenaan. Er is dus duidelijk nog iets mis met het veld BestuurID
(numeriek in tabel Erediensten en autonummering in tabel locatie).
Nochtans dacht ik ook dat m'n tabellen goed verbonden waren.


http://www.mijnbestand.nl/Bestand-RDWJSFXHMIRJ.accdb
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan