In een Access-project werken met keuzelijsten met invoervak waarvoor parameters zijn ingesteld

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 281870 - Bekijk de producten waarop dit artikel van toepassing is.
Dit artikel is eerder gepubliceerd onder NL281870
Gemiddeld: vereist basisvaardigheden op het gebied van macro's, codering en interoperabiliteit.

Dit artikel heeft uitsluitend betrekking op een Microsoft Access-project (.ADP).

Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

Keuzelijsten met invoervak vormen een goede manier om een lijst met keuzes aan gebruikers te presenteren. Als de rijbron voor een keuzelijst met invoervak moet worden gebaseerd op een subset records uit een tabel of query, kunt u een WHERE-instructie toevoegen om de keuzes te beperken.

In het voorbeeld in dit artikel wordt een keuzelijst met invoervak toegevoegd aan het formulier Klanten in het voorbeeldproject NorthwindCS.adp. De keuzelijst met invoervak bevat de orders die door de huidige klant zijn geplaatst. Wanneer de invoerlijst wordt geselecteerd, wordt het formulier Orders geopend en worden de details van de geselecteerde order weergegeven.

U kunt vier verschillende methoden gebruiken om een lijst weer te geven met orders die door een klant zijn geplaatst. Deze methoden maken gebruik van een Access-project (.ADP) met Microsoft SQL Server 2000 als gegevensbron. Deze methoden worden beschreven in de volgende sectie.

Meer informatie

De keuzelijst met invoervak maken

In deze sectie wordt eerst beschreven hoe u in het formulier Klanten een keuzelijst met invoervak maakt waarin de orders van de huidige klant worden weergegeven.
  1. Open het formulier in de ontwerpweergave.
  2. Klik op Wizards voor besturingselementen in de werkset en voeg een keuzelijst met invoervak aan het formulier toe.
  3. Geef op de eerste pagina van de wizard aan dat de waarden moeten worden opgezocht in een tabel of query. Klik op Volgende.
  4. Klik op de tweede pagina van de wizard op de tabel Orders en klik op Volgende.
  5. Voeg op de derde pagina van de wizard de velden OrderId, KlantId en Orderdatum toe aan de keuzelijst met invoervak en klik op Volgende.
  6. Schakel op de vierde pagina van de wizard het selectievakje Sleutelkolom verbergen uit en verklein de kolom KlantId zodat deze niet zichtbaar is. Klik op Volgende.
  7. Klik op de vijfde pagina van de wizard nogmaals op Volgende om OrderId te accepteren als het veld dat in uw database moet worden opgeslagen of gebruikt.
  8. Geef op de zesde pagina van de wizard aan dat de waarde moet worden onthouden voor later gebruik en klik op Volgende.
  9. Geef op de laatste pagina van de wizard de keuzelijst met invoervak de naam Order selecteren en klik op Voltooien.
  10. Open het eigenschappenvenster voor de keuzelijst met invoervak en wijzig de naam van de keuzelijst met invoervak in OrderSelecterenCombo.
  11. Stel de eigenschap OnClick van de keuzelijst met invoervak in op de volgende gebeurtenisprocedure:
    Private Sub OrderSelecterenCombo_Click()
    On Error GoTo Err_OrderSelecterenCombo_Click
        Dim stDocName As String
        Dim stLinkCriteria As String
    
        stDocName = "Orders"
    
        stLinkCriteria = "[OrderId]=" & Me![OrderSelecterenCombo]
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    
    Exit_OrderSelecterenCombo_Click:
        Exit Sub
    
    Err_OrderSelecterenCombo_Click:
        MsgBox Err.Description
        Resume Exit_OrderSelecterenCombo_Click
    
    End Sub
    					

De code toevoegen om de keuzelijst met invoervak te vernieuwen

In deze sectie worden de methoden weergegeven die u kunt gebruiken om de keuzelijst met invoervak te vernieuwen. Selecteer een van de volgende vier methoden en voeg vervolgens de juiste code toe aan de gebeurtenis OnEnter van de keuzelijst met invoervak.

Voor methode 1 en 2 stelt de gebeurtenis OnClick elke keer als de keuzelijst met invoervak wordt geselecteerd, de rijbron voor de keuzelijst met invoervak in om uitsluitend die orders weer te geven die overeenkomen met de huidige klant.

Opmerking Omdat het veld KlantId een tekstveld is, moeten enkelvoudige aanhalingstekens (') rondom de verwijzing naar Formulier worden geplaatst. Zo wordt bijvoorbeeld de gegenereerde WHERE-instructie omgezet van:
WHERE KlantId = '" & Formulieren![Klanten]![KlantId] & "'"
				
in:
WHERE KlantId = 'ALFKI'
				

Methode 1: Adhoc selectie gebruiken

Stel de eigenschap OnEnter van de keuzelijst met invoervak in op de volgende gebeurtenisprocedure:
Me.OrderSelecterenCombo.RowSource = "SELECT TOP 100 PERCENT OrderId, KlantId, OrderDatum FROM Orders WHERE " _ 
     & "KlantId = '" & Formulieren![Klanten]![KlantId] & "' ORDER BY OrderDatum DESC"

				

Methode 2: Een SQL-serverweergave gebruiken

  1. Maak een nieuwe weergave in Ontwerp weergeven en selecteer de velden OrderId, KlantId en OrderDate in de tabel Orders. Stel de optie Sorteertype voor het veld OrderDatum in op Aflopend om de lijst te sorteren van nieuwste naar oudste.
  2. Sla de weergave op als vwKlantOrders.
  3. Stel de eigenschap OnEnter van de keuzelijst met invoervak in op de volgende gebeurtenisprocedure:
    Me.OrderSelecterenCombo.RowSource = "SELECT * FROM vwKlantOrders WHERE KlantId = '" & Formulieren![Klanten![KlantId] & "'"
    					
Voor methode 3 en 4 wordt de methode QueryOpnieuwUitvoeren van de keuzelijst met invoervak aangeroepen voor de gebeurtenis OnEnter om een opgeslagen procedure of SQL-functie opnieuw uit te voeren en de overeenkomende records als resultaat te geven. In deze voorbeelden wordt de parameter gedefinieerd als een besturingselement op het formulier dat @ControlName in de criteria gebruikt. Access evalueert automatisch de criteria en vraagt de overeenkomende records op.

In de volgende voorbeelden geeft de keuzelijst met invoervak een lijst met alle orders voor de huidige klant als resultaat. Omdat het tekstvak KlantId het huidige klant-id bevat, kunt u rechtstreeks verwijzen naar het tekstvak KlantId in de criteria voor de opgeslagen procedure of de SQL-functie.

Methode 3: Een opgeslagen procedure van SQL Server gebruiken

  1. Maak een nieuwe procedure in de grafische ontwerper.
  2. Selecteer de tabel Orders en voeg de velden OrderId, KlantId en OrderDate toe aan de opgeslagen procedure.
  3. Geef @KlantId op als criterium voor het veld KlantId en sorteer het veld OrderDatum aflopend.
  4. Sla de opgeslagen procedure op als spKlantOrders en sluit de procedure.
  5. Stel de opgeslagen procedure spKlantOrders in als de rijbron voor de keuzelijst met invoervak.

    Opmerking De volgende SQL-instructie wordt gemaakt door het ontwerp van opgeslagen procedures:
    CREATE PROCEDURE dbo.spKlantOrders
      (@KlantId varchar(5))
      AS SELECT OrderId, KlantId, OrderDatum
      FROM   dbo.Orders
      WHERE  (KlantId = @KlantId)
      ORDER BY OrderDatum DESC
    					
  6. Stel de eigenschap OnEnter van de keuzelijst met invoervak in op de volgende gebeurtenisprocedure:
    Me.OrderSelecterenCombo.QueryOpnieuwUitvoeren
    					

Methode 4: Een functie uit SQL Server 2000 gebruiken

U kunt deze methode uitsluitend gebruiken als het Access-project gebruikmaakt van SQL Server 2000 of later als gegevensbron.
  1. Maak een functie in de grafische ontwerper.
  2. Selecteer de tabel Orders en voeg de velden OrderId, KlantId en OrderDate toe aan de opgeslagen procedure.
  3. Geef @KlantId op als criterium voor het veld KlantId en sorteer het veld OrderDatum aflopend.
  4. Sla de functie op als fnKlantOrders en sluit deze.
  5. Stel de functie fnKlantOrders in als de rijbron voor de keuzelijst met invoervak.

    Opmerking De volgende SQL-instructie wordt gemaakt en opgeslagen door het ontwerp van opgeslagen procedures:
    CREATE FUNCTION dbo.fnKlantOrders
      (@KlantId varchar(5))
      RETURNS TABLE
      RETURN ( SELECT TOP 100 PERCENT OrderId, KlantId, OrderDatum
      FROM   dbo.Orders
      WHERE  (KlantId = @KlantId)
      ORDER BY OrderDatum DESC )
    					
  6. Stel de eigenschap OnEnter van de keuzelijst met invoervak in op de volgende gebeurtenisprocedure:
    Me.OrderSelecterenCombo.QueryOpnieuwUitvoeren
    					
Als u deze methoden wilt testen, opent u het formulier en selecteert u een item in de keuzelijst met invoervak Order selecteren. De gebeurtenis OnEnter voert opnieuw een query op de keuzelijst met invoervak uit en genereert automatisch een lijst met orders voor de huidige klant. Wanneer een order wordt geselecteerd, wordt de OnClick-gebeurtenis van de keuzelijst met invoervak uitgevoerd, wordt het formulier Orders geopend en wordt de geselecteerde order weergegeven.

Eigenschappen

Artikel ID: 281870 - Laatste beoordeling: dinsdag 13 februari 2007 - Wijziging: 3.1
De informatie in dit artikel is van toepassing op:
  • Microsoft Access 2002 Standard Edition
Trefwoorden: 
kbprogramming kbadp kbclientserver kbhowto KB281870

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com