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

VBA ve ADO ile Hata ve Bağlantı Yönetimi

Harici veritabanları ile çalışırken ağ kesintileri, yanlış şifreler, sunucu yoğunluğu veya hatalı yazılmış SQL sorguları her an karşımıza çıkabilir. Profesyonel bir VBA makrosunda hata yönetimi yoksa, sunucu yanıt vermediğinde Excel donar, kullanıcı kod ekranıyla (Run-time error) baş başa kalır ve açık bağlantılar (Open Connections) sunucuda kilitlenir.

Bu riskleri tamamen ortadan kaldırmak için On Error GoTo HataEtiketi yapısını kullanırız. Hata oluştuğu an kodlar otomatik olarak güvenli limana (hata yöneticisine) yönlendirilir; açık veritabanı bağlantısı güvenle kapatılır (Close) ve kullanıcıya anlaşılır bir hata mesajı sunulur.

Güvenli Hata Yakalama ve Bağlantı Kapatma Kalıbı

İşlem normal bittiğinde Exit Sub ile hata bloğu atlanır; hata durumunda ise Err.Description ile hatanın detaylı açıklaması yakalanır.

ADO Hata Yönetimi Kod Kalıbı

Dim baglanti As Object
On Error GoTo VeritabaniHatasi

Set baglanti = CreateObject("ADODB.Connection")
baglanti.Open "Provider=SQLOLEDB;Data Source=YANLIS_IP..."

' İşlemler...

Exit Sub ' Hata yoksa alt satırlara geçme

VeritabaniHatasi:
MsgBox "Bağlantı hatası: " & Err.Description, vbCritical
If Not baglanti Is Nothing Then
    If baglanti.State = 1 Then baglanti.Close
End If

Canlı Simülatör: Veritabanı Hata Yönetimi

Aşağıdaki simülasyon, hatalı bir sunucu bağlantısı denendiğinde kodun nasıl güvenli şekilde hata bloğuna yönlendiğini gösterecektir. Hatalı Bağlantıyı Test Et butonuna basın.

Visual Basic Editörü
Module1 (Error_Handling)
Sub GuvenliBaglanti()
    On Error GoTo HataKalkani

    ' Hatalı sunucu adresi simülasyonu
    Err.Raise 3704, , "Sunucu yanıt vermedi (Timeout)!"

    Exit Sub
HataKalkani:
    MsgBox "Hata Yakalandı: " & Err.Description, vbCritical
End Sub
Canlı Bağlantı Durum Görünümü
A1
A (Veritabanı Durumu)
1
Bağlantı Bekleniyor...
Microsoft Visual Basic (Hata) ✕
Hata Yakalandı: Sunucu yanıt vermedi (Timeout)!