Naar een specifieke record verplaatsen vanuit een keuzelijst met invoervak in Microsoft Access
Gemiddeld: vereist basisvaardigheden voor macro's, codering en interoperabiliteit.
Dit artikel is van toepassing op een Microsoft Access-databasebestand (.mdb) of op een Microsoft Access-databasebestand (.accdb).
Samenvatting
In dit artikel worden vier methoden beschreven voor het verplaatsen naar een specifieke record op basis van een keuzelijst met invoervak. De methoden zijn als volgt:
- Voer in de afterupdate-gebeurtenis van een keuzelijst met invoervak code uit die gebruikmaakt van de methode FindFirst.
- Roep in de gebeurtenis AfterUpdate van een keuzelijst met invoervak een macro aan waarmee de eigenschap Filter van een formulier opnieuw wordt opgeslagen.
- Gebruik een formulier/subformulier met een keuzelijst met invoervak op het hoofdformulier en de gegevens in het subformulier, afhankelijk van de eigenschappen LinkMasterFields en LinkChildFields van het subformulierbesturingselement.
- Baseer het formulier op een query die twee tabellen samenvoegt en gebruik vervolgens de techniek AutoLookup om een keuzelijst met invoervak te binden aan het veld dat de join bepaalt.
Deze vier methoden worden beschreven in de sectie 'Meer informatie' van dit artikel en zijn gebaseerd op de Northwind-voorbeelddatabase.
Meer informatie
Microsoft verstrekt programmeervoorbeelden alleen ter illustratie, zonder expliciete of impliciete garantie. daaronder mede begrepen, maar niet beperkt tot impliciete garanties met betrekking tot de verkoopbaarheid en/of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal VBScript, alsmede met de hulpprogramma's waarmee procedures worden gemaakt en waarmee fouten in procedures worden opgespoord. U kunt desgewenst contact opnemen met Microsoft Product Support Services voor uitleg over de functie van een bepaalde procedure. Microsoft Product Support Services is echter niet bereid de voorbeelden aan te passen om extra functies toe te voegen of om procedures te maken die aan uw specifieke eisen voldoen.
Voorzichtigheid
Als u de stappen in dit voorbeeld volgt, wijzigt u de voorbeelddatabase Northwind.mdb. Mogelijk wilt u een back-up maken van het Northwind.mdb-bestand en deze stappen uitvoeren op een kopie van de database.
In de volgende tabel worden de functies (voor- en nadelen) van de vier methoden vergeleken:
Methode | 1 | 2 | 3 | 4 |
---|---|---|---|---|
Vereist geen code/macro's | X | |||
Subformulier is niet vereist | X | X | ||
Kan naar andere records schuiven | X | X | ||
Vereist geen query | X | X | X | X |
Kan records bewerken | X | X | X | X |
Hiermee opent u formulier in andere modi | X |
Opmerking
Deze methoden kunnen ook worden toegepast op tekstvakken.
Methode 1
Maak een tabel met de naam Producten met het veld ProductID en het veld ProductName.
Gebruik de wizard AutoForm: Columnar om een nieuw formulier te maken dat is gebaseerd op de tabel Producten en sla het formulier vervolgens op als frmComboTest.
Voer de volgende stappen uit om dit te doen in Microsoft Office Access 2003 en eerdere versies van Access:
- Klik in het venster Database op Formulieren onder Objecten.
- Klik op Nieuw op de werkbalk van het venster Database.
- Klik in het dialoogvenster Nieuw formulier op AutoFormulier: Kolom, selecteer de tabel Producten in de vervolgkeuzelijst en klik vervolgens op OK.
- Sla het formulier op als frmComboTest.
Voer de volgende stappen uit om dit te doen in Microsoft Office Access 2007 of een latere versie:
- Klik op het tabblad Maken op Wizard Formulier in de groep Formulieren .
- Selecteer in het dialoogvenster Van wizard de tabel Producten in de vervolgkeuzelijst.
- Selecteer de velden die u in het nieuwe formulier wilt zien en klik vervolgens op Volgende.
- Selecteer de optie Kolomar om de indeling van het formulier in te stellen en klik vervolgens op Volgende.
- Typ frmComboTest als de titel van het formulier en klik vervolgens op Voltooien.
Gebruik de wizard Keuzelijst met invoervak om een niet-afhankelijke keuzelijst met invoervak toe te voegen. Ga hiervoor als volgt te werk:
- Open het formulier frmComboTest in de ontwerpweergave.
- Zorg ervoor dat wizards beheren is geselecteerd op de werkbalk.
Opmerking
Zorg ervoor dat in Access 2007 of een latere versie wizards beheren is geselecteerd in de groep Besturingselementen op het tabblad Ontwerpen .
- Maak een keuzelijst met invoervak op het formulier frmComboTest.
Opmerking
Klik in Access 2007 of een latere versie op Keuzelijst met invoervak in de groep Besturingselementen op het tabblad Ontwerpen en klik vervolgens op het formulier frmComboTest. Klik in het dialoogvenster Opbouwfunctie kiezen op Wizard Keuzelijst met invoervak en klik vervolgens op OK.
- Selecteer in het dialoogvenster Wizard Keuzelijst met invoervak de optie Een record zoeken in mijn formulier op basis van de waarde die ik in mijn keuzelijst met invoervak heb geselecteerd en klik vervolgens op Volgende.
- Selecteer de velden ProductID en ProductName en klik op Volgende.
- Klik op Voltooien.
Met de wizard Keuzelijst met invoervak maakt u een gebeurtenisprocedure die er ongeveer als volgt uitziet:
Private Sub Combo0_AfterUpdate() ' Find the record that matches the control. Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[ProductID] = " & Str(Nz(Me![Combo20], 0)) If Not rs.EOF Then Me.Bookmark = rs.Bookmark End Sub
Bekijk het formulier frmComboTest in de formulierweergave.
Wanneer u een productnaam kiest in de keuzelijst met invoervak, wordt u verplaatst naar de record voor het product dat u hebt geselecteerd.
Methode 2
Maak een nieuw formulier op basis van de tabel Producten met behulp van de wizard AutoForm: Columnar volgens de instructies in stap 2 van methode 1 en sla het formulier vervolgens op als frmComboTest2.
Stel op de pagina Eigenschappenvenster van het formulier frmComboTest2 de eigenschap Filter op het tabblad Gegevens in op
[ProductName] = Forms![frmComboTest2]![cboLookup]
.Voeg een niet-afhankelijke keuzelijst met invoervak toe met de naam cboLookup en stel de eigenschappen van het besturingselement als volgt in:
Combo Box ----------------------------------------------------- ControlName: cboLookup ControlSource: <leave blank> RowSourceType: Table/Query RowSource: Select [ProductName] from Products; BoundColumn: 1 ColumnWidths: 1" AfterUpdate: mcrLocateProduct
Maak de volgende macro met de naam mcrLocateProduct:
Action -------------------------------------- SetValue Requery mcrLocateProduct Actions -------------------------------------- SetValue Item: Forms![frmComboTest2].FilterOn Expression: True
Wanneer u het formulier frmComboTest2 opent en een productnaam selecteert in de keuzelijst met invoervak cboLookup, wordt het filter ingesteld op die waarde.
Methode 3
Maak een nieuw formulier op basis van de tabel Producten met behulp van de wizard AutoForm: Columnar zoals aangegeven in stap 2 van methode 1 en sla het formulier vervolgens op als frmSub.
Stel op de pagina Eigenschappenvenster van het formulier frmSub de eigenschap Standaardweergave op het tabblad Opmaak in op Enkel formulier.
Maak een nieuw formulier (dat niet is gebaseerd op een tabel of query) en sla dit op als frmMain. Voeg vervolgens een keuzelijst met invoervak toe en stel de eigenschappen ervan als volgt in:
Combo Box ---------------------------- ControlName: cboLookup ControlSource: <leave blank> RowSourceType: Table/Query RowSource: Products ColumnCount: 4 ColumnWidths: 0";2" BoundColumn: 1
Voeg een besturingselement Subformulier van het formulier frmSub in.
- Ga naarSubformulier/Subrapportontwerpen> en annuleer de wizard Subformulier.
- Sleep de frmSub vanuit het navigatiedeelvenster naar het formulier frmMain.
Stel de eigenschappen van het subformulierbesturingselement als volgt in:
Subform ---------------------------- LinkChildFields: [ProductID] LinkMasterFields: cboLookup
Door de waarde in het cboLookup-besturingselement te wijzigen, zorgt Access ervoor dat de records in het subformulier overeenkomen met de keuzelijst met invoervak.
Het formulier Orders in de voorbeelddatabase Northwind illustreert deze methode. Het subformulier Orderdetails is gerelateerd aan de eigenschappen LinkMasterFields en LinkChildFields .
Methode 4: Gebruik de macroactie Formulieropenen met de WHERE-component
Maak een nieuw formulier op basis van de tabel Producten met behulp van de wizard AutoForm: Columnar volgens de instructies in stap 2 van methode 1 en sla het formulier vervolgens op als frmComboTest5.
Voeg een niet-afhankelijke keuzelijst met invoervak toe met de naam cboLookup en stel de eigenschappen van het besturingselement als volgt in:
Combo Box ----------------------------------------------------- ControlName: cboLookup ControlSource: <leave blank> RowSourceType: Table/Query RowSource: SELECT [ProductID], [ProductName] FROM Products ORDER BY [ProductName]; BoundColumn: 1 ColumnCount: 2 ColumnWidths: 0";1"
Maak in de opbouwfunctie voor macro's een nieuwe ingesloten macro in de
AfterUpdate
gebeurtenis voor de keuzelijst met invoervak cboLookup.Selecteer in de vervolgkeuzelijst Nieuwe actie toevoegende optie Formulier openen en stel vervolgens de volgende eigenschappen in:
Form Name: frmComboTest5 View: Form Filter Name: <leave as empty> Where Condition: [ID] = [Forms]![frmComboTest5]![cboLookup].value Data Mode: <optional> Window Mode: <optional>
Sla de macro op en sluit deze.
Sla het formulier op en voer het uit.
Nadat u de waarde van de keuzelijst met invoervak hebt gewijzigd, wordt het formulier gesloten en opnieuw geopend met een filter.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor