Newsgroup: it.comp.lang.visual-basic
Titolo: [HELP] DAO e tempi di risposta....

salve a tutti...
ho un piccolo problema  (si fa per dire...) con un mdb a cui accedo
con DAO (vb6sp5+dao3.51),
segue il codice 'semplificato' ....
    tmpSql = "select campo1 from tmpgen where campo3='aabbcc'"
    Set tmpRst = MioDB.OpenRecordset(tmpSql)
    If tmpRst.RecordCount Then
        tmpRst.MoveLast: tmpRst.MoveFirst
        Do While tmpRst.EOF = False
           ' qui eseguo altre operazioni su un' ALTRA tabella in
relazione al campo1 di tmpgen
            tmpRst.MoveNext
        Loop
        tmpRst.Close
    End If
    '
    tmpSql = "UPDATE tmpgen INNER JOIN ecc... ecc...
    MioDB.Execute (tmpSql)
     il punto e' che non viene eseguito l'ultimo update, se pero'
metto una pausa (ho provato 10 sec solo) tutto funziona....
    QUINDI la domanda e':
    come faccio a sapere se la tabella tmpgen e' pronta a ricevere
l'ultimo update?
Ah dimenticavo... il db e' in locale... figuriamoci se il db era in
rete!! (ma forse era  meglio...)
PaoloS
:-(

 ha scritto nel messaggio
news:ba04ka$o4ubs$1...@ID-106271.news.dfncis.de...

Strano che hai dei problemi con *DAO*?
Per quanto ne sò *io* ,a quanto pare ne sò proprio poco, potresti verificare
gli ultimi record modificati,aggiornati ec... con la proprietà
RecordsAffected (cercala su msdn meglio se fai F1 su Execute) .
Ti consiglio di dare una sbirciata anche al concetto di "transazioni" trovi
il link sulla pagina msdn di cui sopra oppure guarda BeginTrans,CommitTrans
P.s.da profano penso che un refresh non serva a nulla in questi casi.
Ciao
Alessandro

 "transazioni" trovi il link sulla pagina msdn di cui sopra oppure
non sapevo che DAO supportasse le transazioni...

 metto una pausa (ho provato 10 sec solo) tutto funziona....
Mi son venuti in mente post sul ritardo di 3/5 secondi, ma mi pare
riguardassero VB5 o vecchie versioni di Jet, o addirittura i controlli
Data-bound, non ricordo assolutamente, nè saprei cosa/come cercare...
Hai provato a chiudere il/i recordset prima dell'Update?


si, se guardi bene appena dopo il LOOP c'e' il tmpRst.Close....
mmmmmm....
mi sa che e' la volta buona che abbandono DAO per.... per??

cut-cut
cmq, visto che probabilmente non esiste rimedio, se non 'inventando'
qualche procedura da '200' righe di codice, lo risolvo memorizzando il
valore che mi serve in una variabile, ... pero' da oggi in poi i miei
prossimi programmi solo con altro database, e a proposito....
ma e' vero che msde non e' piu' liberamente distribuibile??? dove l'ho
letto?
PaoloS

 ! 

Vai qui
http://www.microsoft.com/sql/techinfo/development/2000/MSDE2000.asp

 mi sa che e' la volta buona che abbandono DAO per.... per??
MSDE, non ci sono molte alternative. Con i relativi problemi di
riconversione...

 metto una pausa (ho provato 10 sec solo) tutto funziona....
=========
A volte funziona con questo:
' Chiama il metodo Idle per rilasciare blocchi non
 ' necessari, forza scritture in sospeso e rigenera
 ' la memoria con i dati correnti del file mdb.
 DBEngine.Idle dbRefreshCache
ma avevo trovato anche un altro paramentro per risolvere il problema, adesso
non ricordo esattamente come di chiama, ma dovrebbe assomigliare a qualcosa
come: dbOsFlush
greg

 aggiornamenti "cumulativi" e "massicci")
cut
cmq ho risolto....
era un'altra query che veniva eseguita dopo un messaggio all'utente, quindi
sul form_activate che naturalmente veniva richiamato... e che naturalmente
:-( non tenevo in considerazione.... chiedo scusa a DAO, a volte (quasi
sempre) lo uso (iamo?) come caprio espiatorio!!!
PaoloS
(un po' piu' contento oggi...)