Newsgroup: it.comp.lang.visual-basic
Titolo: Combo additem?

In due form ho 4 combo che provvedo a riempire
tramite una sub public in un modulo
La prima form si chiama form1 e contiene da combo1
a combo4, lo stesso nell'altra form. Il contenuto di
form1.combo1 e' uguale a form2.combo1
In una sola di queste combo additem inserisce due volte
i campi del recordset e non capisco perche'...
--la sub nel modulo--
If rsMod.RecordCount <> 0 Then
 rsMod.MoveLast
 rsMod.MoveFirst
 For x = 1 To rsMod.RecordCount
 Form1.Combo1.AddItem rsMod!Mode
 Form2.Combo1.AddItem rsMod!Mode
 rsMod.MoveNext
 Next x
End If
_____________________________________________
James Tiberius Kirk, matricola SC 937-076 CEC
  Nato a Riverside, nello Iowa, USA, Terra
            il 1277.1 (26/03/2233)

 End If
beh...
innanzitutto una domanda : perche usi un ciclo for..next ?
in questo modo sei costretto a sapere quanti record ci sono nella tabella,
quando con un
do..while potresti evitarlo
anyway, quando la richiami questa funzione ?
io la farei cosi' :
form1.combo1.Clear
form2.combo1.Clear
do while not rsMod.Eof
    Form1.Combo1.AddItem rsMod!Mode
    Form2.Combo1.AddItem rsMod!Mode
    rsMod.MoveNext
loop
Ciao
Enrico


Gia' provato, non cambia: quello che non capisco e' il
motivo per cui lo fa solo su una combobox azzolina.
Ho persino provato a cancellare dal db il recordset
ed a ricrearlo con visdata ma nisba.
Ho spulciato riga per riga tutto il codice (magari ho
dimenticato in giro un doppione) ma niente.


 End If
e in genere metterei un bell'
    with rsmod
    ...
    end with
te lo risparmi 4-5 volte almeno e si legge meglio
ciao, a.


Per poterti rispondere è necessario sapere l'evento (gli eventi) che
richiamano la sub e quali sono le 'correlazioni' fra le due form.
nonsonostatoio

 >
Ciao
Enrico

Ok, riscritto in questo modo e mi da sempre
lo stesso risultato, nella Form1 i campi vengono
caricati due volte mentre nella formCfg no.
E' questa la cosa strana, Form1 e' quella di avvio.
La sub si trova in un modulo .Bas e la chiamata
della stessa (che serve a popolare le combo) avviene
dalla Form1.Form_Load()
' with rsMod (ho provato con e senza with)
If Not (rsMod.EOF And rsMod.BOF) Then
 rsMod.MoveFirst
 Do While Not rsMod.EOF
 Form1.Combo1.AddItem rsMod!Mode
 FormCfg.Combo1.AddItem rsMod!Mode
 rsMod.MoveNext
 Loop
End If
'end with


 ' with rsMod (ho provato con e senza with)
il With è solo una convenzione con la quale puoi evitare, all'interno del
blocco,
di ripetere il nome dell'oggetto, in questo modo :
With rsMod
    If Not (.EOF And .BOF) Then
    .MoveFirst
    Do While Not .EOF
        Form1.Combo1.AddItem !Mode
        FormCfg.Combo1.AddItem !Mode
        .MoveNext
        Loop
    End If
End With
ma non cambia di una virgola il comportamento del codice... :-))
tornando al problema, il codice che usi è corretto
(tranne per il fatto che nei post non hai mai riportato la chiamata al
metodo Clear delle due Combo)
forse potresti mandarmi un po' di sorgenti, in  modo che possa dargli
un'occhiata. (in mail)
Ciao
Enrico

 un'occhiata. (in mail)
Mi sono scordato di dirlo ma ovviamente uso clear prima
di popolare il combo.
Non vorrei disturbarti, ti mando tutto il progetto?
L'ho appena iniziato, dbase e form vari sono meno di
150K in tutto.
