Access veritabanına birden fazla bağlantı hk.

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,060
Excel Vers. ve Dili
Office 2013 İngilizce
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ı 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  Tablee"
 RS.Open SQL, cn, 1, 3
iyi akşamlar.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Merhaba;

Open-Source sql server database kullanın derim... ;)

- Firebird Sql Server,
- Postgresql Sql Server

.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,060
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba;

Open-Source sql server database kullanın derim... ;)

- Firebird Sql Server,
- Postgresql Sql Server

.
Zeki Hocam ilginize çok teşekkür ederim ama bahsetmiş olduğunuz hususları hiç bilmiyorum,
Konuyu biraz açabilir misiniz,

ConnectionString satırında mı düzenlenemsi gerekiyor.

iyi akşamlar.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Sadece connection string ile olmaz. Server yazılımını indirip kurmanız, manager program ile bağlanıp veritabanı ve tabloları oluşturmanız gerekiyor.

VBA ile erişim için yine ODBC sürücüsünü indirip kurmanız gerekiyor.

Veritbanı, kendi başına bir konudur ve az da olsa uzmanlık gerektirir.

Umarım sıkılıp vazgeçmezsiniz...

.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,060
Excel Vers. ve Dili
Office 2013 İngilizce
Sadece connection string ile olmaz. Server yazılımını indirip kurmanız, manager program ile bağlanıp veritabanı ve tabloları oluşturmanız gerekiyor.

VBA ile erişim için yine ODBC sürücüsünü indirip kurmanız gerekiyor.

Veritbanı, kendi başına bir konudur ve az da olsa uzmanlık gerektirir.

Umarım sıkılıp vazgeçmezsiniz...
Zeki Hocam bilgilendirme için teşekkürler,
şu an hali hazır access veri tabanında te bir çok tablo ve sorgu mevcut,
bu tablo ve sorguların tümünün serverde oluşturmak biraz zaman alacak gibi duruyor.
orta ve uzun vadede düşünebilir,

yalnız kısa vadede mevcut access üzerinde bir çözüm üretmem gerekiyor.

ilgi ve alakanız için tekrar teşekkürler.
 
Katılım
11 Temmuz 2024
Mesajlar
169
Excel Vers. ve Dili
Excel 2021 Türkçe
Paylaşımlı olabilmesi için kodunuzu şu şekilde revize edip deneyebilir misiniz;


Kod:
Sub Connect()
    Dim myPath As String
    Dim SQL As String
    Dim cn As ADODB.Connection
    Dim RS As ADODB.Recordset
    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"
        .Mode = 16 
        .Open
    End With
    SQL = "SELECT * FROM Tablee"
    RS.Open SQL, cn, 1, 3 
    RS.Close
    cn.Close
    Set RS = Nothing
    Set cn = Nothing
End Sub
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,060
Excel Vers. ve Dili
Office 2013 İngilizce
Paylaşımlı olabilmesi için kodunuzu şu şekilde revize edip deneyebilir misiniz;


Kod:
Sub Connect()
    Dim myPath As String
    Dim SQL As String
    Dim cn As ADODB.Connection
    Dim RS As ADODB.Recordset
    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"
        .Mode = 16
        .Open
    End With
    SQL = "SELECT * FROM Tablee"
    RS.Open SQL, cn, 1, 3
    RS.Close
    cn.Close
    Set RS = Nothing
    Set cn = Nothing
End Sub
deneyip, size dönüş yapacağım Hocam
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,634
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Ne yaparsanız yapın Access'te istediğiniz verimi alamazsınız. İşlem tipi ve kilit tipini değiştirseniz de tam verimli değil.
Kendi deneyimlerime göre en iyi model aşağıdaki gibi.

RS.Open SQL, cn, 1, 3
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,060
Excel Vers. ve Dili
Office 2013 İngilizce
Ne yaparsanız yapın Access'te istediğiniz verimi alamazsınız. İşlem tipi ve kilit tipini değiştirseniz de tam verimli değil.
Kendi deneyimlerime göre en iyi model aşağıdaki gibi.

RS.Open SQL, cn, 1, 3
Teşekkürler Erdem Hocam

benim kodlarda: RS.Open SQL, cn, 1, 3
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,419
Excel Vers. ve Dili
Office 2013
Merhaba;

Eş zamanlı çoklu kullanıcı için Access ile olmaz.

En basiti Sql Server Express kurun (ücretsizdir). Ya da hosting kiralayın ve ordaki veritabanını kullanın. Sadece veritabanı için ücretsiz hostingler de vardır.
 

NBATMAN

Destek Ekibi
Destek Ekibi
Katılım
1 Aralık 2007
Mesajlar
659
Excel Vers. ve Dili
Office 2003 excel Türkçe
Arkadaşlar Merhaba,

Accessi çok kullanıcı ile kullanabilirsiniz. Belkide bunu Türkiye'de başaran tek kişide olabilirim.😊
Bunun için Accessi bölmeniz gerekiyor.

Ayrı Frontend ve Backend: Access uygulamanızın "frontend" (kullanıcı arayüzü) kısmını ve "backend" (veri depolama) kısmını ayırın. Kullanıcıların yalnızca frontend'i kullanmalarını sağlarken, backend'i merkezi bir yerde tutun. Bu, kullanıcıların aynı anda veri tabanına erişmesini kolaylaştırır.

Dikkat! Yalnız ben bunu Excel üzerinde değil yaptığım VBNET programlarıyla kullandım.

sistem şöyle çalışıyor;
örneğin ağda bir veri tabanım (Access) var. bundan bölme işlemi ile bir örneğini oluşturuyorum. Bu Örnek kullanıcı (lokaldeki) bilgisayara yüklüyorum.
Dolayısı ile program çalıştığında bu kullanıcı bilgisayarındaki veri tabanı örneği ile işlem yapıyor ve serverdaki yada ağdaki bir ana bilgisayardaki asıl veri tabanımız serbest kalıyor. Ne zamanki örneğin kullanıcı/kullanıcılar kayıt yapıyor yada update yada sil işlemi yapıyor bu hali ile ana bilgisayardaki veriyi güncelliyor/değiştiriyor. bunu yaklaşık 6 yıldır kendi işyerimde ağadaki çok kullanıcılı üretim/sipariş takip programımda veri kayıpsız / hatasız bir şekilde kullanıyorum. nihayetinde bir SQL yerini tutmaz ama 6 yıldır IT ci bloğunu bu yöntemle aşmış bulunuyorum.😂
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,264
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
@NBATMAN ,

Kullandığınız yöntem ilginç görünüyor...

Kullanmak isteyenler için Veritabanı (Access) dosyanızı nasıl böldüğünüzü ve çoklu kullanıcı erişim örneğini yani kısaca sistemin nasıl çalıştığını gösteren kısa bir video paylaşırsanız memnun oluruz.
 
Katılım
9 Eylül 2010
Mesajlar
870
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Arkadaşlar Merhaba,

Accessi çok kullanıcı ile kullanabilirsiniz. Belkide bunu Türkiye'de başaran tek kişide olabilirim.😊
Bunun için Accessi bölmeniz gerekiyor.

Ayrı Frontend ve Backend: Access uygulamanızın "frontend" (kullanıcı arayüzü) kısmını ve "backend" (veri depolama) kısmını ayırın. Kullanıcıların yalnızca frontend'i kullanmalarını sağlarken, backend'i merkezi bir yerde tutun. Bu, kullanıcıların aynı anda veri tabanına erişmesini kolaylaştırır.

Dikkat! Yalnız ben bunu Excel üzerinde değil yaptığım VBNET programlarıyla kullandım.

sistem şöyle çalışıyor;
örneğin ağda bir veri tabanım (Access) var. bundan bölme işlemi ile bir örneğini oluşturuyorum. Bu Örnek kullanıcı (lokaldeki) bilgisayara yüklüyorum.
Dolayısı ile program çalıştığında bu kullanıcı bilgisayarındaki veri tabanı örneği ile işlem yapıyor ve serverdaki yada ağdaki bir ana bilgisayardaki asıl veri tabanımız serbest kalıyor. Ne zamanki örneğin kullanıcı/kullanıcılar kayıt yapıyor yada update yada sil işlemi yapıyor bu hali ile ana bilgisayardaki veriyi güncelliyor/değiştiriyor. bunu yaklaşık 6 yıldır kendi işyerimde ağadaki çok kullanıcılı üretim/sipariş takip programımda veri kayıpsız / hatasız bir şekilde kullanıyorum. nihayetinde bir SQL yerini tutmaz ama 6 yıldır IT ci bloğunu bu yöntemle aşmış bulunuyorum.😂
Yıllardır bu şekilde kullanıyoruz. Birde fronted olarak Excel userformu kullanıp veritabanı olarak acces kullanıyoruz. Bugüne kadar hatalı işlem olmadı. Belki bir ihtimal salisesi salisesine aynı anda komut gönderilirse işlem yapılamayabilir ama bu da düşük bir ihtimal.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,060
Excel Vers. ve Dili
Office 2013 İngilizce
Arkadaşlar Merhaba,

Accessi çok kullanıcı ile kullanabilirsiniz. Belkide bunu Türkiye'de başaran tek kişide olabilirim.😊
Bunun için Accessi bölmeniz gerekiyor.

Ayrı Frontend ve Backend: Access uygulamanızın "frontend" (kullanıcı arayüzü) kısmını ve "backend" (veri depolama) kısmını ayırın. Kullanıcıların yalnızca frontend'i kullanmalarını sağlarken, backend'i merkezi bir yerde tutun. Bu, kullanıcıların aynı anda veri tabanına erişmesini kolaylaştırır.

Dikkat! Yalnız ben bunu Excel üzerinde değil yaptığım VBNET programlarıyla kullandım.

sistem şöyle çalışıyor;
örneğin ağda bir veri tabanım (Access) var. bundan bölme işlemi ile bir örneğini oluşturuyorum. Bu Örnek kullanıcı (lokaldeki) bilgisayara yüklüyorum.
Dolayısı ile program çalıştığında bu kullanıcı bilgisayarındaki veri tabanı örneği ile işlem yapıyor ve serverdaki yada ağdaki bir ana bilgisayardaki asıl veri tabanımız serbest kalıyor. Ne zamanki örneğin kullanıcı/kullanıcılar kayıt yapıyor yada update yada sil işlemi yapıyor bu hali ile ana bilgisayardaki veriyi güncelliyor/değiştiriyor. bunu yaklaşık 6 yıldır kendi işyerimde ağadaki çok kullanıcılı üretim/sipariş takip programımda veri kayıpsız / hatasız bir şekilde kullanıyorum. nihayetinde bir SQL yerini tutmaz ama 6 yıldır IT ci bloğunu bu yöntemle aşmış bulunuyorum.😂
Hocam yönteminiz çok yaratıcı görünüyor,
bilgilendirme için teşekkürler,
öğrenek istediğim Lokal bilgisayarda güncellenene veritabanı, server da bulunan veritabanında nasıl güncelleniyor?
iyi akşamlar.
 
Katılım
9 Eylül 2010
Mesajlar
870
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Kod:
Public Function Baglan() As ADODB.Connection
    Dim adoCN As ADODB.Connection
    Dim DatabasePath As String
    
    Set adoCN = New ADODB.Connection
    DatabasePath = ThisWorkbook.Path & "\VT.mdb"
    
    On Error GoTo ErrorHandler
    
    adoCN.Provider = "Microsoft.ACE.OLEDB.12.0"
    adoCN.ConnectionString = "Data Source=" & DatabasePath & ";Jet OLEDB:Database Password=0069;"
    adoCN.Open

    Set Baglan = adoCN
    Exit Function

ErrorHandler:
    MsgBox "Bağlantı kurulamadı: " & Err.Description
    Set Baglan = Nothing
End Function
Tamer Bey merhabalar. Yaklaşık 5 yıldır bu kodlarla bağlantıda sorun olmadı. Birde acces formlarıyla kullandığımız programlar var. Onları da hafta içi kuruma geçince bakayım. Hatta @Levent Menteşoğlu Bey'in 2010 lu yıllarda yapmış olduğu programı hala kullanan birimlerimiz var. Kendisi konuya bakabilirse çok daha yardımcı olabilir. Hocalarımız acces çoklu bağlantıya izin vermez deyince çok şaşırdım. Belki ben yanlış anladım konuyu. Sizler kadar vakıf değilim.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,060
Excel Vers. ve Dili
Office 2013 İngilizce
Kod:
Public Function Baglan() As ADODB.Connection
    Dim adoCN As ADODB.Connection
    Dim DatabasePath As String
   
    Set adoCN = New ADODB.Connection
    DatabasePath = ThisWorkbook.Path & "\VT.mdb"
   
    On Error GoTo ErrorHandler
   
    adoCN.Provider = "Microsoft.ACE.OLEDB.12.0"
    adoCN.ConnectionString = "Data Source=" & DatabasePath & ";Jet OLEDB:Database Password=0069;"
    adoCN.Open

    Set Baglan = adoCN
    Exit Function

ErrorHandler:
    MsgBox "Bağlantı kurulamadı: " & Err.Description
    Set Baglan = Nothing
End Function
Tamer Bey merhabalar. Yaklaşık 5 yıldır bu kodlarla bağlantıda sorun olmadı. Birde acces formlarıyla kullandığımız programlar var. Onları da hafta içi kuruma geçince bakayım. Hatta @Levent Menteşoğlu Bey'in 2010 lu yıllarda yapmış olduğu programı hala kullanan birimlerimiz var. Kendisi konuya bakabilirse çok daha yardımcı olabilir. Hocalarımız acces çoklu bağlantıya izin vermez deyince çok şaşırdım. Belki ben yanlış anladım konuyu. Sizler kadar vakıf değilim.
Çok teşekkür ederim Hocam,
iyi hafta sonları..
 

Trilenium

Destek Ekibi
Destek Ekibi
Katılım
16 Eylül 2008
Mesajlar
1,129
Excel Vers. ve Dili
Microsoft Office 2019 English
Zeki Hocam bilgilendirme için teşekkürler,
şu an hali hazır access veri tabanında te bir çok tablo ve sorgu mevcut,
bu tablo ve sorguların tümünün serverde oluşturmak biraz zaman alacak gibi duruyor.
orta ve uzun vadede düşünebilir,

yalnız kısa vadede mevcut access üzerinde bir çözüm üretmem gerekiyor.

ilgi ve alakanız için tekrar teşekkürler.

Sıfır zamanınızı alacak bir şey bu.

Tüm tablo ve sorgularınızı içeriye bir kaç dakika içerisinde import edebiliyorsunuz. MSSQL Express kurun, bir de yönetebilmek için Management Studio kurun. Accessi olduğu gibi içeriye aktarın. Sonra connection satırını değiştirin bitti gitti bu kadar.

Parçala böl yapıştır getir götür bir sürü yığın iş. Gereksiz zaman kaybı derim.
 
Katılım
9 Eylül 2010
Mesajlar
870
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Değerli hocalarım ben bu işte uzman değilim ama yıllardır accesi veri tabanı olarak kullandık. En fazla kaç kullanıcı bağlandı aynı anda denemedim ama hiç bir şekilde diğer kullanıcıları sistemden attığına ya da uygulamayı kapattığına şahit olmadım. Belki bi sql değil ama sonuç itibariyle bir veritabanı programı neden çoklu kullanıcıya izin vermesin anlayamıyorum. Sanırım kodlarda bir sorun var.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,634
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Aynı anda çoklu kullanıcı kullanabilir ama verimli ve stabil değil. Access’i kullanması basit ve ek kurulum gerektirmediği için kullanıyorum.
 
Üst