Newsgroup: it.comp.lang.visual-basic
Titolo: Dropdown di Combobox non si aggiorna vb6

Sto perdendo fiducia in me stesso...
In un form ho tre combobox standard(Area macroregionale - Regione
-Provincia) condizionate tra loro e popolate con un recordset ADO usando
il metodo Additem per il nome e il rispettivo codice impostato come
index(che è anche quello del db).Il meccanismo va, ma se decido di
cambiare uno dei valori delle combo Regione o Provincia e il numero
delle item è minore della precedente scelta (Es. se nella combo Regione
avevo scelto Lombardia ->nella combo Province avevo 9 provincie;Se
invece di Lombardia decido di mettere Val D'Aosta di provincie ne avrò 1
sola (Aosta),ma nella dropdown della combo Provincia sotto Aosta
continuano "allegramente" a comparire tutte le provincie della Lombardia
non selezionabili,ma solo come residuo grafico (infatti se faccio un
refresh del form scompaiono,ma non posso presentare una cosa così
raffazzonata :-(  ).Se avete già avuto problemi simili,vo prego,
aiutatemi non so più dove sbattere le corna!!!Ho visto che non è un
problema HW dato che su un altro PC la situazione è la stessa.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 refresh del form scompaiono,ma non posso presentare una cosa cosě
    Combo1.Clear
    Combo1.Refresh
prima di aggiungere i nuovi campi

 prima di aggiungere i nuovi campi
Grazie per la risposta!
Ci avevo già provato, ma il problema  rimane.Se l'area del dropdown
della scelta successiva alla prima ha un numero di item inferiore
continuano a vedersi sul form le voci precedenti
fino a quando non faccio il refresh del form.Mi sembra più che altro un
problema di mancato aggiornamento grafico del form.Ma non è capitato a
nessun altro questo problema usando le combo?
Se volete, e avete tempo, vi mando un pò di codice o cerco di spiegarmi
meglio,ma...AIUTATEMI !!! :-(


visto che a me non rimane nulla del vecchio, prova a postare il codice e
vediamo che succede!!!
Un'altra possibile soluzione è usare il DataCombo.
Hai provato???


 wrote in message
news:qJFga.26976$
i26.6...@news2.tin.it

Ciao Glauco, preferirei evitare di usare le datacombo per non
appesantire l'app e anche perchè mi sono adattato una routine
che mi popola  le combo in maniera semplice e veloce che riporto qui
sotto.
Come vedi ogni volta che viene richiama si pulisce e poi dal form
sebbene io abbia messo anche il refresh continuano a rimanere pezzi
della dropdown precedente.
----------
Public Sub PopolaOggetto(cn As Object, Oggetto As Object, ByVal
NomeTabella As String, _
ByVal NomeCampo_0 As String, ByVal NomeCampo_1 As String, Optional ByVal
WHERE As String, Optional ByVal OrderBy As String)
On Error GoTo GestioneErrori
 
    Oggetto.Clear
    Dim RsQuery As String
    RsQuery = "SELECT " & NomeCampo_0 & "," & NomeCampo_1 & "  FROM " &
NomeTabella & " " & WHERE & " " & OrderBy
 
 
    Dim rsPopola As ADODB.Recordset
    Set rsPopola = New ADODB.Recordset
    rsPopola.Open RsQuery, cn, adOpenForwardOnly, _
    adLockOptimistic, adCmdText
 
    If rsPopola.RecordCount = 0 Then Exit Sub
 
    rsPopola.MoveFirst
 
    Do Until rsPopola.EOF
 
        Oggetto.AddItem (rsPopola(0))
        Oggetto.ItemData(Oggetto.NewIndex) = (rsPopola(1))  
        rsPopola.MoveNext
 
    Loop
 
    rsPopola.Close
 
    Set rsPopola = Nothing
popola_exit:
    Exit Sub
 
GestioneErrori:
 
    Select Case Err.Number
 
        Case 381
 
        Resume Next
 
    Case Else
 
        MsgBox Err.Number & " " & Err.Description & " nella routine
popola "
 
    End Select
End Sub
-------------
Al caricamento del form mi connetto e popolo la prima combo che contiene
le aree macroregionali
Private Sub Form_Load()
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path &
"\login_db.mdb;Persist Security Info=False"
Call PopolaOggetto(cn, Combo3, "Area", "Nome_Area", "ID_Area")
Quando si va a scegliere la regione la combo si popola condizonata dalla
scelta
precedentemente fatta rispetto all'area macroregionale.Ho sfruttato
l'index della combo precedente
per il where
Private Sub Combo4_GotFocus()
 If Combo3.Text = "" Then
  MsgBox "Selezionare prima un'AREA !", vbExclamation, ""
  Me.Combo3.SetFocus
 Else
  Dim WHERE4 As String
  WHERE4 = " where Regioni.ID_AREA = " &
Combo3.ItemData(Combo3.ListIndex) & ""
  Call PopolaOggetto(cn, Combo4, "Regioni", "Nome_Reg", "ID_Reg",
WHERE4)
 End If
End Sub
Stesso discorso per la terza combo che rappresenta le provincie della
regione selezionata
Private Sub Combo5_GotFocus()
If Combo3.Text = "" Or Combo4.Text = "" Then
MsgBox "Selezionare prima un'AREA o una Regione !", vbExclamation,
"Avviso di Sistema"
Me.Combo3.SetFocus
Else
Dim WHERE5 As String
WHERE5 = " where Province.ID_Reg = " & Combo4.ItemData(Combo4.ListIndex)
& ""
Call PopolaOggetto(cn, Combo5, "Province", "Nome_Prov", "ID_Prov",
WHERE5)
End If
End Sub
Funziona tutto (ho fatto una prova equivalente con le listbox ed è tutto
ok),non ti ho messo le voci relative alla gestione di errori per
non appesantire;ma se rivado a scegliere un altra area-regione-provincia
che poi popola la combo successiva con un numero di item minori della
precedente scelta
mi rimangono visibili(solo come residuo grafico sul form)le item della
precedente dropdown
non coperte dalla nuova dropdown!!!!!!Praticamente non viene ridisegnata
correttamente la dropdown,come se rimanesse in memoria a video quella
precedente.


     RsQuery = "SELECT " & NomeCampo_0 & "," & NomeCampo_1 & "  FROM " &
metti un bel Oggetto.Refresh dopo il .clear
Ora dovrei provare con un database, ma stamani non ho tempo.
Tu intanto metti queste due semplici modifiche che però sono importanti e
riprova.
Fammi sapere.

Eh, diavolo di un Visual Basic 6 che non si
aggiorna con una dropdown di Combobox...
Magari però si aggiorna con una Lines di TextBox...
Ma l'ultima SP l'hai installata? <g>
Andrea

 Ma l'ultima SP l'hai installata? <g>
Si purtroppo.VB6 enterprise Eng SP5 su win2k prof SP2 ITA.


 Fammi sapere.
Ciao Glauco,
Ho messo  il byref e Oggetto.Refresh dopo il .clear dove mi hai
detto;purtroppo
non è cambiato nulla.Il problema delle vecchie dropdown a video è
rimasto :-((
Se vuoi ti posso mandare il mio db con le tabelle "incriminate se vuoi
fare velocemente
delle prove.
Grazie ancora per la disponibilità


 ha scritto nel messaggio
news:a6d9894cc0badd322d2...@mygate.mailgate.org...


 (Se non l'hai ancora risolto)
Ciao Glauco, non so se hai avuto modo di rivedere il mio problemino;
comunque dopo altre prove ho notato che se metto il codice per popolare
la
seconda e la terza combo nell'evento Dropdown invece che nel Gotfocus il
problema
non si presenta.Credo che il codice di riempimento nell'evento Gotfocus
non  fa funzionare correttamente le dropdown(non le pulisce e aggiorna)
perchè è un evento che non le riguarda dato che il Focus è intercettato
solo dalla casella di testo della combobox.L'evento dropdown è associato
solo al
menu a discesa e non alla casella di testo.Avrò scoperto sicuramente
l'acqua calda, ma
non mi ero mai reso perfettamente conto che le combobox avessero degli
eventi
così dissociati tra loro.
