Maschera con selezione multipla e sottomaschera

di il
4 risposte

Maschera con selezione multipla e sottomaschera

Ciao a tutti,

avrei bisogno di un aiuto concettuale.

Partendo da una situazione abbastanza tipica in cui le tabelle "ordini" e “ordini_righe”  sono gestite con la relativa struttura maschera/sottomaschera si sa che con la selezione di un record della maschera principale si visualizzano nella sottomaschera le righe collegate con la relazione 1-M.

A differenza di quanto sopra avrei necessità nella maschera principale di selezionare, mediante check box, più ordini e visualizzare nella sottomaschera tutte le righe di tutti gli ordini selezionati.

Come si può ottenere questa situazione?

A me è venuto in mente di aggiungere in una ulteriore tabella le righe selezionate con il checkbox  tramite query di accodamento ed eliminare le righe che poi eventualmente si deselezionano tramite query di eliminazione, è sbagliato?

Grazie molte per il supporto.

4 Risposte

  • Re: Maschera con selezione multipla e sottomaschera

    Ti suggerirei di tener distinte le 2 cose… ovvero con Maschera differente.

    Nella Maschera principale metti una ListBox a selezione multipla Estesa, e realizzi una Query(sulle righe Ordine) nella quale metti come Criterio 

    SELECT * FROM tRigheOrdine WHERE IDOrdine IN(1,6,7,16,34) ORDER BY IDOrdine

    In questo modo nella SubForm visualizzi tutte le Righe relative agli ordini, volendo se usi la Formattazione Condizionale puoi colorare le righe differenziando l'ordine…

  • Re: Maschera con selezione multipla e sottomaschera

    Grazie Alex per la risposta celere,

    non ho mai usato la ListBox ma in questo caso mi sembra appropriata. Immagino che i numeri dentro le parentesi siano l'indice delle voci selezionate nella ListBox, ci sarà certamente un modo per individuare le righe selezionate ed usarle nella clausola IN.

    Grazie molte per il suggerimento.

  • Re: Maschera con selezione multipla e sottomaschera

    Basta ciclare la collection ITRMSELECTED ed ottieni il valore della colonna associata delle sole righe selezionate usixuna stringa in concatenazione poi costruisci la stringa sql.

    Dim ctl AS Access.ListBox
    Dim sSQL AS String
    Dim varItem AS Variant
    
    Set ctl = Me!TuaListbox
    
    If ctl.ItemsSelected.Count > 0 Then
        For Each varItem In ctl.ItemsSelected
            sSQL = sSQL & ctl.ItemData(varItem) & ","
        Next
        'Tolgo l'ultima virgola
        sSQL=Mid$(sSQL,1,LEN(sSQL)-1)
        sSQL="IDNomecampo IN (" & sSQL & ")"
    Else
        Msgbox "nessun item selezionato"
        Exit sub
    End
    'Qui hai la stringa con la clausola IN
    'aggiungi eventuali spazio prima e/o dopo se serve
  • Re: Maschera con selezione multipla e sottomaschera

    E grazie ancora!!!

    Ci stavo lavorando quando questo tuo codice arriva puntualissimo e graditissimo!

    Saluti

Devi accedere o registrarti per scrivere nel forum
4 risposte