Skip to main content

AccessTr.neT


Vba İle Sharepoint İle Access Arasında Bağlantısı Kesilmiş Tabloları Bağlama

Vba İle Sharepoint İle Access Arasında Bağlantısı Kesilmiş Tabloları Bağlama

Çözüldü #1
Değerli hocalarım merhabalar.

Access Veritabanımdaki tablomu Sharepoint Listesine aktardım. Access uygulamam ile de bağladım. Access' ten kayıt yapıyorum sharepoint' te görünüyor, sharepoint' te kayıt yapıyorum access' te görünüyor.

Sorunum şurda Penceresi gizlenmiş, accde uzantılı, shift tuşu ile açması engellenen bir uygulama yaptım. Uygulama çalışır vaziyette iken eğer olaki internet kesintisi yada başka bir bağlantıyı kesecek olay meydana geldiğinde Access ile Sharepoint arasındaki bağlantı kesiliyor. 

Shift ile access' i açtığımda access' te "bir veya daha fazla tablo bağlantısını kaybetti. Çevrimdışıykende değişikler yapılabilir" uyarısı ile karşılaştım. Bu hususla ilgili ekran görüntüsünü paylaşıyorum. Fotoğrafta görünen tabloları bağla dediğimde bağlantı gerçekleşiyor. Access sharepoint ile online yazısı sağ alt kısımda karşıma çıkıyor.

Sorunum şurda; Fotoğraftaki gibi manuel olarak tablo bağlama işini yapmamam lazım. Bunun için Vba ihtiyaç duydum. Ben uygulama içerisinde duruma göre buton ile yada form aç,kapat vb. kodlara entegre ile bu bağlantıyı yapabilmem lazım. Bu hususta çok fazla bir örnek bulamadım. Bilgisi olanların yardımına ihtiyacım var. Saygılar sunarım.
Cevapla
#2
Merhaba Sayın @aydin5353

Aşağıdaki gibi bir kod işinize yarayacaktır. Uygulamanızın yapısına göre ana forma veya tüm formlarınızda ekleyeceğiniz bir butona atayarak kullanabilirsiniz.
Kod:
Sub YenidenBaglan()
    On Error Resume Next
 
    CurrentDb.TableDefs.Refresh    ' Tablo bağlantılarını yeniden kurar
    If Err.Number <> 0 Then
        MsgBox "Bağlantı yeniden kurulamadı. Hata: " & Err.Description, vbExclamation, "Bağlantı Hatası"    ' Hata durumunu kontrol ederek varsa hata kodu ve açıklamasını mesaj olarak ekrana basar
    Else
        MsgBox "Bağlantı başarıyla yeniden kuruldu.", vbInformation, "Başarılı Bağlantı"    ' BAğlantıların başarıyla sağlandığını bildirir.
    End If
   
On Error GoTo 0
End Sub


Ancak dikkat edilmesi gereken hususlar var. İnternet bağlantısı kesildiği anda kayıt oluşturuluyor ise hata veya corruptiona sebebiyet verebilir. Bunun önüne geçmek için kayıt kontrollerini iyi organize etmelisiniz.
Örnek olarak çok yoğun çalışan bir uygulama değilse şahsen,
  • Belirli periyotlarla internet bağlantısı aktif mi kontrol et,
  • Bağlantı kesildiyse o esnadaki tüm işlemleri iptal et ve internet bağlantısı sağlanana kadar işlem yapılmasını engelle,
  • İnternet bağlantısı yeniden sağlandığında tablo bağlantılarını yenile,
  • Bağlantılar başarı ile yenilendiyse işlem yapılmasına izin ver
şeklinde bir yapı kurgulamayı düşünebilirim. (Fikir)
Cevapla
#3
Atoykan hocam. Hem Liste ile ilişkilendirilmiş form üzerinde, hemde ilişkisiz form üzerinde buton tıklayınca olayında denedim. Başarıyla bağlandı diyor ancak herhangi bir şey meydana gelmiyor. Shift le Access i açıp baktığımda aynı fotoğraftaki gibi bağlantının kesilmiş olduğu görünüyor.
Cevapla
#4
Biraz daha gelişmiş bir yaklaşımla bakalım
Kod:
Sub YenidenBaglan()
    Dim tdf As TableDef, db As Database
    Dim strTableName As String, strConnection As String
    On Error Resume Next
    Set db = CurrentDb
    For Each tdf In db.TableDefs
        If Len(tdf.Connect) > 0 Then
            strTableName = tdf.Name
            strConnection = tdf.Connect
            db.TableDefs.Delete strTableName
            Set tdf = db.CreateTableDef(strTableName, dbAttachSavePWD, strTableName, strConnection)
            db.TableDefs.Append tdf
        End If
    Next tdf
    If Err.Number <> 0 Then
        MsgBox "Bağlantı yeniden kurulamadı. Hata: " & Err.Description, vbExclamation, "Bağlantı Hatası"
    Else
        MsgBox "Bağlantı başarıyla yeniden kuruldu.", vbInformation, "Başarılı Bağlantı"
    End If
    On Error GoTo 0
End Sub

Bu şekilde kod her bağlı tabloyu sırasıyla kontrol edip mevcut bağlantı bilgisini saklayarak tabloyu siler ve ardından aynı bağlantı bilgisiyle tekrar ekler. Bu hali ile sanırım ekleme sorununuz çözülmüş olacaktır.
Cevapla
#5
Sn.aydin5353, çok merak ettiğim konu ile ilgileniyorsunuz Img-grin
Sn.atoykan'ın kodlarını uyguladığınız örneği paylaşabilirseniz çok memnun olurum.

Selamlar.
temre, 18-02-2010 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#6
Değerli Atoykan Hocam. Kodu İlişkisiz bir form üzerinde buton' da uyguladım. Kontrol ettim ve ÇALIŞTI.

Şöyle söyleyeyim. (Yabancı formlarda, yapay zeka ile kavga ederek, normal google aratmalarında bu soruna çözüm bulamamıştım.) Bu sorunu çözemediğim için tabiki de ilerleme kaydedemiyor, testlerimi gerçekleştiremiyordum. Bu kodu hazırlama zahmetinde bulunduğun için gerçekten Çok Teşekkür Ediyorum.

Normal formlar üzerinde değişiklik yapmadığımdan hazırlamış olduğum uygulama üzerinde çok fazla test etme imkanım olmadı. Kısa bir test aşamasında şunu farkettim. Eğer "Bağlantı kesikken" yapılan kayıtlar Access önbellekte -1,-2,-3 olarak kaydediliyor. Bu kod ile tablolar güncelleştirildiğinde o kayıtlar orda arada kalıyor ve sharepoint' e aktarılmıyor.
Bu durumda yapılabilecek birkaç seçenek görüyorum. Bağlantıya göre uygulamanın kullandırılması, Önbelleğin kapatılması ve verilerin silinmesi şeklinde. Bunları test ederek görmek gerekiyor. En önemli olan uygulama performansının yavaşlamaması benim için. Bağlantı kontrolleri esnasında uygulama normal bir veritabanı bağlantısı kontrolüne göre daha ağır hareket ediyor. 
Bu saatten sonrası tamamen testlerimden geçerek ilerleyeceğim bir süreç. Bu bağlantı konusunda çözüme kavuştuğum için çok mutluyum. Saygılar sunuyorum.

Sn.temre örneğimi paylaşmamı istemişsiniz. Ben kendim oluşturduğum (sitenin yardımlarını gözden gelmem mümkün değil) Access veritabanına ve Access uygulamasına sahibim. Veritabanını sharepoint listelerine aktarıp uygulamam ile bağlantıları oluşturdum. Oluşabilecek hatalara yönelik testler yapıyorum. Sharepoint Listelerinin kullanılıp kullanılmamasıyla ilgili bir önceki soruma Atoykan hocam çok güzel ve detaylı bilgi paylaştı. Öncelikle orayı okuyarak detaylı bilgi edinebilirsiniz. Uygulamam da farklı şeyler yaptıkça buraya atıyorum ancak şahsi kullanım olduğu için tamamını paylaşmam mümkün değil. Saygılar sunarım...
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task