Vraag & Antwoord

Programmeren

gegevens selecteren mbv dropdownlistbox (access97)

25 antwoorden
  • als bij-opdracht binnen mijn stage ben ik bezig met een probleem- en actieregister binnen MS Access (97) nu wil ik, als er in het drop-down menu het onderwerp van een probleem wordt ingevoerd, ik een overzicht krijg van alle problemen met dat onderwerp. ik heb dus een formulier met een keuzelijst/dropdownlistbox, en wil de gegevens ophalen in een subformulier ik zat eerst te denken aan een simpele sql query, maar heb geen idee hoe ik dan de gegevens in mijn formulier geladen moet krijgen. voor zover ik weet kun je niet simpelweg zeggen: [code:1:5b4ff51a8b]dim onderwerp as string onderwerp=(docmd.runsql (selectiequery)) [/code:1:5b4ff51a8b] is er een andere manier om de koppeling tussen dropdownlistbox en subformulier te maken, of een manier om het resultaat van een sqlselect in een variabele te plaatsen? alvast bedankt
  • ik heb het ondertussen op een iets andere manier dan ik eerst dacht, toch met een sql query geprobeerd, deze is als recordbron aan het subformulier gekoppeld, maar ook dit lukt niet [code:1:f2e8385fa8]SELECT DISTINCTROW tbl_probleem.Directeuren, tbl_probleem.Bedrijfsmanagement, tbl_probleem.Bedrijven, tbl_probleem.[Private Banking], tbl_probleem.[Clienten Advies], tbl_probleem.Prioriteit, tbl_probleem.Onderwerp, tbl_probleem.Herkomst, tbl_probleem.Verantwoordelijke, tbl_probleem.[Datum ontstaan], tbl_probleem.Deadline, tbl_probleem.Gereed, tbl_probleem.[Datum gereed] FROM tbl_probleem WHERE (((tbl_probleem.Onderwerp)=[Formulieren]![frm_select_onderwerp]![txt_onderwerp])); [/code:1:f2e8385fa8]
  • [quote:552938ea88="gijskerstens"]ik heb het ondertussen op een iets andere manier dan ik eerst dacht, toch met een sql query geprobeerd, deze is als recordbron aan het subformulier gekoppeld, maar ook dit lukt niet [code:1:552938ea88]SELECT DISTINCTROW tbl_probleem.Directeuren, tbl_probleem.Bedrijfsmanagement, tbl_probleem.Bedrijven, tbl_probleem.[Private Banking], tbl_probleem.[Clienten Advies], tbl_probleem.Prioriteit, tbl_probleem.Onderwerp, tbl_probleem.Herkomst, tbl_probleem.Verantwoordelijke, tbl_probleem.[Datum ontstaan], tbl_probleem.Deadline, tbl_probleem.Gereed, tbl_probleem.[Datum gereed] FROM tbl_probleem WHERE (((tbl_probleem.Onderwerp)=[Formulieren]![frm_select_onderwerp]![txt_onderwerp])); [/code:1:552938ea88][/quote:552938ea88] Dit zou moeten werken. Ben er zelf ook bezig toevallig. Wat gaat er precies fout? Krijg je een foutmelding? Deze vba-code werkt voor mij prima (Access 2000) [code:1:552938ea88] Sub <dropdownlistnaam>_Click() <subformnaam>.Form.Recordsource = <sql-query> <subformnaam>.Requery End Sub [/code:1:552938ea88] Werkt de query trouwens wel als je hem gewoon uitvoert?
  • ik was dus domweg vergeten wat voor code dan ook onder de dropdown te gooien, en wist ook niet precies wat voor code dat dan had moeten zijn (ben pas krap 2 weken terug met access en VBA begonnen te werken, had daarvoor alleen wat ervaring met SQL en powerscript (sybase powerbuilder, etc)). het werkt nu iig, bedankt! het zou me nu moeten lukken om dit formulier met deze code te gebruiken als basis voor een paar andere selectieformulieren :D
  • correctie - hij werkt half hij haalt van 1 onderwerp - degene die in het begin meteen geselecteerd is - de gegevens op, maar selecteer ik een ander onderwerp in de dropdown, dan geeft hij 1 enkel record met als enige waarde dat onderwerp in het subformulier, ipv alle gevraagde informatie op te halen. op een of andere manier haalt het subformlier dus alleen de gegevens op van het eerst geselecteerde onderwerp iemand enig idee waar dit aan ligt?
  • aanvulling: als ik met de navigatieknoppen naar het volgende record van het hoofdformulier spring, pakt de dropdown automatisch het volgende onderwerp in de lijst, en geeft het subformulier wel de complete gegevens. het lijkt er dus op dat de code onder de dropdown niet (goed) werkt
  • [quote:5a969341ea="gijskerstens"]aanvulling: als ik met de navigatieknoppen naar het volgende record van het hoofdformulier spring, pakt de dropdown automatisch het volgende onderwerp in de lijst, en geeft het subformulier wel de complete gegevens. het lijkt er dus op dat de code onder de dropdown niet (goed) werkt[/quote:5a969341ea] Probeer het volgende eens: Maak een formulier, met alleen de combobox. Koppel dit formulier NIET aan een tabel. Zet dit in het Form_Load event [code:1:5a969341ea] Me.txtOnderwerp.Recordsource = "SELECT DISTINCT Onderwerp FROM tblProbleem" [/code:1:5a969341ea] Sleep het subformulier op dit (lege) formulier, en hang je uitgebreide query aan je combobox. Dan zou het wel moeten werken.
  • ok, zal het maandag eens proberen (heb thuis niet de beschikking over de db) alvast bedankt
  • ik heb nu het volgende gedaan: - nieuw formulier gemaakt, zonder aan tabel te koppelen, hierin dropdown gezet. - Subformulier naar dit formulier toegesleept. onder het (hoofd)formulier zit de volgende code: [code:1:962bb1c057] Sub Form_Load() Me.txt_onderwerp.RecordSource = "SELECT DISTINCT Onderwerp FROM tbl_Probleem" End Sub [/code:1:962bb1c057] hierbij krijg ik een error: [quote:962bb1c057] compileerfout: kan de methode of het gegevenslid niet vinden[/quote:962bb1c057] Hierbij word .recordsource geselecteerd [code:1:962bb1c057] Sub txt_onderwerp_Click() [frm_select_onderwerp subformulier].Form.RecordSource = qry_select_onderwerp [frm_select_onderwerp subformulier].Requery End Sub[/code:1:962bb1c057]
  • na het form_load event verwijderd te hebben, en de rijbron van de dropdown te hebben ingesteld op lijst met waarden, en de waarden simpelweg handmatig te hebben ingevoerd, werkt het bijna: de dropdown reageerd niet op het aanklikken van een waarde uit de lijst, maar als ik dmv het scrollen met muiswiel een andere waarde selecteer, haalt hij de gewenste gegevens op kortom, het begint er op te lijken :D als meneer_ed, of iemand anders, voor dit laatste probleem nog een oplossing heeft, zou ik zeer dankbaar zijn, en behoorlijk geholpen zijn!
  • [quote:bffd488d53="gijskerstens"]als meneer_ed, of iemand anders, voor dit laatste probleem nog een oplossing heeft, zou ik zeer dankbaar zijn, en behoorlijk geholpen zijn![/quote:bffd488d53] Ik ga nog een poging wagen :wink: Maak de volgende query: [code:1:bffd488d53]SELECT DISTINCT Onderwerp FROM tblOnderwerp[/code:1:bffd488d53] en sla deze op, bijvoorbeeld als "qryOnderwerpen". Koppel deze query in de eigenschappen aan de dropdown, bij "Row source", en selecteer bij "Row source type" "Table/Query". Zet de code [code:1:bffd488d53] [frm_select_onderwerp subformulier].Form.RecordSource = qry_select_onderwerp [frm_select_onderwerp subformulier].Requery [/code:1:bffd488d53] dan niet in het Click-event, maar in het Change-event van de dropdown. [code:1:bffd488d53] Sub txt_onderwerp_Change() [frm_select_onderwerp subformulier].Form.RecordSource = qry_select_onderwerp [frm_select_onderwerp subformulier].Requery End Sub [/code:1:bffd488d53] En probeer dat dan eens.
  • neem aan dat je bedoelt: SELECT DISTINCT Onderwerp FROM [b:faf1eefc0e]tbl_probleem[/b:faf1eefc0e]?
  • [quote:13b9ec337c="gijskerstens"]neem aan dat je bedoelt: SELECT DISTINCT Onderwerp FROM [b:13b9ec337c]tbl_probleem[/b:13b9ec337c]?[/quote:13b9ec337c]Als je tabel zo heet :wink:. Was even snel aan het typen...
  • nog steeds zelfde probleem: de dropdown reageerd totaal niet op muisklik, wel op scrol. ik kan, net als hiervoor, niet eens een waarde uit de dropdown selecteren met muisklik - hij reageert er totaal niet op. update: als ik de muis ingedrukt houd, geeft hij in de statusbalk "this recordset is not updateable"
  • Laatste poging, dan weet ik het ook niet meer :o Ik kan je probleem repliceren door in het formulierontwerp een koppeling te maken tussen het hoofdformulier en het subformulier. Die koppeling moet er dus uit. Probeer het volgende nog eens: - laat alles wat met je dropdown te maken heeft staan, ook de vba code - open het hoofdformulier in ontwerpmodus - selecteer het subformulier, zodat in de eigenschappen de eigenschappen van het subformulier getoond worden (klik hiervoor op de rand van het subformulier) - als het goed is, kun je nu bij het tabblad Data een link opgeven tussen hoofd- en subformulier. Verwijder deze. Als je deze keuze niet hebt, moet je nogmaals proberen het subformulier goed te selecteren. - selecteer het hoofdformulier via het blokje linksboven, zodat de eigenschappen van het formulier zelf getoond worden. - Verwijder alle "Data" gegevens zoals "Record source" Open het hoofdformulier. Als het goed is, heb je [b:202cd182d0]GEEN[/b:202cd182d0] navigatieknoppen in je hoofdformulier. En wel gegevens in je dropdown. Probeer het dan nog eens. En als dat niet werkt, dan weet ik het ook niet meer :roll:
  • daar access de code in het form_load event niet accepteert, doet het formulier helemaal niets als ik de recordsource uit het hoofdformulier verwijder. zou het een idee zijn als ik de db even zip, en naar je toe mail, zodat je kan kijken of er toch ergens iets fout zit, dat een van ons over het hoofd gezien heeft? (mits je hiertoe bereid bent, natuurlijk, zo niet, jammer maar helaas, dan moet ik ergens anders hulp zien te vinden)
  • na wat rondsnuffelen in de help van access gevonden waarom het form_load event niet werd geaccepteerd: [code:1:f4545b6696] Me.txtOnderwerp.Recordsource = "SELECT DISTINCT Onderwerp FROM tblProbleem" [/code:1:f4545b6696] moest zijn [code:1:f4545b6696] Me!txtOnderwerp.Recordsource = "SELECT DISTINCT Onderwerp FROM tblProbleem" [/code:1:f4545b6696] (me! ipv me.) helaas maakt dit geen enkel verschil - het subformulier haalt totaal geen gegevens op [b:f4545b6696]update:[/b:f4545b6696] ik denk dat het probleem zit in de besturingselementbron van het dropdown - deze stond op "onderwerp" maar dit herkent hij niet meer sinds ik de recordsource-instelling van het formulier heb verwijderd. In de statusbalk krijg ik dan ook de melding: "waarde afhankelijk van onbekend veld onderwerp. Het besturingselement kan niet worden bewerkt" n.b. de door jou genoemde koppeling (ik neem aan dat je bedoelt hoofdveld koppelen / subveld koppelen) was al blanco
  • [quote:d5cf8644e2="gijskerstens"]daar access de code in het form_load event niet accepteert, doet het formulier helemaal niets als ik de recordsource uit het hoofdformulier verwijder. zou het een idee zijn als ik de db even zip, en naar je toe mail, zodat je kan kijken of er toch ergens iets fout zit, dat een van ons over het hoofd gezien heeft? (mits je hiertoe bereid bent, natuurlijk, zo niet, jammer maar helaas, dan moet ik ergens anders hulp zien te vinden)[/quote:d5cf8644e2] Doe maar, ik stuur je wel een pb met mijn mail adres.
  • Gijs Ik heb de oorzaak van het probleem gevonden. Het zat in een paar dingen. Eerst maar eens de ontwerpkant van het verhaal. - de combobox txt_onderwerp moet in de Data-tab van de eigenschappen de volgende waarde hebben: o Control Source/besturingselementbron: moet leeg zijn o Row Source Type: Table/Query o Row Source: qry_onderwerp - het subformulier heet op je hoofdformulier: "Subformulier tbl_probleem", deze naam moet je gebruiken in je VBA-code. Daar kom ik zo op terug - het onderliggende formulier "frm_select_onderwerp Subformulier" (te selecteren via het blokje) mag geen Record Source hebben; deze wordt in de VBA-code toegekend - de query qry_onderwerp_select is niet goed. Daar moet je een Parameter-query van maken om hem te laten werken. Maar in dit geval kun je deze query achterwege laten. Dan de VBA-kant: - in het Form_Load event kun je de volgende code weer plaatsen: [code:1:be1a5f9803] Sub Form_Load() Me!txt_Onderwerp.RowSource = "SELECT DISTINCT Onderwerp FROM tbl_Probleem" End Sub [/code:1:be1a5f9803] - in het txt_onderwerp_Change event kun je deze code plaatsen: [code:1:be1a5f9803] Private Sub txt_onderwerp_Change() Subformulier_tbl_probleem.Form.RecordSource = "SELECT tbl_probleem.Directeuren, " & _ "tbl_probleem.Bedrijfsmanagement, tbl_probleem.Bedrijven, " & _ "tbl_probleem.[Private Banking], tbl_probleem.[Clienten Advies], " & _ "tbl_probleem.Prioriteit, tbl_probleem.Onderwerp, tbl_probleem.Herkomst, " & _ "tbl_probleem.Verantwoordelijke, tbl_probleem.[Datum ontstaan], " & _ "tbl_probleem.Deadline, tbl_probleem.Gereed, tbl_probleem.[Datum gereed] FROM " & _ "tbl_probleem WHERE tbl_probleem.Onderwerp= '" & _ Me![txt_Onderwerp] & "'" Subformulier_tbl_probleem.Requery End Sub [/code:1:be1a5f9803] Korte uitleg voor de laatste code: je ziet dat je niet de naam van het formulier wat op het hoofdformulier is gesleept moet gebruiken, maar de naam die is gegenereerd op het moment van plaatsen. Daarnaast moet je Me![txt_Onderwerp] buiten de string plaatsen, omdat je anders gaat zoeken naar de tekst "Me![txt_Onderwerp]" in de tabel tbl_Probleem. Zet maar eens een Msgbox Subformulier_tbl_probleem.Recordsource vlak voor de Requery opdracht. Dat is ook de reden dat het subformulier leeg blijft. Je hebt simpelweg geen records met als onderwerp "Me![txt_onderwerp]". Ik hoop dat je het nu wel aan de praat krijgt, aangezien we in verschillende versies werken, maar ik vermoed dat het nu wel werkt.
  • yes!!!!!!!!!!!!!!!!! het werkt :D hartelijk bedankt, dit was me never-no-way gelukt zonder je hulp nu de code eenmaal werkt zou het me moeten lukken om deze aan te passen voor gebruik met andere selectieformulieren

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.