Arkadaşlar öncelikle konuyu yanlış yere açmış olduğumu yeni fark ettim çok özür dileyerekden konunun taşınmasını talep ediyorum...
İnternetten araştırtığım kadarıyla sanırım dediğim gibi bir bağlantı yapmak mükün gibi görünüyor...
hatta internette buluduğum bir yazıyı sizlerede sunuyorum...
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.
Vba Kodu
Dim cn As ADODB.Connection
Dim rst As New ADODB.Recordset
Set cn = New ADODB.Connection
cn.ConnectionString = "driver={SQL Server};" & _
"server=Server_ip_Adresi;uid=Kullanici_İsmi;pwd=Şifre;database=Veritabanı_İsmi"
On Error Resume Next
cn.Open
If cn.State = adStateOpen Then
'MsgBox ("Baglantı Kuruldu...")
rst.CursorLocation = adUseClient
rst.Open "personel", cn, adOpenKeyset, adLockOptimistic
Set Me.Recordset = rst
Me.KaySay = vbCrLf & " Toplam -- " & rst.RecordCount & " -- Kayıt Bulundu." & vbCrLf & _
" Veriler
Sql server üzerinde -Personel- Tablosundan alınmıştır." & vbCrLf & vbCrLf & vbCrLf & vbCrLf & _
" beab05"
Else
MsgBox ("Bağlantı Kurulamıyor!!")
End If
rst.Close
cn.Close
Set rst = Nothing
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.
yazı Berkant Öztürk aittir..
benim anladığım kadarıyla accessde ikitane veritabanı bağlantısı yapip istedigim bilgiler mikronun veritabanına kalan bilgileride kendi veritabanıma göndermem gerekiyor