Excel Formül
Modül 8: Veritabanı ve Dış Sistem Entegrasyonları

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."

Canlı Simülatör: Transaction Senaryosu

Aşağıdaki simülasyon, çoklu kayıt gönderimi sırasında hata simüle edildiğinde verilerin nasıl güvenle geri alındığını (Rollback) gösterecektir. Transaction Test Et butonuna basın.

Visual Basic Editörü
Module1 (Transaction_Manager)
Sub KritikSatisIslemi()
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    conn.Open "...Server..."

    On Error GoTo GeriSar
    conn.BeginTrans ' 1. Kilidi aç

    conn.Execute "INSERT INTO Kasa VALUES (500)"
    Err.Raise 5000 ' 2. Adımda sunucu hatası simülasyonu!

    conn.CommitTrans: Exit Sub
GeriSar:
    conn.RollbackTrans ' Tüm işlemleri iptal et!
    MsgBox "Hata! İşlem geri alındı.", vbCritical
End Sub
Canlı İşlem Durum Görünümü
A1
A (Çoklu İşlem Adımları)
B (Veritabanı Durumu)
1
Adım 1: Kasa Kaydı Ekleme
Bekliyor...
2
Adım 2: Fatura Detayı & Onay
Bekliyor...
Kritik Hata (Rollback) ✕
İşlem başarısız! Tüm adımlar geri alındı (Rollback).