Caselle combinate in cascata senza ordine di scelta

Anonimo
2020-11-15T10:19:34+00:00

Buongiorno a tutti,

tempo fa ho creato il mio primo database, ora però vorrei implementare un miglioramento:

In una maschera ho diversi controlli che costituiscono i criteri per un filtro, 7 di questi controlli sono caselle combinate, l'origine dati di queste caselle combinate sono delle tabelle collegate con relazioni uno a molti con la tabella che contiene i dati da filtrare; quello che vorrei fare ora è collegare in cascata queste 7 caselle combinate in modo che selezionando un valore in una, in tutte o solo in alcune di queste nelle altre in cui non ho ancora effettuato una scelta mi vengano mostrati solo i valori relativi alla scelta fatta precedentemente.

In poche parole vorrei implementare nella mia maschera un filtro simile a quello presente nelle varie colonne della visualizzazione "Foglio Dati" delle tabelle.

Mi scuso per la mia poca chiarezza, ma non sono esperto di VBA, SQL e database in generale.

Vi ringrazio in anticipo per il vostro aiuto.

Ciao,

Claudio

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

Risposta accettata dall'autore della domanda

domenico laurenza 9,900 Punti di reputazione Moderatore volontario
2020-11-18T16:26:27+00:00

Ciao Claudio,

sostituisci il codice Sql della query di origine dati della combo cboComponent con la seguente:

SELECT Nz([Components].[ID_component],0) AS Espr2, IIf(IsNull([component]),"<N/A>",[component]) AS Espr1

FROM Report LEFT JOIN Components ON Report.ID_component = Components.ID_component

WHERE (((Nz([ID_platform],0))=IIf([forms].[Search Report].[cboPlatform] Is Null,Nz([ID_platform],0),[forms].[Search Report].[cboPlatform])) AND ((Nz([ID_discipline],0))=IIf([forms].[Search Report].[cboDiscipline] Is Null,Nz([ID_discipline],0),[forms].[Search Report].[cboDiscipline])) AND ((Nz([ID_work_task],0))=IIf([forms].[Search Report].[cboWorktask] Is Null,Nz([ID_work_task],0),[forms].[Search Report].[cboWorktask])) AND ((Nz([ID_Analyst],0))=IIf([forms].[Search Report].[cboAnalyst] Is Null,Nz([ID_Analyst],0),[forms].[Search Report].[cboAnalyst])) AND ((Nz([ID_division],0))=IIf([forms].[Search Report].[cbodivision] Is Null,Nz([ID_division],0),[forms].[Search Report].[cbodivision])))

GROUP BY Nz([Components].[ID_component],0), IIf(IsNull([component]),"<N/A>",[component])

ORDER BY IIf(IsNull([component]),"<N/A>",[component]);

Quindi nella routine Private Sub btn_Search_Click() sostituisci il codice relativo al Component con:

 If Len(.cboComponent & vbNullString) > 0 Then

    If .cboComponent = 0 Then

       strFilter = strFilter & " and ID_component Is Null"

    Else

       strFilter = strFilter & " and ID_component=" & .cboComponent & ""

    End If

 End If

Facci sapere

Ciao Mimmo

La risposta è stata utile?

3 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

20 risposte aggiuntive

Ordina per: Più utili
  1. domenico laurenza 9,900 Punti di reputazione Moderatore volontario
    2020-11-18T09:46:40+00:00

    Ciao,

    Mi spiace ma non conosco testi su cui studiare. Prova a porre una nuova domanda per ottenere suggerimenti da altri.

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-11-17T18:15:55+00:00

    Ciao,

    scusa il ritardo ero fuori città.

    Al seguente link la soluzione (penso) ai campi Null.

    Vedrai che nelle query che sono origine dati delle combo utilizzo la funzione NZ per trasformare il valore dei campi Null a 0. Sia nel nome campo che nella condizione.

    Facci sapere

    Mimmo

    Grazie Mimmo,

    la tua soluzione funziona benissimo. Io come avrai capito non conosco il linguaggio SQL.

    Anzi se hai delle letture da consigliarmi ti ringrazio.

    Buona serata

    Claudio

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-11-16T21:48:44+00:00

    Forse potresti non ottenere alcuni valori in qualche combo perché nella tabella Esami non è presente alcun record con quel valore

    Mimmo

    Ciao Mimmo,

    in realtà i record con quei valori ci sono, credo che il problema sia legato ai dati con Null nella tabella Esami.

    Buona serata

    Claudio

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2020-11-16T21:27:09+00:00

    Ciao Claudio,

    Puoi creare uno stralcio del tuo Db e condividerlo eliminando o mascherando i dati sensibili.

    Potresti forse avere problemi con dati Null.

    Mimmo

    Ciao

    a questo link ho copiato una versione del mio database, ho provato a inserire le query solo a due caselle combinate come l'esempio che mi hai condiviso, ma avevi ragione, credo che il problema siano i valori Null della tabella Report.

    Buona serata

    Claudio

    La risposta è stata utile?

    0 commenti Nessun commento