Newsgroup: it.comp.lang.visual-basic
Titolo: [?] MSJET salvataggio dati non asincrono...

Ciao a tutti !!
Dunque, avrei questo problemino...
Ho un form con una serie (diciamo 10) pulsanti. Alla pressione di ogni
tasto, devo scrivere su un DB formato Access quale tasto e' stato premuto.
Ok, per far questo uso il comando EXECUTE , passandogli una stringa SQL tipo
"INSERT INTO Eventi... bla bla bla" e come opzione dbFailOnError.
Tutto funziona bene se premo i tasti lentamente, visto che il salvataggio e'
lento.
Ma se premo un po' troppo veloce i tasti, il DB non fa in tempo a salvare la
sequenza giusta, e mi capita di trovare l'evento di un bottone registrato
prima del suo precedente...
Quindi.. non sapete se é possibile dire a sto comando Execute di aspettare a
salvare le successive richieste finché non ha finito quella attuale ?
Grazie mille !!
DaVe
Rispondetemi sul newsgroup.. c'e' ancora gente che insiste a rispondermi per
posta :-))   (ci mette troppo)
Ps: scusatemi.. la frase qui sopra e' una cazzata... ma mi sto annoiando qui
in ufficio eheh

Su Form1 ho inserito una matrice di n pulsanti Command1 con la proprieta'
Index impostata, rispettivamente, a 0, 1, ..., n.
Ho poi creato un database Access di nome db1.mdb contenente una tabella di
nome Pulsanti formata da un campo numerico di nome Pulsante.
Ecco il codice della Form1 relativamente agli eventi.
'General Declarations
Dim db As Database
Dim tb As Recordset
'General Function
Funzione
Sub Quale(i As Integer)
   tb.AddNew
   tb("Pulsante") = i
   tb.Update
End Sub
Private Sub Command1_Click(Index As Integer)
   Call Quale(Index)
End Sub
Private Sub Form_Load()
   Set db = Workspaces(0).OpenDatabase("c:\db1.mdb")
   Set tb = db.OpenRecordset("Pulsanti")
End Sub
Private Sub Form_Unload(Cancel As Integer)
   db.Close
End Sub
Per quanto mi riguarda funziona bene. Fammi sapere cosa ne pensi.
Ciao, Giorgio De Lellis.
"-> Dave <-" <da...@hate.spam> ha scritto nel messaggio
news:8a2heh$hpl$1...@bw107zhb.bluewin.ch...



[BIGCUT]

Ciao Dave!
Penso di sapere ciò che ti serve: (fonte MSDN)
<<Proprietà State (ADO)
Indica se un oggetto è aperto o chiuso.
Indica lo stato corrente di un oggetto Recordset che esegue un metodo
asincrono ovvero se è in fase di connessione, di esecuzione o se sta
eseguendo un'operazione di fetch.
Valore restituito
Restituisce un valore Long rappresentato da una delle seguenti costanti:
Costante Descrizione
adStateClosed Predefinita. L'oggetto è chiuso.
adStateOpen L'oggetto è aperto.
adStateConnecting L'oggetto Recordset è in fase di connessione.
adStateExecuting L'oggetto Recordset sta eseguendo un comando.
adStateFetching È in corso un'operazione di fetch per le righe dell'oggetto
Recordset.
Osservazioni
La proprietà State può essere utilizzata per determinare lo stato corrente
di un determinato oggetto in qualsiasi momento. Si tratta di una proprietà
di sola lettura.
La proprietà State dell'oggetto Recordset può essere espressa come una
combinazione di valori. Se ad esempio è in corso l'esecuzione di
un'istruzione, questa proprietà sarà rappresentata da un valore costituito
dalla combinazione di adStateOpen e adStateExecuting.  >>
Cioè basta verificare lo stato quando il button viene premuto per impedire
eventuali disastri ;-)
Ciao
___________________________________________
                             Davide Deidda
URL      
http://web.tiscalinet.it/meridies
E-Mail          
davide...@tiscalinet.it
___________________________________________
-> Dave <- <da...@hate.spam> wrote in message


 con DAO che con ADO...
Come dice la guida in linea: "Se si utilizza il metodo OpenDatabase senza
specificare un oggetto
Workspace, verrà utilizzata l'area di lavoro predefinita
DBEngine.Workspaces(0)".
Quindi, nell'esempio che ti ho inviato puoi anche tralasciare Workspace e il
programma funzionerà lo stesso, ma penso sia comunque importante sapere
della sua esistenza.
Ciao.