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.
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)
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.
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.
Sn.aydin5353, çok merak ettiğim konu ile ilgileniyorsunuz
Sn.atoykan'ın kodlarını uyguladığınız örneği paylaşabilirseniz çok memnun olurum.
Selamlar.
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...