Newsgroup: it.comp.lang.visual-basic
Titolo: problemi con aggiornamento recordset ado

ciao a tutti.
ho un problema con un maledetto rs che non viene aggiornato subito.
premetto che sto aggiungendo dei dati in una lista e cio' che avviene č.....
....aggiungo il primo record,la lista rimane vuota....
....aggiungo il secondo record,compaiono tutte e due! :-(
Vi allego il codice che utilizzo,ma faccio una postilla:ho utilizzato la
stessa sub con Msde (ed Ado) e Sql Server (ed Ado) e per magio....funziona!
Ora uso Ado e Access 2000.
Public Sub Aggiorna_Mod()
    Dim rsMod As ADODB.Recordset
    Dim sSql As String, sCod As String, sDescriMod As String
    sCod = dcCli.Recordset![CodCliente]
    sSql = "select * from ModuliCli where [CodCliente]='" & sCod & "' order
by CodCliente"
    Set rsMod = New ADODB.Recordset
    rsMod.Open sSql, MyDb, adOpenKeyset, adLockOptimistic    <---ho dei
dubbi qui...a qs. punto!
    LstModuli.Clear
    With rsMod
        If Not (.EOF And .BOF) Then
            .MoveFirst
            While Not .EOF
                ' recupero la descrizione
                dcModuli.Recordset.Find "[CodModulo]='" & ![CodModulo] &
"'", , , 1
                If Not .EOF Then sDescriMod =
dcModuli.Recordset![DescriModulo] Else sDescriMod = ""
                LstModuli.AddItem sDescriMod
                LstModuli.ItemData(LstModuli.NewIndex) = ![IdModulo]
                .MoveNext
            Wend
        End If
    End With
    Set rsMod = Nothing
End Sub
provando a far visualizzare il recordcount...cose spettacolari...prima a
0,poi direttamente a 2!
Mi sapete aiutare?
Grazie
Beba

 ciao a tutti.
CUT
A parte che non ho capito ....devi riempire una lista di valori no?
Te ne frega della velocità no? Aprilo readOnly che te frega del dynamic!
tra l'altro chiudi il rs..... serve solo a riempire list o combo che sia!
ti posto un pezzettino di codice dell'app su cui sto lavorando........ basta
cambiare la SQL(questo riempie un combo...) e impostare ItemData
....................
'Posizione aziendale
Tsql = "SELECT Posizione From Clienti GROUP BY Posizione ORDER BY Posizione"
Set rsTemp = ApreRec(Tsql, cnCli, adOpenKeyset, adLockReadOnly)
If rsTemp.BOF Then
    Me.cmbPosAz.Clear
    rsTemp.Close
Else
    rsTemp.MoveFirst
    Do
        Me.cmbPosAz.AddItem Trim(rsTemp("Posizione") & "")
        rsTemp.MoveNext
    Loop Until rsTemp.EOF
    rsTemp.Close
End If
se ne fai più di uno di riempimenti...non fa mai male...alla fine della
procedura..........
'Si distrugge rstemp
If rsTemp.State = adStateOpen Then
    rsTemp.Close
End If
Set rsTemp = Nothing
.........................
Tra l'altro è la forza dell'abitudine....sarebbe più indicato un cursore
forwardonly...per riempire liste !

 0,poi direttamente a 2!
Il recordcount del recordset?

infatti della velocità non me ne frega!
non sara' solo readonly,posso eliminare e fare modificare i dati della
listbox stessa.
cambiando anche il cursore,come forwardonly o dynamic la situazione non
cambia...ma il problema sta veramente qui,anche perchè succede un'altra
cosa....
facendo il debug da inizio sub,funziona tutto perfettamente,quindi viene
aggiunto nella lista il primo elemento,il secondo,e via dicendo.
ponendo il punto di interruzione dopo il set rs NON va piu'! :-(
non capisco....stesso codice con sql funge,con access no??
beba

il refresh e il doevents non cambia.
sě,č una listbox...non l'avevo detto?
cambiando anche il cursore,come forwardonly o dynamic la situazione non
cambia...ma il problema sta veramente qui,anche perchč succede un'altra
cosa....
facendo il debug da inizio sub,funziona tutto perfettamente,quindi viene
aggiunto nella lista il primo elemento,il secondo,e via dicendo.
ponendo il punto di interruzione dopo il set rs NON va piu'! :-(
provero' a usare 2 rs....
sě,la find funziona,č solo per recuperare la descrizione,anche senza quella
parte ma facendo l'additem solo del CodModulo non si rinfresca.
Sě,il recordcount del recordset.Il dc lo utilizzo solo per fare la select
iniziale,io lavoro sul rs associato alla listbox.
beba

 ha scritto nel messaggio
news:zNfi9.112695$ub2.2...@news1.tin.it...
Abbi pazienza eh!
ma io ho provato a tirar dentro il pezzettino di codice....ma non capisco
molte cose
Capisco che forse eri stanca e ti sei un po incasinata!...o che non è codice
tuo!...o che ci son ragioni sconosciute che non ci hai detto!
Che senso ha avere un recordset ed un datacontrol?
Ma poi che senso ha avere 2 recordset...
Cicli su un recordset e per ogni ciclo cerchi su un altro recordset se ci
sono dati che si riferiscono ad un cliente! I puristi inorridiscono!
MA ALLORA perchè non ti fai una bella query? la chiave comune non è
CodModulo e probabilmente Cliente no?
Se non la sai fare al volo perchè ti incasini con Inner Join etc etc fattela
fare da access e copia l'sql.... con un unica query non risolvi il problema?
Nota che per me è una soluzione migliore.....anche se ti funziona sotto
altri DB è comunque fatica sprecata quella che hai fatto!
Altra cosa ....la puoi lo stesso aprire e riempire velocemente ReadOnly la
tua lista!
quando si tratta di aggiungere togliere modificare non usare ADO usa SQL che
è anche più veloce!....non hai ItemData per individuare in maniera univoca
il record cliccato ???
Bye Girl!

questa sub la richiamo per aggiornare i moduli di un cliente!
ho la tabella clienti,legata a una movmoduli (in cui segnalo solo il cod.
cli e il cod. mod. di riferimento) ed una tabella moduli (cod+descri).
devo solo mostrare i dati della mov moduli! :-(
il dc č utilizzato in tutto il progetto,il rs me lo tengo temporaneo per far
sto lavoro.....:-((((
scusa l'ignoranza...ma non capisco come cavolo impostare sto rs!
bye