Newsgroup: it.comp.lang.visual-basic
Titolo: Aggiornamento TDBGRID in un ciclo

allora, premetto che sono alle prime armi con Vb e le TDBGRID della
aspex (versione demo), il mio problema è il seguente
Ho una TDBGRID che visualizza il contenuto di un file .dbf (circa 500
record)
devo modificare il campo di una colonna della tdbgrid con il valore
che l'utente ha inserito in un form vorrei che le righe venissero
scandite ad una ad una man mano che vengono modificate....il codice è
il seguente
TDB1(0).SetFocus
  TDB1(0).MoveFirst
  'scorro tutta la grid aggiornando i campi coi valori immessi
dall'utente
  Do Until rs_tutti.EOF
    rs_tutti.Fields("LBBASE") = Text2(1).Text
    rs_tutti.Fields("LBALTE") = Text3(1).Text
    rs_tutti.Fields("LBSPES") = Text4(1).Text
    If (Check1.Value = 1) Then rs_tutti.Fields("LBIMBA") =
Text5(1).Text
    rs_tutti.Update
    rs_tutti.MoveNext
    If Not TDB1(0).EOF Then
    TDB1(0).MoveNext
    TDB1(0).RefreshRow
    TDB1(0).Update
    Me.Refresh
    End If
  Loop
  ADOdc1.Refresh
  TDB1(0).Refresh
il problema è che il ciclo di scansione sulla TDB1(0) è più veloce
rispetto all'udate del recordset..il risultato è che il cursore si
muove sulla griglia ma una volta arrivato sull'ultimo record deve
attendere il termine del rs.update!!! in pratica dovrei sincronizzare
il move sulla grid col termine dell'update del record precedente.
Un grazie in anticipo

 ha scritto nel messaggio
news:a8b48e1c.02102...@posting.google.com...
Cut
son li svantaggi del lavorare Bound!
le Apex(ComponentOne) poi....brrrrrr......
devi aspettare l'update per farne un altro.
(può darsi che le apex abbiano un evento.....
Ma non potresti aggiornare la visualizzazione al termine dell'update?
fai comparire la clessidra,
al termine dell'update,
aggiorni il recordset,
per maggiore tranquillità fai anche un refresh della griglia??!!
mi par di capire poi...almeno dall'esempio...che dai a tutti i campi dei
valori uguali.
Hai considerato di perder poco tempo e di usare ad esempio una execute
del tipo .....
UPDATE Test SET Test.CAP = "12345"
WHERE (((Test.Città)="Buenos Aires"));
 ad esempio???
e poi fare un bel refresh del tutto?

...

ok, sono d'accordo che con SQL tutto sarebbe molto + veloce ma a me
interessava proprio realizzare l'effetto di scorrimento sulla griglia
man mano che il record veniva modificato....diciamo che si tratta di
una specie di addestramento in vista di possibili programmi futuri.

 una specie di addestramento in vista di possibili programmi futuri.
allora il codice l'ho qui davanti a me...e funge...
ora vediamo come te lo spiego.....senza darti la pappa scodellata!


ALLORA
usiamo (bleah)...un datacontrol e una true db grid....lascia stare ADO e
come db usiamo il Northwind di Access
la mia true č la 5...mi fanno abbastanza schifo le true ma insomma!
Un form Una griglia
Un datacontrol (quello standard quindi DAO)
Connetti il db ad access e collegalo col datasource alla griglia
falli mostrare la tabella clienti
andremo a modificare il cap
Ok allora mettici anche un pulsante ....premendo...scateneremo il tutto!
cosa scateneremo?...ricorda ce la griglia č bound....quindi vive in simbiosi
col datacontrol...č quello che devi modificare! e siccome č bound....la
griglia ne risentirą!
nel command_click che mettiamo?
TDB.SetFocus
  TDB.MoveFirst
  'scorro tutta la grid
  Data1.Recordset.MoveFirst
questo lo capisci no? ho detto al datacontrol di andare al primo record
la griglia lo segue!
 Do
    Data1.Recordset.Edit
    Data1.Recordset("CAP") = 1002
    Data1.Recordset.Update
qui ci sei ancora? edit di un  campo e update
la griglia che fa?....segue.....
per vederla rallenta il tutto
   For n = 1 To 1000000
    Next
    DoEvents
ok adesso al nuovo record
 Data1.Recordset.MoveNext
bene adesso rimane solo da controllare il ciclo
 Loop Until Data1.Recordset.EOF
fatto! la mia griglia non ha refresh row
Considera perņ che meno "effetti" dai al cliente meglio č....vogliono usare
il programma non guardare quanto č carino o li effetti che ha!!