Condividi tramite

sottomaschera filtrata

Anonimo
2016-03-29T18:01:12+00:00

Ho una maschera e sottomaschera.

Nella maschera una casella di riepilogo impostata a semplice mi permette di selezionare una lista di valori che vorrei passare ad un campo della sottomaschera (o meglio ad un campo della query della sottomaschera).

la casella di riepilogo si chiama "molti", mente il campo della query della sottomaschera si chiama "item_code"

Ho creato un bottone nella maschera dove ho messo il codice su click:

Private Sub Comando39_Click()

Dim strSQL As String

Dim varItm As Variant

If molti.ItemsSelected.Count = 0 Then

   MsgBox "Selezionare almeno un codice.", vbInformation

   Exit Sub

   For Each varItem In molti.ItemsSelected

  If molti.Selected(varItem) = True Then

    strSQL = strSQL & molti.ItemData(varItem) & ","

  End If

Next

   strSQL = Left(strSQL, Len(strSQL) - 1)

   Me.Filter = "item_code IN(" & strSQL & ")"

   Me.FilterOn = True

End If

End Sub

Quando premo il bottone se non ho selezionato nessun valore di molti il messaggio funziona, ma quando seleziono uno o piu' valori non succede niente. Come faccio a passare tali valori alla query della sottomaschera?

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

13 risposte

Ordina per: Più utili
  1. Anonimo
    2016-03-30T18:32:25+00:00

    Sandro Grazie e funziona per la visualizzazione ma non riesco a passare il valore del campo txtFilter ad una query.

    Cioè ti riporto solo la parte finale del codice:

    ......

     strSQL = strSQL & ",'" & molti.ItemData(varItem) & "'"

    Next

       strSQL = Mid$(strSQL, 2)

       Me.Sottomaschera_Query3.Form.Filter = "item_code IN(" & strSQL & ")"

       Me.Sottomaschera_Query3.Form.FilterOn = True

     Me.txtfilter = "IN (" & strSQL& ")"

    Il valore in grassetto compare nel campo della maschera come:

    IN ('11012','11068')

    e vorrei passarlo come parametro ad una query dove ho inserito nei criteri del campo item_code come:

    [Maschere]![M]![txtfilter]

    (M è il nome della maschera principale)

    Ma non funziona e non mi da nemmeno errore.

    Ma posso passare il valore del campo maschera txtFilter ad una query (che poi è l'origine di un'altra sottomaschera)

    Grazie per una tua riflessione.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-03-29T21:25:54+00:00

    ciao Danny,

    Grazie tutto risolto. Siete grandi.

    bene e grazie a te, il problema quale era...? così per curiosità personale :-)

    [...]

    Ma se volessi visualizzare il valore di strSQL in un campo della maschera principale

    [...]

    so che sono pesante ma, sempre controlli nelle forms e nei reports :-)

    [...]

    in un campo della maschera principale come si fa?

    [...]

    crea un controllo textbox non associato, per esempio lo chiami txtFilter ed assegni appena prima di end Sub,

    me.txtFilter=me.filter

    eseguendo il codice dalla main form questa volta puoi riferirti a me.

    non appena applichi il filtro lo vedi anche nella textBox txtFilter, effettivamente è comodo, così sai a che cosa lo hai applicato.

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-03-29T21:15:24+00:00

    Grazie tutto risolto. Siete grandi. Ma se volessi visualizzare il valore di strSQL in un campo della maschera principale come si fa?

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-03-29T18:55:49+00:00

    ciao DannyZuco,

    controlli nelle forms campi proprio di tabelle queries.

    la colonna associata è testo o un valore numerico? se testo devi modificare la costruzione della strSQL passando il valore tra apici.

    Come dice Mimmo devi poi filtrare la subForm e non la form.

    io rivedrei il codice in questo modo :

    Private Sub Comando39_Click()

    Dim strSQL As String

    Dim varItm As Variant

    If molti.ItemsSelected.Count = 0 Then

       vba.MsgBox "Selezionare almeno un codice.", vbInformation,"Informazione"

       Exit Sub

    end if

       For Each varItem In molti.ItemsSelected

            strSQL = strSQL & "," & molti.ItemData(varItem) 

       Next

       strSQL = mid$(strSQL, 2) 

       Me.sottomaschera.form.Filter = "item_code IN(" & strSQL & ")"   '<<<< personalizza la sottomaschera

        Me.sottomaschera.form.FilterOn = True                                        '<<<< personalizza la sottomaschera

    End Sub

    se testo invece : 

            strSQL = strSQL & ",'" & molti.ItemData(varItem) & "'"

    su scaricamento della form :

    Private Sub Form_Unload(Cancel As Integer)

    Me.Filter = ""

    Me.FilterOn = False

    End Sub

    Facci sapere!

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2016-03-29T18:15:25+00:00

    Ciao,

    con :

    Me.Filter = "item_code IN(" & strSQL & ")"

    Me.FilterOn = True

    stai applicando il filtro alla maschera corrente, la Main, per applicarlo alla sotto maschera devi utilizzare:

    Me.nomeSottoMaschera.form.Filter = .....

    Me.nomeSottoMaschera.form.FilterOn = .....

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento