COMBO BOX IMPOSTARE IL SECONDO VALORE

Anonimo
2017-02-12T22:02:28+00:00

Ciao a tutti

Ho una combo box con un elenco di valori"ANNI" 2017,2016,2015 ecc ecc.

Vorrei, quando seleziono il 2017 nella combo box , copiare in una casella di testo il valore precedente presente nella combo box =2016. 

Se seleziono il 2016 vorrei copiare il 2015 ecc ecc.

Ho provato anno-1 ma non va bene, perchè se non sono presenti valori mi proporrebbe sempre anno-1.

grazie

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

Anonimo
2017-02-12T22:58:22+00:00

ciao Christian_boy,

proviamo a prendere il primo anno da una query che ordina le righe in modo descrescente con un filtro che esclude gli anni superiori all'anno selezionato dalla combo :

SELECT TOP 1 T_anni.anni

FROM T_anni

WHERE T_anni.anni<[forms]![tuaForm]![TuaComboAnno]

ORDER BY T_anni.anni DESC;

salvi la query.

dopo aggiornamento della combo invochi:

me!tuaTextBoxAnnoPrecedente = DLookup("anni", "tuaQueryAnniPrecedenti")

oppure, assumendo che la combo mostri gli anni in ordine crescente,  dopo aggiornamento della tuaComboAnno, supponendo che la colonna associata sia quella che mostra l'anno :

Me.tuaTextBoxAnnoPrecedente = vbNullString

With Me.TuaComboAnno

    If .ListIndex > 0 Then

        Me.tuaTextBoxAnnoPrecedente = .ItemData(.ListIndex - 1)

    End If

End With

oppure supponendo che la colonna associata sia la 2, con una colonna associata diversa da quella che mostra l'anno:

Me.tuaTextBoxAnnoPrecedente = vbNullString

With Me.TuaComboAnno

    If .ListIndex > 0 Then

        Me.tuaTextBoxAnnoPrecedente = .Column(1, .ListIndex - 1)

    End If

End With

Facci sapere,

ciao, Sandro.

La risposta è stata utile?

0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-02-14T21:00:33+00:00

    ciao Cristian_boy,

    mah,

    [...]

    Magari non interessa la soluzione, solo per condividerla con chi ne avesse bisogno.

    [...]

    anche no, nel senso che ogni feedback è ben accetto, quindi grazie per essere tornato a riferire :-).

    Volendo essere precisi,

    [...]

     la funzione Me.comboAnno.itemdata(0)

    [...]

    non una funzione, ma itemData  è una proprietà e credo che impostando questo criterio :

    [...]

    Nella query della combo AnnoP ho inserito un criterio che prende il valore della combo anno -1.

    [...]

    In questo modo ho sempre l'anno precedente alla combo AnnoP Se è presente un solo anno, la combo AnnoP è vuota.

    [...]

     nello statement sql della comboBox AnnoP credo non serva, ma sia sufficiente un requery della comboBox anno dopo aggiornamento per mostrare il result set corretto.

    Private Sub Anno_AfterUpdate()

    Me.AnnoP.Requery

    End Sub

    In ogni caso non ho capito l'uso che fai itemData... :-((.

    Resto un po' perplesso sulla scelta, sempre se ho colto lo statement che hai impostato perché nel caso nell'ordine crescente degli anni ci fossero dei buchi (esempio 2010-2011-2013-2014, manca il 2012) non credo venga mostrato l'anno precedente, questo a meno che tu non intenda raggiungere esattamente questo obbiettivo.

    Precedente o successivo sono sempre relativi all'ordine scelto.

    Facci sapere!

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-02-14T11:05:12+00:00

    Ciao Sandro

    Ho provato la tua soluzione e ovviamente funziona perfettamente. 

    Come spesso mi capita quando stacchi e smetti di pensarci arriva la soluzione.

    Ho optato per questo problema in questo modo, il tuo è stato molto utile per un'altro caso.

    Nella maschera ho la combo anno non associata. Ho creato una copia chiamandola AnnoP.

    Nella query della combo AnnoP ho inserito un criterio che prende il valore della combo anno -1.

    Poi nell'aggiornamento della combo Anno ho inserito la funzione Me.comboAnno.itemdata(0)

    In questo modo ho sempre l'anno precedente alla combo AnnoP Se è presente un solo anno, la combo AnnoP è vuota.

    Magari non interessa la soluzione, solo per condividerla con chi ne avesse bisogno.

    La risposta è stata utile?

    0 commenti Nessun commento