VBA ve SQL ile Çoklu İşlem Yönetimi (Transactions)
Bir sipariş otomasyonunda Excel üzerinden veritabanına aynı anda iki kayıt gönderdiğinizi düşünün: 1. Adım müşterinin kasasından para düşmek, 2. Adım ise cari hesabına ürün faturası kaydetmek. Ya 2. adımda elektrik giderse veya sunucu hata verirse ne olur? 1. adım gerçekleşmiş, 2. adım yarıda kalmıştır ve muhasebe bakiyeleri birbirini tutmaz (Veri bütünlüğü bozulur).
İşte bu tür çok adımlı kritik işlemlerde Transaction (İşlem Bloğu) devreye girer. BeginTrans komutu ile süreç başlatılır; tüm adımlar hatasız tamamlanırsa CommitTrans ile veritabanına kalıcı olarak mühürlenir. Eğer herhangi bir aşamada en ufak bir hata çıkarsa RollbackTrans komutu tüm adımları anında iptal ederek veritabanını işlemin hiç başlamadığı ilk tertemiz haline geri döndürür ("Hepsi ya Hiç" kuralı).
Transaction Mimari Kod Yapısı
ADO bağlantısı üzerinden işlem bloğu başlatılır, hata yakalandığında ise Rollback tetiklenir.
Transaction (Commit / Rollback) Kod Kalıbı
Dim baglanti As Object
Set baglanti = CreateObject("ADODB.Connection")
baglanti.Open "Provider=SQLOLEDB;..."
On Error GoTo HataYoneticisi
baglanti.BeginTrans ' İşlemi başlat
baglanti.Execute "INSERT INTO Kasa ...'
baglanti.Execute "INSERT INTO Fatura ...'
baglanti.CommitTrans ' Her şey yolunda, mühürle!
Exit Sub
HataYoneticisi:
baglanti.RollbackTrans ' Hata oldu, başa sar ve geri al!
MsgBox "İşlem iptal edildi, veri bütünlüğü korundu."