Excel' Den Access Veritabanına Birden Fazla Bağlantı Hk.

30/10/2024, 20:53

truhi

Kıymetli Hocalarım merhabalar,

Aşağıdaki kod ile Excel ortamından Access veritabanı'na bağlantı kurup veri girişi yaparken;

aynı anda birden çok kullanıcı bu Access veritabanı'na bağlanınca bağlantıdan atıyor,

bu konuda ne tür önerileriniz olabilir?

destekleriniz için şimdiden teşekkürler,

Kod:
Sub Connect()
Dim myPath As String
Dim SQL  As String

    Set cn = New ADODB.Connection
    Set RS = New ADODB.Recordset
    
    myPath = ThisWorkbook.Path
    

    With cn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = "Data Source = " & myPath & "\DB\Db.accdb"
        .Open cn
    End With

SQL = " SELECT * FROM  Data"
RS.Open SQL, cn, 1, 3


iyi akşamlar.
30/10/2024, 23:51

onur_can

Access'in İstemci ayarlarını kontrol ettiniz mi? Varsayılan Açma Modu Paylaşılanmı işareti yoksa Özel Kullanımmı?, Buradaki diğer ayarlarıda kontrol edin.
31/10/2024, 12:33

atoykan

Birinci olarak veri tabanınız Access ve multi-user veri girişi yaptığınız bir yapıda frontend diyebileceğimiz şekilde Excel kullanmak hatalı bir yaklaşım zira Excel çoklu kullanımda oldukça sıkıntılı ve çok sınırlı yeteneklere sahip. Bunun yerine Access üzerinden bir frontend tasarlayıp formlar aracılığı ile backendde Access veritabanınıza kayıt yapmak daha sağlıklı bir yaklaşım olacaktır. Bu durumda ADO bağlantıları ile sürekli bir bağlantı aç kapat işlemi ve sürekli sorgu çalıştırmak yerine doğrudan bağlı tablolara veri işlemeniz hem tutarlılık, hem performans hem de doğrudan raporlama işlemlerinde size zaman kazandıracaktır.

Bunun yanında ADO bağlantılarınızı sadece işlem bazında kurup örneğin kayıt eklemede INSERT sorgusunu çalıştırıp işlemi tamamladıktan hemen sonra bağlantıları kapatmak bağlantı hatası sayısını azaltır. Ayrıca bağlantı hatalarını yönetmek için bir Error Handler yapısı kurgulamanız da yerinde olacaktır, böylece bağlantı hatası alan kullanıcıyı işlemi doğru sonuçlandırmaya yönlendirerek kayıtların eksiksiz ve düzenli olması denetleyebilirsiniz. Ayrıca RS.Open SQL, cn, adOpenDynamic, adLockOptimistic kullanmak kayıtları sadece güncellemede kilitleyerek çoklu girişlerdeki kilitlenme, kopma sorunlarınızı azaltmada yardımcı olabilir. 

Ancak başta da belirttiğim üzere Excel'in sınırlı yetenekleri ve multi-user erişimi sorunları göz önüne alındığında frontend olarak kullanmak hatalı bir yaklaşım.