12-03-2012, 17:56
Merhaba arkadaşlar;
Access ile Web Servisler ve kullanımı ile ilgili yararlı olacağını düşündüğüm bazı bilgiler vermeye çalışacağım.
Aslında daha önce de bu konuya benzer bir konu yayınlamıştım. Şimdi daha farklı ve detaylı anlatmaya çalışacağım.
Web Servisleri ile alacağımız veriler bize ne sağlar, yararı nedir gibi bir soru aklınıza gelebilir. Kısaca özetlemek gerekirse hali hazırda bir çok veriyi kullanabiliriz. Örneğin, kimlik bilgileri, hava durumu, kur bilgileri, ülke telefon kodları vs. vs.. uzar gider.. Tabii bu tür verilere erişim yapabileceğiniz her servisi bulamayabilirsiniz ya da ücretlisini bulursunuz. Bu durumda kendiniz hazırlamanız gerekebilir. Mesela ben bugüne kadar il-ilçe-semt gibi verilerin bulunduğu bir web servisine hiç rastlamadım. Üzgünüm ama bunu şimdiki örneğimizde de bulamayacaksınız. Belki de sizler hazırlarsınız
Ayrıca unutmamak gerekir ki kullanıcılar bizim web servisimizi kullanıyorsa tüm kontrol bizde demektir. Yani istersek onların alacağı verileri değiştirmek, engellemek gibi sınırlamaları dilediğimiz gibi yapabiliriz. Mesela basit bir fikir olarak tarih sınırlaması olan bir uygulamamızda tarihi bir servis ile kontrol edebiliriz. Böylece kullanıcının PC tarihiyle oynaması hiçbir anlam ifade etmeyecektir. Süresi dolan kullanıcıya da istediğimiz mesajı göndermek elimizde olacaktır gibi…
Web servislerimizi üstelik bir çok platformda rahatça kullanabiliriz. Aşağıda yazacağımız servisleri tüm .Net, vb6, Excel, Word, Access gibi platformlarda rahatlıkla kullanabiliriz.
Bu konuda Web Servisi nasıl yapılırdan çok Access ile nasıl kullanabiliriz buna değineceğim. Göreceğiniz ve kullanacağınız servisleri ben Visual Studio 2010 ile oluşturdum ve Windows sunucumda yayınlıyorum.
Önemli bir ayrıntı; bu servisleri Access gibi Office bileşenleri ile kullanmak için bilgisayarınıza aşağıdaki linkte bulunan Microsoft SoapToolkit’i mutlaka kurmanız gerekiyor. Zaten bana göre her pc de mutlaka kurulu olmalıdır. Boyutu da ufaktır merak etmeyin, 3,6 MB.
http://www.microsoft.com/download/en/det...x?id=13456
Artık örneğimize ve açıklamalarımıza geçebiliriz.
İlk servisimizi yazalım;
Burada kendimiz bir string collection oluşturuyoruz. Gördüğünüz gibi bazı takım isimleri yazdım ve bir de kriter ekledim. Bu kritere göre (contains – içinde geçen) server tarafında filtre yapacaktır. Server tarafında yapmamız bize çok büyük fayda sağlayabilir. Yüzbinlerce verimiz olduğunu düşünürsek bunu daha iyi idrak edebilirsiniz. Bu fonksiyonumuzu Access tarafında nasıl kullandığımıza bakalım.
Örnekte de göreceğiniz gibi sol üsteki liste kutusunun yanında yer alan düğmeye basarak takımları liste kutusuna dolduruyoruz. Sarı filtre kutusuna yazacağımız karakterlere göre de tekrar düğmeye basarak server taraflı filtre edebiliriz. Boş olması halinde tüm takımlar gelecektir.
Şimdi biraz daha basit bir fonksiyon hazırlayalım ama yine parametreli olsun.
Göreceğiniz gibi çok basit fonksiyon bize “Ad” değişkenimize göre bir string döndürecektir.
Access tarafına geçelim;
Bize pc kullanıcı ismimize göre yukarıdaki web metodumuzda dönen stringi verecektir. Siz isterseniz environ kullanmak yerine kendi belirlediğiniz şekilde bir değer atayabilirsiniz tabii..
Bir de olmazsa olmazlardan Merkez Bankası döviz kuru almaya bakalım. Merkez bankası bze bunu zaten xml servisi olarak veriyor ama biz burada bu servisten kendimize bir web servis metodu yaratacağız.
Bu fonksiyonda sadece USD alış ve satış kurlarını aldırdım ve xml linq kullandım.
Access tarafına bakalım;
Mesaj kutusunda bize USD alış ve satış kurunu verecektir.
Şimdi biraz daha gelişmiş bir web methodu yazalım. Bu sefer amacımız bir veritabanında kayıtlı verileri almak olsun. Ben bunun için Sql Server da bulunan ve bizim AccessCage de yer alan son medyaları aldırdım. Medya ismi, medya türü ve medyayı ekleyen olarak 3 sütunda liste kutusunda yer alacaklardır.
Ben veritabanından Entity Framework kullanarak aldırdım. Bu detaya şimdi girmek istemiyorum ama sizler çeşitli yollarla bu verileri aldırabilirsiniz.
Access tarafı bizi bekler;
Almışken bizim forumun RSS bilgilerini de alsak hiç fena olmaz
Access;
Gördüğünüz gibi çeşitli veri kaynaklarından verileri Access ile kolayca aldık. Kimisi hazır servislerdi, kimi değerleri biz kod tarafında ekledik kimilerini de veritabanından çağırdık.
Aşağıdaki örnekten yukarıdaki tüm verileri alabilirsiniz.
Berkant Öztürk
[Access-Sql.com]
Access ile Web Servisler ve kullanımı ile ilgili yararlı olacağını düşündüğüm bazı bilgiler vermeye çalışacağım.
Aslında daha önce de bu konuya benzer bir konu yayınlamıştım. Şimdi daha farklı ve detaylı anlatmaya çalışacağım.
Web Servisleri ile alacağımız veriler bize ne sağlar, yararı nedir gibi bir soru aklınıza gelebilir. Kısaca özetlemek gerekirse hali hazırda bir çok veriyi kullanabiliriz. Örneğin, kimlik bilgileri, hava durumu, kur bilgileri, ülke telefon kodları vs. vs.. uzar gider.. Tabii bu tür verilere erişim yapabileceğiniz her servisi bulamayabilirsiniz ya da ücretlisini bulursunuz. Bu durumda kendiniz hazırlamanız gerekebilir. Mesela ben bugüne kadar il-ilçe-semt gibi verilerin bulunduğu bir web servisine hiç rastlamadım. Üzgünüm ama bunu şimdiki örneğimizde de bulamayacaksınız. Belki de sizler hazırlarsınız

Ayrıca unutmamak gerekir ki kullanıcılar bizim web servisimizi kullanıyorsa tüm kontrol bizde demektir. Yani istersek onların alacağı verileri değiştirmek, engellemek gibi sınırlamaları dilediğimiz gibi yapabiliriz. Mesela basit bir fikir olarak tarih sınırlaması olan bir uygulamamızda tarihi bir servis ile kontrol edebiliriz. Böylece kullanıcının PC tarihiyle oynaması hiçbir anlam ifade etmeyecektir. Süresi dolan kullanıcıya da istediğimiz mesajı göndermek elimizde olacaktır gibi…
Web servislerimizi üstelik bir çok platformda rahatça kullanabiliriz. Aşağıda yazacağımız servisleri tüm .Net, vb6, Excel, Word, Access gibi platformlarda rahatlıkla kullanabiliriz.
Bu konuda Web Servisi nasıl yapılırdan çok Access ile nasıl kullanabiliriz buna değineceğim. Göreceğiniz ve kullanacağınız servisleri ben Visual Studio 2010 ile oluşturdum ve Windows sunucumda yayınlıyorum.
Önemli bir ayrıntı; bu servisleri Access gibi Office bileşenleri ile kullanmak için bilgisayarınıza aşağıdaki linkte bulunan Microsoft SoapToolkit’i mutlaka kurmanız gerekiyor. Zaten bana göre her pc de mutlaka kurulu olmalıdır. Boyutu da ufaktır merak etmeyin, 3,6 MB.
http://www.microsoft.com/download/en/det...x?id=13456
Artık örneğimize ve açıklamalarımıza geçebiliriz.
İlk servisimizi yazalım;
vb.net
- <WebMethod(Description:="Bir String Collection oluşturalım")> _
- Function TakimlarAl(ByVal kriter As String) As List(Of String)
-
- Dim takimlar As New List(Of String)(New String() {"Access-Sql.com", "AccessCage.com",
- "Fenerbahçe", "Galatasaray",
- "Beşiktaş", "TrabzonSpor",
- "BursaSpor", "Barcelona",
- "Real Madrid", "LiverPool",
- "Arsenal", "Berkant Öztürk"
- })
-
- Dim TakimFiltre = takimlar.FindAll(Function(b) b.ToLower().Contains(kriter.ToLower))
- 'Dim TakimFiltre = takimlar.FindAll(Function(b) b.Contains(kriter)) ' Küçük-Büyük Harf Duyarlı
-
- If TakimFiltre.Count = 0 Then
- takimlar.Clear()
- takimlar.Add("Aradığınız kriter veriler içinde yok!")
- Return takimlar
- Else
- Return TakimFiltre
- End If
- End Function
Burada kendimiz bir string collection oluşturuyoruz. Gördüğünüz gibi bazı takım isimleri yazdım ve bir de kriter ekledim. Bu kritere göre (contains – içinde geçen) server tarafında filtre yapacaktır. Server tarafında yapmamız bize çok büyük fayda sağlayabilir. Yüzbinlerce verimiz olduğunu düşünürsek bunu daha iyi idrak edebilirsiniz. Bu fonksiyonumuzu Access tarafında nasıl kullandığımıza bakalım.
Visual Basic
- Private Sub BtnTakimAl_Click()
-
- Dim oSOAPClient As New SoapClient30
- oSOAPClient.MSSoapInit Servisim
-
- If IsNull(Me.TxtKriter) Then Me.TxtKriter = ""
- Listem = oSOAPClient.TakimlarAl(Me.TxtKriter)
- Dim bb As Variant
- Me.LstTakimlar.RowSource = ""
- For Each bb In Listem
- Me.LstTakimlar.AddItem (bb)
- Next
- Set oSOAPClient = Nothing
- End Sub
Örnekte de göreceğiniz gibi sol üsteki liste kutusunun yanında yer alan düğmeye basarak takımları liste kutusuna dolduruyoruz. Sarı filtre kutusuna yazacağımız karakterlere göre de tekrar düğmeye basarak server taraflı filtre edebiliriz. Boş olması halinde tüm takımlar gelecektir.
Şimdi biraz daha basit bir fonksiyon hazırlayalım ama yine parametreli olsun.
vb.net
- <WebMethod()> _
- Public Function Merhaba_De(Ad As String) As String
-
- Return "Merhaba sayın " & Ad
-
- End Function
Göreceğiniz gibi çok basit fonksiyon bize “Ad” değişkenimize göre bir string döndürecektir.
Access tarafına geçelim;
Visual Basic
- OzelMesaj = oSOAPClient.Merhaba_de(Environ("UserName"))
- MsgBox OzelMesaj
Bize pc kullanıcı ismimize göre yukarıdaki web metodumuzda dönen stringi verecektir. Siz isterseniz environ kullanmak yerine kendi belirlediğiniz şekilde bir değer atayabilirsiniz tabii..
Bir de olmazsa olmazlardan Merkez Bankası döviz kuru almaya bakalım. Merkez bankası bze bunu zaten xml servisi olarak veriyor ama biz burada bu servisten kendimize bir web servis metodu yaratacağız.
vb.net
- <WebMethod()> _
- Public Function KurAl() As String
-
- Dim kurlar As XElement = XElement.Load("http://www.tcmb.gov.tr/kurlar/today.xml")
-
-
- Dim dolar As XElement = (From b In kurlar.Elements
- Where b.Attribute("CurrencyCode").Value = "USD").Single()
-
-
- Return "USD Alış: " & dolar.Element("ForexBuying").Value & " TL" &
- vbCrLf & vbCrLf &
- "USD Satış: " & dolar.Element("ForexSelling").Value & " TL"
-
- End Function
Bu fonksiyonda sadece USD alış ve satış kurlarını aldırdım ve xml linq kullandım.
Access tarafına bakalım;
Visual Basic
- oSOAPClient.MSSoapInit Servisim
- Kurlarim = oSOAPClient.KurAl
- MsgBox Kurlarim
Mesaj kutusunda bize USD alış ve satış kurunu verecektir.
Şimdi biraz daha gelişmiş bir web methodu yazalım. Bu sefer amacımız bir veritabanında kayıtlı verileri almak olsun. Ben bunun için Sql Server da bulunan ve bizim AccessCage de yer alan son medyaları aldırdım. Medya ismi, medya türü ve medyayı ekleyen olarak 3 sütunda liste kutusunda yer alacaklardır.
vb.net
- Public Class SonMedyalar
-
- Public Property KonuBaslik() As String
- Public Property KonuTur() As String
- Public Property KonuEkleyen() As String
- Public Property KonuTarih() As Date
-
-
-
-
- End Class
-
- <WebMethod()> _
- Public Function SonMedyalarAl() As List(Of SonMedyalar)
-
-
-
- Using bb As New MedyalarEntities
-
- Dim Medyalarim As List(Of SonMedyalar) = (From b In bb.View_Medyalar Order By b.MedyaId Descending
- Select New SonMedyalar With
- {.KonuBaslik = b.MedyaBaslik,
- .KonuEkleyen = b.MedyaEkleyen,
- .KonuTarih = b.MedyaTarih,
- .KonuTur = b.GrupAd}).Take(20).ToList
-
-
-
- Return Medyalarim
-
- End Using
-
- End Function
Ben veritabanından Entity Framework kullanarak aldırdım. Bu detaya şimdi girmek istemiyorum ama sizler çeşitli yollarla bu verileri aldırabilirsiniz.
Access tarafı bizi bekler;
Visual Basic
- Listem = oSOAPClient.SonMedyalarAl
-
-
- Dim bb As Variant
-
- Me.LstSonMedyalar.RowSource = ""
-
- For Each bb In Listem
- Me.LstSonMedyalar.AddItem (bb(0).Text & ";" & bb(1).Text & ";" & bb(2).Text)
-
- Next
Almışken bizim forumun RSS bilgilerini de alsak hiç fena olmaz

vb.net
- Public Class RSSBasliklar
-
- Public Property Baslik() As String
- Public Property Link() As String
- Public Property Detay() As String
-
- End Class
-
-
- <WebMethod()> _
- Public Function RssAl() As List(Of RSSBasliklar)
-
- Dim document As XDocument = XDocument.Load("http://www.access-sql.com/syndication.php?limit=25", LoadOptions.None)
-
-
- Dim Rsslerim As List(Of RSSBasliklar) = (From b In document.Descendants("channel").Elements("item")
- Select New RSSBasliklar With
- {.Baslik = b.Element("title").Value,
- .Link = b.Element("link").Value}).ToList
-
- Return Rsslerim
-
- End Function
Access;
Visual Basic
- Dim bb As Variant
-
- Me.LstRss.RowSource = ""
-
- For Each bb In Listem
- Me.LstRss.AddItem (bb(0).Text)
- Me.LstRss.AddItem (bb(1).Text)
- Next
Gördüğünüz gibi çeşitli veri kaynaklarından verileri Access ile kolayca aldık. Kimisi hazır servislerdi, kimi değerleri biz kod tarafında ekledik kimilerini de veritabanından çağırdık.
Aşağıdaki örnekten yukarıdaki tüm verileri alabilirsiniz.
Berkant Öztürk
[Access-Sql.com]
Javascript
- this.setState({sign:"Here comes the sun...."})


ender raslanan örneklerden biri daha
Yazan okuyan sağolsun, çözene saygılar. Kolaylaştırınız, zorlaştırmayınız.
