Newsgroup: it.comp.appl.access
Titolo: sistema di roolback o simile

salve,
sapete se per caso in access esiste qualche sistema di roolback o comunque 
qualcosa che ti annulla l'ultima operazione ?
grazie ciao 

 ha scritto nel messaggio
news:F6SHd.733207$35.28...@news4.tin.it...

Ciao a tutti, mi associo a quest td per una anologo probblema o quasi:
Io ho due Db FE e BE, per una tabella ho necessità di trasferire i dati dal
be al fe,  e se la transazione ha avuto successo , prima del commit
eliminare la tabella avente il vecchio archivio
eseguo il seguente codice ma mi da errore di Violazione di condivisione....
Dim wksp As DAO.Workspace
Dim db_ex As DAO.Database
Dim RS_ex As DAO.Recordset
Dim DB_In As DAO.Database
Dim Rs_In As DAO.Recordset
Dim fld As Long
Set wksp = DBEngine.Workspaces(0)
wksp.BeginTrans
On Error GoTo errhandler
Set db_ex = wksp.OpenDatabase("C:\A.mdb")
strSQL_ex = "SELECT ARE,CODFIL FROM A "
Set RS_ex = db_ex.OpenRecordset(strSQL_ex, dbOpenDynaset)
Set DB_In = CurrentDb()
Set Rs_In = DB_In.OpenRecordset("A", dbOpenDynaset)
If RS_ex.EOF And RS_ex.BOF Then: Exit Function
    RS_ex.MoveLast
    RS_ex.MoveFirst
Do Until RS_ex.EOF
 Rs_In.AddNew
 For fld = 0 To RS_ex.Fields.Count - 1
 Rs_In(fld).Value = RS_ex(fld).Value
  Next
 Rs_In.Update
RS_ex.MoveNext
Loop
If Err.Number = 0 Then
'DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM A", True  --------------------Errore qui:
Violazione di condivisione
DoCmd.SetWarnings True
wksp.CommitTrans
Else
wksp.Rollback
End If
RS_ex.Close: Rs_In.Close
Set Rs_In = Nothing
Set RS_ex = Nothing
Set DB_In = Nothing
Set db_ex = Nothing
wksp.Close
Set wksp = Nothing
errhandler:
wksp.Rollback
MsgBox Err.Description
Grazie a chi vorrà aiutarci!!
Peppe

 ha scritto nel messaggio
news:pKTHd.733740$35.28...@news4.tin.it...

Il MoveLast non serve a nulla in questo caso, si usa solo
se serve il RecordCount aggiornato, ma tu non lo usi.

E' ammessa solo 1 transazione per volta
con JET.
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

 ha scritto nel messaggio
news:F6SHd.733207$35.28...@news4.tin.it...

Devi essere piů preciso, potrei dirti Me.Undo su evento BeforeUpdate
ma sarei incompleto....!



Ok perchč uso access ma non le maschere solo il motore in un programma in 
c++ fatto da me
vorrei annulllare una serie di insert
2)
si puň passare al motore un script sql direttamente ? (potrei simulare una 
sorta rollback)
p.s
si puň ottenere lo scrit slq di uno schema ? 

 si può ottenere lo scrit slq di uno schema ?
Come detto nell'altro Post JET è monotransazionale, e per acedere
anche ad una transazione devi aprire un'oggetto Workspace
sul quale apri un'oggetto Database, sul quale usi il metodo
EXECUTE per eseguire l'istruzione SQL.
Sull'oggetto Wsk puoi eseguire il RollBack oppure il Commit.
Presumo che ti basti inserire in C++ l'inclusione alle librerie di JET
per accedere agli oggetti(Workspace e Database) e relativi metodi.
Per il resto l'Help è discretamente dettagliato.
Per ottenere la struttura SQL si uno "schema" in JET "QUERY"
devi sempre accedere all'oggetto QueryDefs("NomeQuery").SQL
La proprietà SQL restituisce il predicato.
