Flytta till en viss post från en kombinationsruta i Microsoft Access

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

Måttlig: Kräver grundläggande makron, kodning och kompatibilitetsfärdigheter.

Den här artikeln gäller en Microsoft Access-databasfil (.mdb) eller en Microsoft Access-databasfil (.accdb).

Sammanfattning

I den här artikeln visas fyra metoder för att flytta till en viss post baserat på val från en kombinationsruta. Metoderna är följande:

  • Kör kod som använder metoden FindFirst i händelsen AfterUpdate för en kombinationsruta.
  • Anropa ett makro som anropar egenskapen Filter för ett formulär i händelsen EfterUppdate för en kombinationsruta.
  • Använd ett formulär/underformulär med en kombinationsruta i huvudformuläret och data i underformuläret som är bundna av underformulärsegenskaperna LinkMasterFields och Link DenFields som finns i underformulärkontrollen.
  • Basera formuläret på en fråga som sammankopplar två tabeller och använd sedan metoden AutoSlåUpp för att binda en kombinationsruta till fältet som styr koppling.

De här fyra metoderna beskrivs i avsnittet "Mer information" i den här artikeln och baseras på Northwind-exempeldatabasen.

Mer information

Microsoft tillhandahåller programmeringsexempel enbart i förklarande syfte och gör inga utfästelser, varken uttryckligen eller underförstått. Detta omfattar men begränsas inte till underförstådd garanti för säljbarhet eller lämplighet för ett visst syfte. I denna artikel förutsätts att du känner till det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supportexperter kan hjälpa till att förklara funktionerna i en viss procedur, men de kommer inte att ändra dessa exempel för att tillhandahålla extra funktioner eller konstruera procedurer för att uppfylla dina specifika behov.

Varning

Om du följer anvisningarna i det här exemplet ändrar du exempeldatabasen Northwind.mdb. Du kanske vill backa Northwind.mdb-filen och följa de här stegen på en kopia av databasen.

I följande tabell jämförs funktionerna (fördelar och nackdelar) med de fyra metoderna:

Metod 1 2 3 4
Kräver ingen kod/makron x
Underformulär krävs inte x x
Kan bläddra till andra poster x x
Ingen fråga krävs x x x x
Kan redigera poster x x x x
Öppnar formulär i andra lägen x

Anteckning

De här metoderna kan även användas för textrutor.

Metod 1

  1. Skapa en tabell med namnet Products som har fältet ProductID och fältet ProductName.

  2. Använd guiden Autoformulär: Kolumnstapel när du vill skapa ett nytt formulär som baseras på tabellen Produkter och spara sedan formuläret som frmKombintest.

    Gör detta i Microsoft Office Access 2003 och tidigare versioner av Access genom att följa de här stegen:

    1. I fönstret Databas klickar du på Formulär under Objekt.
    2. Klicka Nytt i verktygsfältet i databasfönstret.
    3. Klicka på Autoformulär: Kolumn i dialogrutan Nytt formulär, markera tabellen Produkter i listrutan och klicka sedan på OK.
    4. Spara formuläret som frmComboTest.

    Gör detta i Microsoft Office Access 2007 eller en senare version genom att följa de här stegen:

    1. Klicka på Formulärguiden i gruppen Formulärfliken Skapa.
    2. I dialogrutan Från guiden väljer du tabellen Produkter i listrutan.
    3. Markera de fält som du vill se i det nya formuläret och klicka sedan på Nästa.
    4. Välj alternativet Kolumn om du vill ange formulärets layout och klicka sedan på Nästa.
    5. Skriv frmKombinoTest som formulärrubrik och klicka sedan på Slutför.
  3. Använd kombinationsrrutasguiden för att lägga till en obunden kombinationsruta. Gör så här:

    1. Öppna formuläret frmComboTest i designvyn.
    2. I verktygsfältet kontrollerar du att Kontrollguider är markerat.

    Anteckning

    I Access 2007 eller en senare version kontrollerar du att Använd kontrollguider är markerat i gruppen Kontroller på fliken Design.

    1. Skapa en kombinationsruta i formuläret frmComboTest.

    Anteckning

    I Access 2007 eller en senare version klickar du på Kombinationsruta i gruppen Kontroller på fliken Design och klickar sedan på formuläret frmKombintest. I dialogrutan Välj hjälpverktyg klickar du på Kombinationsruteguiden och sedan på OK.

    1. I dialogrutan Kombinationsruteguiden väljer du alternativet Sök efter en post i formuläret baserat på det värde jag valde i min kombinationsruta och klickar sedan på Nästa.
    2. Välj fälten ProductID och ProductName och klicka sedan på Nästa.
    3. Klicka på Slutför.

    Kombinationsrrutans guide skapar en händelseprocedur som liknar följande:

    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
    
  4. Visa formuläret frmComboTest i formulärvyn.

    Lägg märke till att när du väljer ett produktnamn i kombinationsrutan flyttas du till posten för den produkt som du valt.

Metod 2

  1. Skapa ett nytt formulär som baseras på tabellen Products med hjälp av guiden AutoForm: Columnar enligt anvisningarna i steg 2 i metod 1, och spara sedan formuläret som frmComboTest2.

  2. På sidan Egenskapssida i formuläret frmComboTest2 sätter du egenskapen Filterfliken Data till [ProductName] = Forms![frmComboTest2]![cboLookup] .

  3. Lägg till en obunden kombinationsruta med namnet cboLookup och ange sedan egenskaperna för kontrollen enligt följande:

    Combo Box
    -----------------------------------------------------
    ControlName: cboLookup
    ControlSource: <leave blank>
    RowSourceType: Table/Query
    RowSource: Select [ProductName] from Products;
    BoundColumn: 1
    ColumnWidths: 1"
    AfterUpdate: mcrLocateProduct
    
  4. Skapa följande makro med namnet mcrLocateProduct:

    Action
    --------------------------------------
    SetValue
    Requery
    
    mcrLocateProduct Actions
    --------------------------------------
    SetValue
    Item: Forms![frmComboTest2].FilterOn
    Expression: True
    

    Lägg märke till att när du öppnar formuläret frmComboTest2 och väljer ett produktnamn från kombinationsrutan cboLookup sätts filtret till det värdet.

Metod 3

  1. Skapa ett nytt formulär baserat på tabellen Produkter med hjälp av guiden AutoForm: Columnar enligt anvisningarna i steg 2 i metod 1, och spara sedan formuläret som frmSub.

  2. På sidan Egenskapssida i frmSub-formuläret anger du egenskapen Standardvyfliken Format till Enstaka formulär.

  3. Skapa ett nytt formulär (som inte baseras på någon tabell eller fråga) och spara det som frmMain. Lägg sedan till en kombinationsruta och ange dess egenskaper enligt följande:

    Combo Box
    ----------------------------
    ControlName: cboLookup
    ControlSource: <leave blank>
    RowSourceType: Table/Query
    RowSource: Products
    ColumnCount: 4
    ColumnWidths: 0";2"
    BoundColumn: 1
    
  4. Infoga en underformulärkontroll i frmSub-formuläret.

    • Gå till Design > underformulär/underrapport och avbryt sedan Guiden Underformulär.
    • Dra och släpp frmSub från navigeringsfönstret till frmMain-formuläret.
  5. Ange följande egenskaper för underformulärkontrollen:

    Subform
    ----------------------------
    LinkChildFields: [ProductID]
    LinkMasterFields: cboLookup
    

    Genom att ändra värdet i kontrollen cboLookup säkerställer Access att posterna i underformuläret matchar kombinationsrutan.

    Formuläret Order i Northwind-exempeldatabasen illustrerar den här metoden. Underformuläret Orderdetaljer är relaterat av egenskaperna LinkMasterFields och LinkFields.

Metod 4: Använd makroinstruktionen ÖppnaFormulär med WHERE-satsen

  1. Skapa ett nytt formulär baserat på tabellen Produkter med hjälp av guiden AutoForm: Columnar enligt anvisningarna i steg 2 i metod 1, och spara sedan formuläret som frmKombinTest5.

  2. Lägg till en obunden kombinationsruta med namnet cboLookup och ange sedan egenskaperna för kontrollen enligt följande:

    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"
    
  3. I Makroverktyget skapar du ett nytt inbäddat makro AfterUpdate i händelsen för cboLookup-kombinationsrutan.

  4. I listrutan Lägg till ny åtgärd väljer du ÖppnaFormulär och anger sedan följande egenskaper:

    Form Name:   frmComboTest5
    View:        Form
    Filter Name: <leave as empty>
    Where Condition: [ID] = [Forms]![frmComboTest5]![cboLookup].value
    Data Mode: <optional>
    Window Mode: <optional>
    
  5. Spara och stäng makrot.

  6. Spara och kör formuläret.

När du har ändrat värdet i kombinationsrutan stängs formuläret och öppnas igen med ett filter.