Caselle combinate - codice vba

di il
4 risposte

Caselle combinate - codice vba

Buon pomeriggio,
in un semplice db ho creato 3 tabelle:
1 categorie (vela, motore, gommone, ....);
2 cantieri (bavaria, beneteau, zodiac, ...);
3 modelli (first27, first28, sun32, ...)
Le ho messe in relazione (ad ogni categoria corrispondono più cantieri e ad ogni cantiere corrispondono più modelli).
L'inserimento dei dati, lavorando sulle tabelle, funziona perfettamente.
Per la visualizzazione ho creato una maschera con 3 caselle combinate:
1 categorie (ad inserimento diretto) con del codice, dopo aggiornamento, per filtrare i dati nella seconda casella combo;
2 cantieri (filtrati con il codice - e funziona perfettamente);
3. modelli (filtrati con il codice - MA NON FUNZIONA - mi chiede l'inserimento di un parametro)
Il codice è il seguente:
Option Compare Database
Option Explicit

Private Sub CasellaCombinata0_AfterUpdate()

Me.CasellaCombinata2.RowSource = "SELECT Cantiere FROM" & _
" Cantieri WHERE CategoryID = " & Me.CasellaCombinata0 & _
" ORDER BY Cantiere"

Me.CasellaCombinata2 = Me.CasellaCombinata2.ItemData(0)

End Sub

Private Sub CasellaCombinata2_AfterUpdate()

Me.CasellaCombinata6.RowSource = "SELECT Modello FROM" & _
" Modelli WHERE CantiereID = " & Me.CasellaCombinata2 & _
" ORDER BY Modello"

Me.CasellaCombinata6 = Me.CasellaCombinata6.ItemData(1)
End Sub

Cosa sbaglio?
Grazie

4 Risposte

  • Re: Caselle combinate - codice vba

    Innanzitutto quando pubblichi codice VBA, abbi cura di:
    - cliccare in basso sul tasto "Editor completo & Anteprima"
    - selezioni la porzione di testo relativa al codice VBA
    - clicca in alto sul tasto </> Codice
    In questo modo il codice VBA apparirà con i tipici caratteri monotype più familiari ai programmatori.

    Io avrei qualche domanda. Puoi chiarire a cosa corrispondono CasellaCombinata0, CasellaCombinata2...mi aspetterei un CasellaCombinata1 che non vedo, poi vedo CasellaCombinata6? Potresti metterci un po' di ordine idee?

    Serpiko ha scritto:


    1 categorie (ad inserimento diretto) con del codice, dopo aggiornamento, per filtrare i dati nella seconda casella combo;
    2 cantieri (filtrati con il codice - e funziona perfettamente);
    3. modelli (filtrati con il codice - MA NON FUNZIONA - mi chiede l'inserimento di un parametro)
    Anche la casella combinata su Cantieri deve avere un codice che vada "coerentemente" a filtrare la 3a casella combinata.
  • Re: Caselle combinate - codice vba

    CasellaCombinata0 è il nome elemento della Casella Combinata 'Categorie'
    CasellaCombinata2 è il nome elemento della Casella Combinata 'Cantieri'
    CasellaCombinata6 è il nome elemento della Casella Combinata 'Modelli'
    I primi 2 inserimenti funzionano. Sul terzo inserimento mi chiede un parametro e non visualizza i Modelli (perfettamente caricati)
  • Re: Caselle combinate - codice vba

    Prova a mettere le seguenti istruzioni alla fine (prima di End Sub) di ogni Sub:
    Me.CasellaCombinata2.Requery
    
    Me.CasellaCombinata6.Requery
    Però non mi sembra coerente dire prima ItemData(0) e nell'altra Sub ItemData(1). Se stai lavorando con i campi ID non mi sembrano necessari e probabilmente ci vedo una incongruenza.

    Ad ogni buon conto, io le "caselle combinate a cascata" le so gestire così:


    Altro noto esempio al riguardo è anche questo:
    forum.masterdrive.it/access-79/controlli-bound-sincronizzati-in-cascata-45725/
  • Re: Caselle combinate - codice vba

    Niente da fare. (Ho eliminato ItemData(0) e ho inserito il Requery...
    Riprogrammo tutto con il metodo suggerito nel primo link.
    Grazie 1000
Devi accedere o registrarti per scrivere nel forum
4 risposte