Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,811

    vb6 combobox(ricorsioni)

    salve a tutti
    ho un dubbio
    tutti mi dicono che per selezionare un elemnto da una
    combobox invce di fare combo.listindex = valore
    mi consigliano di fare un ciclo for es:
    codice:
    for i = 0 to me.combo.listcount
       if me.comboi.temdata(me.combo.listcount)= valore
            me.combo.listindex = i
       end if
    next i
    il motivo è per evitare ricorsioni

    è questo il quesito!
    di che ricorsioni si parla?
    anche perche se io faccio semplicemnte combo.listindex = valore
    funziona lo stesso!!

    grazize a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    118
    Rst.Open stringa sql, connessione
    ---Do While Not Rst.EOF
    --------Lista.AddItem Rst(0).Value
    --------Lista.ItemData(Lista.NewIndex) = Rst(1).Value
    --------Rst.MoveNext
    ---Loop
    Rst.Close

    quando inserisci degli elementi nella combo puoi
    contemporaneamente inserire in un elenco parallelo e non visibile chiamato itemdata un altro valore (solo numerico per sfortuna)
    il quale puo essere perchè no l'id di una tabella.
    Così quando selezioni un elemento oltre che al valore 'visibile'
    avrai a disposizione quest'altro valore che nel caso sia un id univoco dell'elemanto selezionato puoi dedurne i vantaggi.
    Se è tutto chiaro meglio altrimenti fammi sapere è cercherò di essere più chiaro.
    ciao.

  3. #3
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,811
    no scusa ma nn ho capito
    ahm:
    ecco io la combo la riempio esattamente come hai detto tu.
    mi hai parlato di id unico...
    e allora perche fare un ciclo, se ne esiste solo uno di quell'elemento?
    (beh certo a volte nn metto l'id ma un altro valore numerico )

    il fatto è che se faccio combo.listindex = valore
    mi funziona sempre!!!!

    scusami tanto ma è ora che devo capire

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    118
    Allora:
    Se a te serve semplicemente che la combo si posizioni
    su un elemento precisato di cui conosci l'esatta
    posizione il sistema che usi va bene,però ......devi conoscere a priori la posizione
    della voce che cerchi e nel caso di un elenco in continuo aggiornamento non è
    prorprio possibile.


    La listindex determina esattamente la posizione dell'elemento
    nella combo.

    Quando selezioni un elemento hai quindi a disposizione il valore
    che hai inserito con il metodo add e la posizione nella combo.

    Itemdata è come una listindex parallela a quella già esistente
    alla quale però puoi associare dei tuoi valori(che altrimenti sarebbero uguali a
    quelli della listindex).

    Quindi risulta comodo e vantaggioso riempire questa lista con i valori
    dell'id dell'elemento(se esiste).

    Selezionando un elemento dalla combo avrai così a disposizione
    un ulteriore valore che sarà appunto quello dell'itemdata il quale nell'esempio citato
    avrebbe valore = all'id.

    Ne deduci che se ad esempio devi eseguire una query per cercare dettagli di un elemento
    selezionato è meglio e più sicuro (CIOè HAI LA CERTEZZA DELL'UNICITA') perchè hai
    subito a disposizione l'id invece dalla posizione o del testo inserito.

    Pensa solo a una combo con nome e cognome,se devi fare una sql .......
    ....where nome ='bla.bla' and cognome = 'blo.blo '...devi prima scomporre
    la stringa ed essere sicuro dello 'standard' di inserimento da parte di un eventuale
    utente 'schiacciabottoni'.

    Nella combo cosi vedrai solo il nome e cognome e non id o altre porcherie.

    Rst.Open stringa sql, connessione
    ---Do While Not Rst.EOF
    --------Lista.AddItem Rst(campo con ad esempio il cognome).Value
    --------Lista.ItemData(Lista.NewIndex) = Rst(campo dove hai l'id).Value
    --------Rst.MoveNext
    ---Loop
    Rst.Close


    Il processo funziona a ritroso,cioè se conosci l'id ti posizioni sull'elemento
    che ha l'itemdata di quel valore.

    Questo è il motivo perchè è consigliabile, dove possibile,al momento dell'inserimento di
    items nella combo inserire anche l'itemdata.

    n.b. -il valore dell'itemdata può essere solo numerico.

    n.b. bis -l'itemdata è presente anche nella list ed altri oggetti 'similari'.

    Spero di essere stato un pò più chiaro però non farti scrupoli a chiedere ulteriori
    delucidazioni o precisazioni per ogni dubbio.

    Dopotutto il forum serve SOLO per questo.

    ciao.

  5. #5
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,811
    grazie ora mi metto a fare prove
    per provare:tongue:

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.