Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema menù discesa collegati

    Ciao a tutti,
    sto cercando di realizzare un programma in access per la gestione dei prodotti, ora il mio problema è che ho 3 menù a discesa per: Marca, Categoria e Nome prodotto (questo perchè in una scheda riparazione non devo avere dei campi testo per queste 3 voci ma le gestisco in un'altra maschera)

    Ora le tabelle sono strutturate in questo modo:

    TABELLA MARCA
    IDMARCA contatore
    MARCA testo

    TABELLA CATEGORIA
    IDCATEGORIA contatore
    CATEGORIA testo

    TABELLA PRODOTTI
    IDPRODOTTO contatore
    NOMEPRODOTTO testo
    IDCATEGORIA numerico
    IDMARCA numerico
    ecc...

    Mi sorge il dubbio di aver sbagliato le tabelle infatti i menù a discesa devono essere predisposti nel seguente ordine Marca, Categoria, Nome Prodotto questo perchè nelle mie intenzioni era di far scegliere prima la MARCA poi la CATEGORIA ed infine il NOME PRODOTTO applicando man mano che scelgo dei filtri (es. ASUS -> SCHEDE MADRI -> A8V Deluxe), come devo strutturare le query per far in modo di avere questo risultato?

    Ciao e grazie
    Fabio

  2. #2
    sicuramente su TABELLA CATEGORIA devi crearti un campo di collegamento alla TABELLA MARCA, diciamo IDCATEGORIA
    poi, se per "menu a discesa" intendi "casella combinata" (combobox), allora fai così:

    1) inserisci nella tua maschera 3 caselle combinate e chiamale, per esempio, casellaMarca, casellaCategoria e casellaProdotto

    2) in casellaMarca devi impostare:
    - proprietà "RowSource" = "SELECT IDMarca, Marca FROM TabellaMarca ORDER BY Marca" in questo modo le hai anche ordinate
    - proprietà “colonna associata” = 1, cioè IDMarca
    - proprietà “numero colonne” = 2, cioè IDMarca e Marca
    - evento "dopo aggiornamento" con il seguente codice:
    Private Sub casellaMarca_AfterUpdate()
    If not IsNull(CasellaMarca) Then
    casellaCategoria.RowSource = "SELECT IDCategoria, Categoria, IDMarca FROM TabellaCategoria WHERE (IDMarca = “ & casellaMarca & “) ORDER BY Categoria”
    End If
    End Sub

    4) in casellaCategoria devi impostare:
    - proprietà “colonna associata” = 1, cioè IDCategoria
    - proprietà “numero colonne” = 3
    - evento "dopo aggiornamento" con il seguente codice:
    Private Sub casellaCategoria_AfterUpdate()
    If not IsNull(CasellaCategoria) Then
    casellaProdotto.RowSource = "SELECT IDProdotto, NomeProdotto, IDCategoria, IDMarca FROM TabellaProdotto WHERE ((IDCategoria = “ & casellaCategoria & “) AND (IDMarca =” & casellaMarca & “)) ORDER BY NomeProdotto”
    End If
    End Sub

    4) in casellaProdotto devi impostare:
    - proprietà “numero colonne” = 4

    a questo punto verifica le proprietà “larghezza colonna” delle 3 caselle combinate che hai creato e dovresti esserci

    ciao

  3. #3
    Ciao e grazie per la risposta, però mi viene un dubbio io non posso associare un IDCATEGORIA (campo numerico) nella tabella MARCA questo perchè in questo modo a una marca corrisponde una sola categoria mentre io devo avere la possibilità di associare una marca a più categorie di prodotti, i campi numerici IDCATEGORIA e ID MARCA posso associarli solo nella tabella PRODOTTI o sbaglio? :master:

    Ciao e grazie
    Fabio

  4. #4
    Sembra proprio che tu non abbia le idee molto chiare.
    Non disperare, l'argomento "relazioni" nella guida in linea di Access è spiegato molto bene.

    Se devi realizzare una relazioni "molti a molti" allora ti servono 3 tabelle anzichè 2.
    Esempio.

    TABELLA_MARCHE
    Id
    Descrizione

    TABELLA_CATEGORIE
    Id
    Descrizione

    TABELLA_PONTE
    IdMarche
    IdCategorie
    ...

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.