Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

(access 97) koppelling dropdown en subformulier via vba+sql

gijskerstens
3 antwoorden
  • Als stagiair binnen een bank werk ik als bij-opdracht aan een probleem- en actieregister in MS Access 97.
    Bij het formulier om de problemen, en de daaraan gekoppelde acties, te bewerken, wil ik aan de hand van een dropdown menu het probleemnummer selecteren, om vervolgens op basis daarvan de andere gegevens op te halen:
    - de gegevens uit de tabel tbl_probleem naar het hoofdformulier - dit werkt ondertussen (grotendeels)
    - de gegevens uit de tabel tbl_actie naar het subformulier - hier gaat het mis

    onder het dropdown-menu zit de volgende code:
    [code:1:738009d44d]Option Compare Database
    Option Explicit

    'haal de gegevens uit tbl_probleem op naar het hoofdformulier, op basis van het geselecteerde probleemnummer
    Private Sub txt_probleemnummer_Change()
    txt_Prioriteit = DLookup("[prioriteit]", "tbl_probleem", "[probleemnummer] =" _
    & Forms!frm_probleem_bewerk!txt_Probleemnummer)
    txt_Onderwerp = DLookup("[onderwerp]", "tbl_probleem", "[probleemnummer] =" _
    & Forms!frm_probleem_bewerk!txt_Probleemnummer)
    txt_Datum_ontstaan = DLookup("[datum ontstaan]", "tbl_probleem", "[probleemnummer] =" _
    & Forms!frm_probleem_bewerk!txt_Probleemnummer)
    txt_Deadline = DLookup("[deadline]", "tbl_probleem", "[probleemnummer] =" _
    & Forms!frm_probleem_bewerk!txt_Probleemnummer)
    txt_verantwoordelijke = DLookup("[verantwoordelijke]", "tbl_probleem", "[probleemnummer] =" _
    & Forms!frm_probleem_bewerk!txt_Probleemnummer)
    txt_Herkomst = DLookup("[herkomst]", "tbl_probleem", "[probleemnummer] =" _
    & Forms!frm_probleem_bewerk!txt_Probleemnummer)
    txt_Probleem = DLookup("[probleem]", "tbl_probleem", "[probleemnummer] =" _
    & Forms!frm_probleem_bewerk!txt_Probleemnummer)
    txt_Aanbeveling = DLookup("[aanbeveling]", "tbl_probleem", "[probleemnummer] =" _
    & Forms!frm_probleem_bewerk!txt_Probleemnummer)

    'haal de bijbehorende gegevens uit tbl_actie op naar het subformulier
    [frm_probleem_bewerk Subformulier].Form.RecordSource = "SELECT tbl_actie.actie, tbl_actie.status_huidig, " & _
    "tbl_actie.status_oud FROM " & _
    "tbl_actie WHERE tbl_actie.probleemnummer= '" & _
    Me![txt_Probleemnummer] & "'"
    [frm_probleem_bewerk Subformulier].Requery
    End Sub

    Sub Form_Load()
    Me!txt_Probleemnummer.RowSource = "SELECT DISTINCT probleemnummer FROM tbl_Probleem"
    End Sub[/code:1:738009d44d]

    als ik vervolgens een probleemnummer selecteer, krijg ik de foutmelding [quote:738009d44d]"fout 2001" tijdens uitvoering:

    u hebt de vorige bewerking geannuleerd[/quote:738009d44d]

    kan iemand mij vertellen wat er in de code foutzit?
  • update:
    ik heb wat zitten experimenteren, en kom tot de volgende conclusie:
    het probleem zit in de "WHERE" conditie - maak ik hier een absolute waarde van, dan werkt de code - in die zin dat dan natuurlijk de acties horende bij het nummer dat als absolute waarde is opgegeven worden opgehaald

    dit werkt dus:
    [code:1:af13a090d4]'haal de bijbehorende gegevens uit tbl_actie op naar het subformulier
    [frm_probleem_bewerk Subformulier].Form.RecordSource = "SELECT tbl_actie.actie, tbl_actie.status_huidig, " & _
    "tbl_actie.status_oud FROM " & _
    "tbl_actie WHERE tbl_actie.probleemnummer= 4"
    [frm_probleem_bewerk Subformulier].Requery[/code:1:af13a090d4]
    de fout zit dus volgens mij in dit stukje code:
    [code:1:af13a090d4] WHERE tbl_actie.probleemnummer= '" & _
    Me![txt_probleemnummer] & "'"[/code:1:af13a090d4]
  • Inderdaad, in je "absolute" versie geef je de waarde numeriek door, terwijl je in de "dynamische" versie de waarde als string doorgeeft, door er quotes omheen te zetten. Probeer eens:

    "…WHERE tbl_actie.probleemnummer= " & Me![txt_probleemnummer]

    In je DLookup's doe je het wel goed.

Beantwoord deze vraag

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