Come passare a un record specifico da una selezione casella combinata in Microsoft Access
Moderato: richiede competenze di base di macro, codifica e interoperabilità.
Questo articolo si applica a un file di database di Microsoft Access (con estensione .mdb) oppure a un file di database di Microsoft Access (con estensione .accdb).
Riepilogo
Questo articolo illustra quattro metodi per passare a un record specifico in base alla selezione da una casella combinata. I metodi sono i seguenti:
- Nell'evento AfterUpdate di una casella combinata eseguire il codice che utilizza il metodo FindFirst.
- Nell'evento AfterUpdate di una casella combinata chiamare una macro che rieseguire la proprietà Filter di una maschera.
- Utilizzare una maschera/sottomaschera, con una casella combinata nella maschera principale, e i dati nella sottomaschera, associati alle proprietà LinkMasterFields e LinkChildFields del controllo sottomaschera.
- Basare il modulo su una query che unisce due tabelle e quindi utilizzare la tecnica AutoLookup per associare una casella combinata al campo che controlla il join.
Questi quattro metodi sono descritti nella sezione "Altre informazioni" di questo articolo e si basano sul database di esempio Northwind.
Ulteriori informazioni
Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. Gli esperti Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare routine, ma in nessun caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare routine atte a soddisfare specifiche esigenze.
Attenzione
Se si segue la procedura descritta in questo esempio, si modifica il database di esempio Northwind.mdb. È possibile eseguire il backup del file Northwind.mdb e seguire questa procedura in una copia del database.
Nella tabella seguente vengono confrontate le funzionalità (vantaggi e svantaggi) dei quattro metodi:
Metodo | 1 | 2 | 3 | 4 |
---|---|---|---|---|
Non richiede codice/macro | x | |||
La sottomaschera non è obbligatoria | x | x | ||
Può scorrere fino ad altri record | x | x | ||
Non richiede una query | x | x | x | x |
Può modificare i record | x | x | x | x |
Apre il modulo in altre modalità | x |
Nota
Questi metodi possono essere applicati anche alle caselle di testo.
Metodo 1
Creare una tabella denominata Products con il campo ProductID e il campo ProductName.
Utilizzare la Procedura guidata Maschera automatica: Colonna per creare un nuovo modulo basato sulla tabella Products e quindi salvare il modulo come frmComboTest.
Per eseguire questa operazione in Microsoft Office Access 2003 e versioni precedenti di Access, seguire questa procedura:
- Nella finestra Database fare clic su Moduli in Oggetti.
- Fare clic su Nuovo sulla barra degli strumenti della finestra database.
- Nella finestra di dialogo Nuova maschera fare clic su AutoForm: Columnar, selezionare la tabella Products nell'elenco a discesa e quindi fare clic su OK.
- Salvare il modulo come frmComboTest.
Per eseguire questa operazione in Microsoft Office Access 2007 o versione successiva, seguire questa procedura:
- Nella scheda Crea fare clic su Creazione guidata modulo nel gruppo Moduli .
- Nella finestra di dialogo Dalla procedura guidata selezionare la tabella Prodotti nell'elenco a discesa.
- Selezionare i campi che si desidera visualizzare nel nuovo modulo e quindi fare clic su Avanti.
- Selezionare l'opzione Columnar per impostare il layout del modulo e quindi fare clic su Avanti.
- Digitare frmComboTest come titolo del modulo e quindi fare clic su Fine.
Usare la Creazione guidata casella combinata per aggiungere una casella combinata non associata. A tal fine, attenersi alla seguente procedura:
- Aprire la maschera frmComboTest nella visualizzazione Struttura.
- Nella barra degli strumenti verificare che sia selezionata l'opzione Creazioni guidate controllo .
Nota
In Access 2007 o in una versione successiva verificare che l'opzione Usa creazioni guidate controllo sia selezionata nel gruppo Controlli della scheda Progettazione .
- Creare una casella combinata nel modulo frmComboTest.
Nota
In Access 2007 o versione successiva fare clic su Casella combinata nel gruppo Controlli della scheda Progettazione e quindi fare clic sul modulo frmComboTest. Nella finestra di dialogo Scegli generatore fare clic su Creazione guidata casella combinata e quindi fare clic su OK.
- Nella finestra di dialogo Creazione guidata casella combinata selezionare l'opzione Trova un record nel modulo in base al valore selezionato nella casella combinata e quindi fare clic su Avanti.
- Selezionare i campi ProductID e ProductName e quindi fare clic su Avanti.
- Fare clic su Fine.
La Creazione guidata casella combinata crea una routine evento simile alla seguente:
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
Visualizzare la maschera frmComboTest nella visualizzazione Maschera.
Si noti che quando si sceglie un nome di prodotto nella casella combinata, si viene spostati nel record per il prodotto selezionato.
Metodo 2
Creare un nuovo modulo basato sulla tabella Products utilizzando la Creazione guidata maschera automatica: Columnar come indicato nel passaggio 2 del metodo 1 e quindi salvare il modulo come frmComboTest2.
Nella pagina Finestra delle proprietà della maschera frmComboTest2 impostare la proprietà Filter nella scheda Dati su
[ProductName] = Forms![frmComboTest2]![cboLookup]
.Aggiungere una casella combinata non associata denominata cboLookup e quindi impostare le proprietà del controllo come indicato di seguito:
Combo Box ----------------------------------------------------- ControlName: cboLookup ControlSource: <leave blank> RowSourceType: Table/Query RowSource: Select [ProductName] from Products; BoundColumn: 1 ColumnWidths: 1" AfterUpdate: mcrLocateProduct
Creare la macro seguente denominata mcrLocateProduct:
Action -------------------------------------- SetValue Requery mcrLocateProduct Actions -------------------------------------- SetValue Item: Forms![frmComboTest2].FilterOn Expression: True
Si noti che quando si apre il modulo frmComboTest2 e si seleziona un nome di prodotto dalla casella combinata cboLookup, il filtro viene impostato su tale valore.
Metodo 3
Creare un nuovo modulo basato sulla tabella Products utilizzando la Creazione guidata Maschera automatica: Columnar come indicato nel passaggio 2 del metodo 1 e quindi salvare il modulo come frmSub.
Nella pagina Finestra delle proprietà della maschera frmSub impostare la proprietà Visualizzazione predefinita nella scheda Formato su Maschera singola.
Creare un nuovo modulo (non basato su alcuna tabella o query) e salvarlo come frmMain. Aggiungere quindi una casella combinata e impostarne le proprietà come indicato di seguito:
Combo Box ---------------------------- ControlName: cboLookup ControlSource: <leave blank> RowSourceType: Table/Query RowSource: Products ColumnCount: 4 ColumnWidths: 0";2" BoundColumn: 1
Inserire un controllo Sottomaschera della maschera frmSub.
- Passare a Progettazione>sottomaschera/sottoreport e quindi annullare la Creazione guidata sottomaschera.
- Trascinare e rilasciare frmSub dal riquadro di spostamento nel modulo frmMain.
Impostare le proprietà del controllo sottomaschera come indicato di seguito:
Subform ---------------------------- LinkChildFields: [ProductID] LinkMasterFields: cboLookup
Modificando il valore nel controllo cboLookup, Access garantisce che i record nella sottomaschera corrispondano alla casella combinata.
Il modulo Orders nel database di esempio Northwind illustra questo metodo. La sottomaschera Dettagli ordine è correlata alle proprietà LinkMasterFields e LinkChildFields .
Metodo 4: utilizzare l'azione di macro OpenForm con la clausola WHERE
Creare un nuovo modulo basato sulla tabella Products usando la Procedura guidata Maschera automatica: Columnar come indicato nel passaggio 2 del metodo 1 e quindi salvare il modulo come frmComboTest5.
Aggiungere una casella combinata non associata denominata cboLookup e quindi impostare le proprietà del controllo come indicato di seguito:
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"
In Generatore macro creare una nuova macro incorporata nell'evento
AfterUpdate
per la casella combinata cboLookup.Nell'elenco a discesa Aggiungi nuova azione selezionare OpenForm e quindi impostare le proprietà seguenti:
Form Name: frmComboTest5 View: Form Filter Name: <leave as empty> Where Condition: [ID] = [Forms]![frmComboTest5]![cboLookup].value Data Mode: <optional> Window Mode: <optional>
Salvare e chiudere la macro.
Salvare ed eseguire il modulo.
Dopo aver modificato il valore della casella combinata, il modulo verrà chiuso e aperto nuovamente con un filtro applicato.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per