Revers dei record su casella di riepilogo

di il
6 risposte

Revers dei record su casella di riepilogo

Oggi ho un problema di questo tipo:
Ho una mascherina con una casella di riepilogo dove sono elencati i nomi di persone destinatarie di una email.
Ad ogni click un destinatario finirà in una lista parallela che sarà utilizzata per caricare nuovi nominativi entranti ed escludere invece quelli già presenti.
Quando però l'operatore effettua più selezioni di nomi, probabilmente andando su e giù per l'elenco, non si ricorda più se un nominativo è stato già inserito oppure non ancora.
Da quì nasce la necessità di mantenere le selezioni già fatte con una colorazione alternativa e di riportarle alla colorazione di default qualora il destinatario venisse invece rilasciato con un nuovo click.
Il codice all'uscita, si occuperà di costruire una stringa che poi sarà passata ad Outlook.
Con un pò di pazienza io saprei gestire tutto, tranne il cambio di colorazione sul record corrente.
La mia domanda è se qualcuno di buon cuore potesse darmi una mano d'aiuto.

saluti
antonio cuomo

6 Risposte

  • Re: Revers dei record su casella di riepilogo

    A mio avviso dovresti invece usare l'interfaccia GUI standard che di norma è prevista in questi casi, ovvero:
    avere 2 liste in cui togli dalla prima per aggiungere allla seconda, e viceversa.

    L'aggiunta da lista1 a lista2 viene fatta sia con un pulsante > che con un doppio clic; idem per la rimozione da lista2 a lista1

    Poi, se serve, può esservi anche un pulsante >> per aggiungere tutto, ed uno << per rimuovere tutto.

    In questo modo è matematicamente impossibile per l'operatore sbagliare.

  • Re: Revers dei record su casella di riepilogo

    Ti dirò, Gibra, la tua idea non è malvagia. Mi piace.
    Apporterò una piccola modifica al concetto e cercherò di implementarla.
    Ti dispiace se lo impostiamo un pò insieme questo lavoro?
    Mentre la mia prima lista piena non è altro che una tabella filtrata e caricata in una casella di riepilogo, su come costruire la seconda ho qualche incertezza: secondo te:
    - se creo una seconda casella di riepilogo vuota, quale istruzione dovrei utilizzare per aggiungere i record selezionati dalla prima?
    - quale istruzione poi per poterli cancellare dalla seconda?

    Ciò nonostante mi piacerebbe lo stesso, se a qualcuno è noto, come si fa a flaggare una voce di un elenco in una casella di riepilogo dando una colorazione diversa e alternativa ad ogni click.

    Ciao Gibra e a tutti.
    antonio cuomo
  • Re: Revers dei record su casella di riepilogo

    Sono rimasto al palo.
    Non riesco a copiare l'intera lista di una casella di riepilogo in un'altra lista vuota.
    E' da premettere che la lista sorgente non ha nessuna voce selezionata ma l'operazione di trasferimento deve avvenire sulla pressione di un pulsante.
    Pensavo di selezionare tutti insieme i record ma non ho trovato la proprietà per la casella di Riepilogo che mi consentisse di farlo.
    Ne tanto meno quella che mi fa skippare da una riga alla successiva e di selezionarla all'interno di un ciclo For.
    Sto sbagliando metodo?
    Mi sapreste consigliare meglio?

    grazie antonio
  • Re: Revers dei record su casella di riepilogo

    Mi sembra veramente strano tu non riesca a ciclare gli ITEMS di una Lista e scriverli nell'altra...
    Ovviamente la Lista di DESTINAZIONE deve essere impostata con RowSourceType(Tipo Origine Riga) ad ElencoValori...

    Se metti questo codice in un Modulo e lo chiami passando i 2 controlli Origine e Destinazione... funziona.
    
    Private Sub MoveAllFromTo(ctlFrom As Access.ListBox, ctlTo As Access.ListBox)
        Dim i As Integer
        
        Dim strText As String
        ctlTo.RowSource=vbNullstring
        With ctlFrom
            For i = 0 To .ListCount - 1
                strText = .Column(0, i)
    
                ctlTo.AddItem strText
    
                strText = vbNullString
            Next
        End With
    End Sub
    Se vuoi spostare solo i Selezionati
    
    Private Sub MoveSelectedFromTo(ctlFrom As Access.ListBox, ctlTo As Access.ListBox)
        Dim varItem     As Variant
        Dim strText     As String
        With ctlFrom
            For Each varItem In .ItemsSelected
                strText = .Column(0, varItem)
                If Instr(strText) = 0 Then
                    ctlTo.AddItem strText
                End If
                strText = vbNullString
            Next
        End With
    End Sub
  • Re: Revers dei record su casella di riepilogo

    Grazie Alex, non so per quale motivo, ero convinto che le Column fosse una lista monodimensionale e non una matrice che contenesse anche la riga.

    Va tutto perfettamente

    ciao
  • Re: Revers dei record su casella di riepilogo

    antocuomo ha scritto:


    Grazie Alex, non so per quale motivo, ero convinto che le Column fosse una lista monodimensionale e non una matrice che contenesse anche la riga.

    Va tutto perfettamente

    ciao
    Si puoi essere convinto di tutto quello che vuoi, ma se ogni volta le tue convinzioni dimostrano che NON LEGGI LA GUIDA... non avrai più alcun aiuto, da parte mia almeno.
Devi accedere o registrarti per scrivere nel forum
6 risposte