Ms Access ve Sql Server Bağlantısı
#1
[Resim: spbanner6.png]


Merhaba Access severler;

Bu konumuzda MS Access ile MS Sql Server arasında ADO kullanarak bağlantı yapmaya çalışacağız. Sql Server ister yerel, ister uzak olsun sadece Connection String üzerinde yapacağınız değişikliklerle bağlantıyı sağlayabilirsiniz. Biz örneğimizde Sql Server üzerinde yetkimiz olan veritabanı üzerinde uzak bağlantı deneyeceğiz.
Peki neden Sql Server’a bağlantı ihtiyaca duyalım(?) diyebilirsiniz.

Sql Server ve Oracle bilinen en güçlü veritabanı sistemleridir. Bunların yanında Mysql, Firebird gibi yine oldukça etkili veritabanı sistemleri vardır. Bu arada yeri gelmişken, hayatlarında Oracle görmemiş ya da üzerinde 2 sorgu yazmamış insanların “Oracle en iyisidir “ demelerine hayret ediyorum. Bu iki güçlü veritabanı sisteminin birbirine göre üstün ya da zayıf özellikleri vardır. Merak edenler için bunları bulmak zor olmasa gerek. Her neyse konumuzdan uzaklaşmayalım. Neden Sql Server’a bağlanalım diyorduk..

Access i gerçekten veritabanı amacıyla kullanan herkesin tek beklentisi verilerini en sağlıklı, en güvenli şekilde tutabilmektir. Tablo ve diğer nesneleri aynı mdb, mde içinde tutuyorsak potansiyel risk çok fazladır. Uygulamamız çökebilir ve tablolarımıza elveda diyebiliriz. Tabloları ayrı bir vt de tutuyorsak elbette çok daha sağlıklıdır ama biz çok daha fazlasını istiyoruz. Uygulamamızı MDE yapsak bile tablolar, sorgular, macrolar alenen açıktadır.
Tablolar, sorgular uygulama içinde görünmesin, bağlı tablo yöntemini de kullanmak istemiyorsanız artık başlayabiliriz. Diğer istek ve arzularımıza yeri geldikçe değineceğiz Wink
Sql Server üzerindeki veritabanımızda “Personel” isimli tablomuz vardır. Bu tabloda “id, Ad, Soyad, GirisTarihi, DogumTarihi, Maas” alanlarımız vardır ve şu an için toplam “2.200” adet kayıt mevcuttur. Kayıt sayısını bilerek az tuttum ki malum ülkemizde internet hızlarında hala sıkıntı yaşamaktayız.
Access dosyamızı açalım ve “Sql_Server_Tablo” isminde bir form yapalım. Bu forma Sql Server de bulunan alanlarımızı sürekli form şeklinde koyalım. Artık ister formun açılışına ister bir düğmeye yazacağımız kodlarla verileri bu formumuza çağırabiliriz. Örnekte de göreceğiniz üzere ben düğme ile çağırdım.
Şimdi kodumuza bakalım.


Visual Basic
  1. ' •——————————————————————————————————————————————•
  2. ' | ******************************************* |
  3. ' | Access-Sql.com [Berkant Öztürk] |
  4. ' | ******************************************* |
  5. ' •——————————————————————————————————————————————•
  6.  
  7. Dim cn As ADODB.Connection
  8. Dim rst As New ADODB.Recordset
  9. Set cn = New ADODB.Connection
  10. cn.ConnectionString = "driver={SQL Server};" & _
  11. "server=Server_ip_Adresi;uid=Kullanici_İsmi;pwd=Şifre;database=Veritabanı_İsmi"
  12. On Error Resume Next
  13. cn.Open
  14. If cn.State = adStateOpen Then
  15. 'MsgBox ("Baglantı Kuruldu...")
  16. rst.CursorLocation = adUseClient
  17. rst.Open "personel", cn, adOpenKeyset, adLockOptimistic
  18.  
  19. Set Me.Recordset = rst
  20. Me.KaySay = vbCrLf & " Toplam -- " & rst.RecordCount & " -- Kayıt Bulundu." & vbCrLf & _
  21. " Veriler SQL server üzerinde -Personel- Tablosundan alınmıştır." & vbCrLf & vbCrLf & vbCrLf & vbCrLf & _
  22. " beab05"
  23. Else
  24. MsgBox ("Bağlantı Kurulamıyor!!")
  25. End If
  26. rst.Close
  27. cn.Close
  28. Set rst = Nothing
  29. Set cn = Nothing



Gördüğünüz gibi Sql Server da bulunan “personel” tablosuna ait kayıtların tümünü kolayca aldık. Üstelik bu kayıtlar üzerinde ekleme, silme, güncelleme yapabilmekteyiz ve bu güncellemeler aynen Sql Server üzerindeki tablomuza kaydedilebilmektedir ama ben veri değişikliği izinlerini iptal ettim. Biri çıkıp tüm kayıtları silebilir yoksa Wink
Kayıtları çok basitçe aldık, 1 Mbs internet hızımla 2.200 kayıt bende 1-3 saniyede gelmektedir, üstelik ortalıkta görünen tablo ve sorgu da yoktur. Formunuza ait kayıt kaynağı olarak yine Sql Server da yaratacağınız bir view ( sorgu diyebiliriz) i de kaynak olarak gösterebilirsiniz ama tabii yaptığınız view in yapısına göre kayıt değişiklikleri yapmanıza engel olabilir ki bu durum Access te yaratacağınız sorgu yapısında da aynıdır. Örneğin gruplanmış bir sorgu sonucunu kaynak alırsanız formunuz elbette sadece okunur olacaktır..
Bir dahaki çalışmada Stored Procedures ( konusu içinde Stored Procedures hakkında kısa bilgi verilecektir) üzerinden veri almaya değineceğiz.

Not: Örneği MDE ekleme sebebim içinde server bilgilerimizin yer almasıdır ama birebir aynısını MDB olarak da ekliyorum. İçinde sadece server bilgileri yoktur, dolayısıyla bağlantı gerçekleştirmez.

Berkant Öztürk
Access-Sql.com



Javascript
  1. this.setState({sign:"Here comes the sun...."})







  Alıntı
Bu mesajı beğenenler:
#2
Evet hız mükemmel. 1 Gb büyüklüğündeki dosyamın tablolarını sql servere taşıdıktan sonra çok rahatlamıştım. bu konudaki çalışmalarınızın devamı bekliyorum.



  Alıntı
Bu mesajı beğenenler:
#3
Sayın Berkant Öztürk;

İyi akşamlar...

BB_SqlServerTablo dosyasını indirdim.

Laptop'umdan SQL Server'a bağlanabilir miyim?

Yazdığınız kodları düğmeye aynen kopyalamam mı gerekiyor?

Yanlış bir şey yazmışsam, kusura bakmayın.

İyi hafta sonları.

Selamlar...



  Alıntı
Bu mesajı beğenenler:
#4
Hocam çok güzel bir çalışma;
Bağlı tablo ile çalışmak arasında
(ODBC, DNS) hız farkı var mıdır ?
Elinize sağlık
Teşekkürler



  Alıntı
Bu mesajı beğenenler:
#5
Merhaba;

Sayın Assenucler;

Yazdığım kodları editlemeniz gerekmektedir. Connection string satırına kendi server bilgilerinizi yazmanız gerekiyor. Ayrıca "rst.open" satırına da kendi tablo ya da sql cümlenizi yazmanız gerekir ve mevcut örneğe göre formunuza o kaynaktaki alanları koymanız gerekmektedir.

MDE örneğinde bizim hostingte bulunan SQL Server bağlantısı gerçekleşmektedir.

Sql Server bağlantısını sağladıktan sonra doğal olarak heryerden bağlanabilrisiniz.

Bu konuda kafanızı karıştıran şeyleri sormaktan çekinmeyin lütfen.
Javascript
  1. this.setState({sign:"Here comes the sun...."})







  Alıntı
Bu mesajı beğenenler:
#6
(14-06-2009, 18:31)okileturc demiş ki: Hocam çok güzel bir çalışma;
Bağlı tablo ile çalışmak arasında
(ODBC, DNS) hız farkı var mıdır ?
Elinize sağlık
Teşekkürler

Hız testi yapmadım ama bu şekilde bir bağlantı bana göre daha güvenli bağlı tablo ile bağlanıp şifre kaydetmeksizin bir güvenlik sağlamaktansa tablo ya da sorguların hiç görünmemesi ve bağlantı bilgilerinin kod ile sağlanması daha iyidir. Üstelik sizlerden diğer konuyu okumanızı rica ederim yani Stored Procedures bağlantısını. Şahsen benim düşüncem tüm verileri SP ile almak. Parametreli ya da parametresiz olarak.
Javascript
  1. this.setState({sign:"Here comes the sun...."})







  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  C# Sql Server Tablosunu Local Database Transfer burhanb 0 376 04-03-2024, 12:43
Son Mesaj: burhanb
  Sql Server - Ms Access Bağlı Tablo Aracı (Sql Server To Ms Access Linked Table Tool) beab05 46 27.057 12-09-2019, 14:52
Son Mesaj: burhanb
  SQL SERVER hakkında sedefkilic 0 1.413 15-04-2017, 11:41
Son Mesaj: sedefkilic
  SQL server tablosuna image (resim) nasıl eklenir ve Ms access formuna nasıl alınır abkbek 3 2.597 16-02-2016, 22:05
Son Mesaj: abkbek
  SQL server login ybuyulu 4 2.632 30-10-2015, 15:43
Son Mesaj: ybuyulu
access-sql-18 SQL Server Veritabanını Kopyalanmaya Karşı Nasıl Koruruz? karakabus 4 2.749 18-06-2015, 11:12
Son Mesaj: karakabus
access-sql-9 SQL SERVER(hastane otomasyonu) meyyraa 1 5.244 09-06-2015, 22:59
Son Mesaj: onur_can
  access üzerinden SQL SERVER veritabanına resim (image) nasıl kaydedilir? abkbek 2 2.322 29-04-2015, 06:46
Son Mesaj: abkbek

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi