Newsgroup: it.comp.lang.visual-basic
Titolo: VB e lentezza update DB

Ciao!
Per lavor e hobby (!) uso VB6pro.
Mi trovo spesso a dover assegnare un identificativo progressivo ai record
di una tabella Access sulla base di un determinato ordinamento.
Dopo aver creato un DataEnvironment piu' o meno faccio cosi':
-------------------------------------
de.rsTest.Open
de.rsTest.Sort = "cognome,nome"
progr = 1
While Not de.rsTest.EOF
  de.rsTest!ID = progr
  'de.rsTest.Update  (???)
  de.rsTest.MoveNext
  progr = progr + 1
  DoEvents
Wend
de.rsTest.Close
-------------------------------------
La lentezza e' esasperante... una procedurina simile in VBA all'interno
del database stesso e lanciata da Access impiega 1-2 secondi con qualche
migliaia di records...
Dove sbaglio? Voi come fate? (non mi dite di utilizza un
contatore-automatico-autoincrementante, l'ordine devo farlo post creazione
db da codice)
Grazie mille!
m'
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Dove sbaglio?
Innanzitutto nell'utilizzare un data-environment inutile anzichč
direttamente un recordset.
In secondo luogo a cosa ti serve una cosa del genere?
Ciao
--
Math Parser, VB.Framework : 
http://www.neodatatype.net
Sito Comune               : 
http://www.it-lang-vb.net

 di una tabella Access sulla base di un determinato ordinamento.
Dai uno sguardo al post sotto
[.NET] Dataset e campi ad autoincremento
giuseppeD

 > -------------------------------------
io poco ho capito cosa vorresti fare, ma vuoi simulare un numero progressivo
che poi sarebbe id quando esiste già il tipo contatore?
mi scuso se ho capito male
--
Ciao
Alfredo
Vb6+Sp5+Win2k

 giuseppeD
Ho letto grazie, ma il mio problema e' che io ricevo il database gia'
caricato e devo numerare con un mio ID progressivo aggiungendo un campo
alla tabella.
Ciao,


 3 ! MARIO
..ovvero... ordinare e numerare (per stampa.
Ciao e grazie!


 In secondo luogo a cosa ti serve una cosa del genere?
Devo fare delle stampe seguendo un certo ordine e tenere traccia
dell'ordine stesso (ristampe ecc...).
Ciao e grazie!


 alla tabella.
Non riesci ad eseguire un   SELECT   MAX(NomeCampo) ?
giuseppeD

 ha scritto nel messaggio
news:bgl7d0$lhs$1...@news.newsland.it...


 ..ovvero... ordinare e numerare (per stampa.
Ah, ecco. Per la stampa.
Cosa utilizzi per stampare?
Se ad es. usi cristal report puoi lasciare a lui il compito di numerare i
record.
Con DataReport non so.
Comunque se non ne esci prova a usare solo il recordset, togliere il
DoEvents che non serve a una cippa se non a rallentare.
Un loop come quello indicato dovrebbe essere un fulmine.



No, così non se ne esce.
Ci avevo già provato io tempo fa anche chiedendo al NG, ma niente da fare.


 Un loop come quello indicato dovrebbe essere un fulmine.
Provo il recordset... il DoEvents mi serve per dare respiro
all'applicazione... il sistema non si degna di aggiornare il form e
l'utente crede sia bloccata l'applicazione...
Grazie per ora... se ci sono altri consigli... :)
Ciao,


L'id ti serve solo per la stampa o devi anche memorizzarlo nella tabella?

mi spiego meglio: hai la necessitą di memorizzarlo o nell'esempio lo
facevi perchč non avevi altro modo per far apparire un'id nelle
stampe?

 l'utente crede sia bloccata l'applicazione...
Per questo e' sufficiente un refresh della form, e in ogni caso, Refresh o
DoEvents che tu voglia usare, non eseguirlo ad ogni iterazione ma solo ogni
tot, con "tot" nell'ordine di 100 o giu' di li'.
Magari a occhio puo' non sembrare, ma nell'economia complessiva qualche
migliaio di 'DoEvents' in meno fanno...
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 ha scritto nel messaggio
news:bgll5l$h81$1...@news.newsland.it...
Se add un campo contatore, numera progressivamente Jet. Ottenuta la sequenza
elimini il contatore e rimane un campo che puoi Update da VB
giuseppeD

 ha scritto nel messaggio
news:bgl7d0$lhs$1...@news.newsland.it...
