Filtrare i suggerimenti di una casella combinata in base ad un gruppo di opzioni

di il
9 risposte

Filtrare i suggerimenti di una casella combinata in base ad un gruppo di opzioni

Ciao a tutti, premetto che non sono molto esperto di access, spero che qualcuno possa aiutarmi.
In sostanza vorrei creare una maschera che mi permetta di cercare gli articoli.
Avevo pensato di creare un gruppo di opzioni con all'interno 3 pulsanti che determinano i criteri di ricerca e una casella combinata che permette di visualizzare i valori, presi dalla tabella Articoli, in base al criterio di ricerca selezionato.
Allego 3 foto: una della tabella Articoli e altre 2 per far capire l'idea di come vorrei che funzionasse.
Grazie per l'aiuto.
Allegati:
32290_248db9b618a6866d0cfc6248ddc506d8.jpg
32290_248db9b618a6866d0cfc6248ddc506d8.jpg

32290_0577fc51fe4c806fee69f2f9f16ce5ed.jpg
32290_0577fc51fe4c806fee69f2f9f16ce5ed.jpg

32290_eea19637eabe6cc1f5def9da48d63ea6.jpg
32290_eea19637eabe6cc1f5def9da48d63ea6.jpg

9 Risposte

  • Re: Filtrare i suggerimenti di una casella combinata in base ad un gruppo di opzioni

    Salve mah le caselle combinate fanno già il loro lavoro?
    Cercano gli articoli? se è cosi potresti giocare sovrapponendo le combo e spostare il focus sulla casella combinata
    che serve.
  • Re: Filtrare i suggerimenti di una casella combinata in base ad un gruppo di opzioni

    La casella combinata che vede in foto fa ciò che vorrei fare soltanto perché sono 2 caselle differenti, una che visualizza i codici, mentre l'altra gli articoli, tuttavia non riesco a far fare questa cosa ad una sola casella combinata in base al pulsante selezionato. Cosa intendi con: giocare sovrapponendo le combo e spostare il focus sulla casella combinata?
  • Re: Filtrare i suggerimenti di una casella combinata in base ad un gruppo di opzioni

    
    Public Function FLT_RowSourceDestinatario(cCtl As Access.ComboBox, iValue As Integer) As Boolean
    
        Select Case Nz(iValue, 0)
        Case 1      ' Nome Breve (col. 3)
            cCtl.ColumnWidths = "0cm;0cm;8cm;4cm;0cm;0cm;0cm"
            cCtl.RowSource = "SELECT * FROM VW_ANCF_CB_Filter ORDER BY CF_Priority ASC, CF_ShortName ASC;"
         Case 2     ' P. IVA (col. 4)
            cCtl.ColumnWidths = "0cm;0cm;0cm;8cm;4cm;0cm;0cm"
            cCtl.RowSource = "SELECT * FROM VW_ANCF_CB_Filter ORDER BY CF_VATNumber ASC;"
        Case Else   ' Rag. Sociale (col. 2)
            cCtl.ColumnWidths = "0cm;8cm;4cm;0cm;0cm;0cm;0cm"
            cCtl.RowSource = "SELECT * FROM VW_ANCF_CB_Filter ORDER BY CF_RagioneSociale ASC;"
         End Select
        
        FLT_RowSourceDestinatario = True
    
    End Function
    
    Prendi spunto dalla mia funzione che con un ComboBox e un optionGroup permette di effettuare la ricerca tra Nome Breve, Partita IVA e Ragione Sociale.
    Ovviamente devi cambiare il RowSource in funzione delle tue esigenze e devi cambiare anche la larghezza delle colonne del tuo ComboBox (nel mio caso utilizzo 7 colonne, 0cm indica una colonna presente ma non visualizzata).

    Nell'evento AfterUpdate dell'optiongroup richiami al funzione passando il ComboBox (nel mio caso QT_FK_Customer) e il valore dell'optionGroup (FLT_TipoDest.Value) :
    
    Private Sub FLT_TipoDest_AfterUpdate()
    
        Dummy = FLT_RowSourceDestinatario(Me.QT_FK_Customer, Nz(Me.FLT_TipoDest.Value, 0))
    
    
  • Re: Filtrare i suggerimenti di una casella combinata in base ad un gruppo di opzioni

    Ne fai 3 ed a seconda della Selezione rendi VISIBILE solo quella correlata.

    Io non userei questa tecnica in quanto le Combo sono Oggetti BOUND e di fatto CARICANO dati... quindi X3

    Il fatto è che l'ordine delle Colonne è dato dal predicato SQL, quindi basta cambiare il predicato SQL della combo.
    Basterebbe una cosa simile
    
    Private Sub NomeOptionButton_AfterUpdate()
        Dim sSQL As String
        Select Case Me!NomePtionButton.Value
            Case Is=0
                sSQL="SELECT IdPK, Campo1, Campo2, Campo3 From T1 OrderBy Campo1"
            Case Is=1
                sSQL="SELECT IdPK, Campo2, Campo1, Campo3 From T1 OrderBy Campo2"
            Case Is=2
                sSQL="SELECT IdPK, Campo3, Campo1, Campo2 From T1 OrderBy Campo3"       
         End Select
         Me!NomeCombo.RowSource=sSQL
    End Sub
    Questo ha un piccolo svantaggio, come vedi le colonne cambiano di posto, e, se nel tuo codice recuperi il valore puntando all'indice colonna cambiano i riferimenti... ci sono metodi per mantenere l'allineamento ma se serve ne vale la pena altrimenti no...!
  • Re: Filtrare i suggerimenti di una casella combinata in base ad un gruppo di opzioni

    @plixi2002 :

    2 soluzioni quasi in contemporanea ... cosa vuoi di più?
  • Re: Filtrare i suggerimenti di una casella combinata in base ad un gruppo di opzioni

    Si ma è la stessa concettualmente, ci siamo copiati...
    Evidenza che sia la soluzione giusta..?
  • Re: Filtrare i suggerimenti di una casella combinata in base ad un gruppo di opzioni

    Grazie mille ad entrambi, proverò il codice e vi farò sapere. Ma come ha detto Alex se concettualmente le soluzioni sono uguali evidentemente è la soluzione giusta
  • Re: Filtrare i suggerimenti di una casella combinata in base ad un gruppo di opzioni

    Scusate, vi interpello nuovamente per dei chiarimenti. Non sono pratico di access quindi volevo chiedervi se Il codice che mi avete scritto lo dovrei inserire come origine riga della casella combinata o come origine controllo della stessa casella combinata o magari da qualche altra parte? Volevo chiedervi anche se per selezionare il gruppo di opzioni devo selezionare la cornice che racchiude i pulsanti di opzioni? Scusate per le domande banali ma ripeto che non so usare tantissimo Access. Grazie
  • Re: Filtrare i suggerimenti di una casella combinata in base ad un gruppo di opzioni

    plixi2002 ha scritto:


    Scusate, vi interpello nuovamente per dei chiarimenti. Non sono pratico di access quindi volevo chiedervi se Il codice che mi avete scritto lo dovrei inserire come origine riga della casella combinata o come origine controllo della stessa casella combinata o magari da qualche altra parte? Volevo chiedervi anche se per selezionare il gruppo di opzioni devo selezionare la cornice che racchiude i pulsanti di opzioni? Scusate per le domande banali ma ripeto che non so usare tantissimo Access. Grazie
    Il codice suggerito da Alex lo devi inserire nella cornice del gruppo di opzioni
    Proprietà>Azioni>Dopo aggiornamento>Routine Evento
Devi accedere o registrarti per scrivere nel forum
9 risposte