Abbiamo transazioni in MS-Access?

Sto sviluppando una piccola applicazione desktop utilizzando C # .NET e MS-Access . Non ho alcuna esperienza precedente di MS-Access. Voglio sapere se possiamo usare le transazioni in Ms-Access o no.

Ho la seguente situazione.

Inserisci in Tbl1
Inserisci in Tbl2

Voglio inserire in tbl2 solo quando l’inserimento in tbl1 ha successo. E se c’è qualche eccezione durante l’inserimento in tbl2, voglio eseguire il rollback dell’inserimento in tbl1.
So che questo può essere facilmente raggiunto in sql-server, ma in caso di accesso ms, come dovrei gestirlo. Per favore aiuto, grazie in anticipo

Sembra che facciamo: MSDN – Istruzione TRANSACTION (Microsoft Access SQL)

Le transazioni non vengono avviate automaticamente. Per avviare una transazione, devi farlo esplicitamente utilizzando:

BEGIN TRANSACTION 

Concludere una transazione impegnando tutto il lavoro eseguito durante la transazione:

 COMMIT [TRANSACTION | WORK] 

Concludere una transazione ripristinando tutto il lavoro eseguito durante la transazione:

 ROLLBACK [TRANSACTION | WORK] 

Nessuno in realtà ti ha fornito esempi di codice nella risposta o ha citato un esempio (i file di aiuto di Access includono degli esempi, però). Il problema chiave da tenere presente è che in Jet / ACE (l’accesso non supporta le transazioni stesse – dipende da quale motore di database si sta utilizzando per quello) che la transazione è controllata a livello di spazio di lavoro. È ansible creare un nuovo spazio di lavoro per la transazione o crearne uno nuovo. Ecco alcuni esempi di codice:

  On Error GoTo errHandler Dim wrk As DAO.Workspace Dim db As DAO.Database Dim lngInvoiceID As Long Set wrk = DBEngine.Workspaces(0) Set db = wrk.OpenDatabase(CurrentDb.Name) With wrk .BeginTrans db.Execute "INSERT INTO tblInvoice (CustomerID) VALUES (123);", dbFailOnError lngInvoiceID = db.OpenRecordset("SELECT @@IDENTITY")(0) db.Execute "INSERT INTO tblInvoiceDetail (InvoiceID) VALUES (" & lngInvoiceID & ")", dbFailOnError .CommitTrans Debug.Print "Inserted Invoice header and detail for Invoice " & lngInvoiceID End With exitRoutine: If Not (db Is Nothing) Then db.Close Set db = Nothing End If Set wrk = Nothing Exit Sub errHandler: MsgBox Err.Number & ": " & Err.Description, vbExclamation, "Error in transaction" wrk.Rollback Resume exitRoutine 

(codice testato e funzionante in Access)

Sì Microsoft Access supporta Transactions e funzionano abbastanza bene. Ho creato un’applicazione POS commerciale utilizzando Access come database diversi anni fa e il supporto delle transazioni ha funzionato molto bene.

Anche così, se ansible, userei SQL Server Express. È gratuito e molto più potente di Access.