Veri Taban ve Visual Basic Geçmite, random dosya ve yap deikenleri ile oluturulan kaytlar bugünkü veri taban uygulamalarnn temelini oluturmaktadr. Random dosya ve yap deikenleri ile oluturulan veri taban programlama gelenei daha sonra yerini Clipper, Dbase, Paradox gibi uygulamalara brakmtr. Ancak bu uygulamalar iletim sistemi desteinden bamszd ve karakter yönelimli (command oriented) idi. Daha sonralar, bilgisayarlardaki veri taban uygulamalarnn önem kazanmas ile daha üst düzey veri taban uygulamalar, veri taban ortam gelitiricileri ve iletim sistemi destei ile veri tabanlar oluturulmaya baland. Bunlara en önemli örnekler ise Access, Oracle, MySql vb. Veritabanl ile iletim sistemlerinin etkileimlerinde arabirim olan Veri Taban Motorlar (DataBase Engine) gelitirildi ve ortaya çkan model aada verildii gibi bir ortam gelitirildi. Eski Sistem PC Tabanl Sistem Kullanc AraBirimi Kullanc AraBirimi Veri Saklama Alan VeriTaban Motoru Veri Saklama Alan Kullanc Arabirimi ve Uygulama Kodlar: Kullancnn etkileimde olduu ortamdr. Gelitirme ortam ya uygulama yazlm eklindedir ya da kod girii eklindedir. VeriTaban Motoru: Kullanc arabirimi ile veriler arasnda bir arabirim oluturur. Ayn zamanda da iletim sisteminin bir parças olarak sistem çars eklindedir. Özellikle Microsoft, VeriTaban uygulamalarnda, VeriTaban motoru olarak MS Jet VeriTaban Motorunu (MS Jet DataBase Engine) kullanmaktadr. Bu motor, sistem
çarlarndan oluan DLL dosyalarn içermektedir. Bu motorlar ayn zamanda SQL sorgulama diline uyumludur. Veri Saklama Alan: Veri saklama alanlar, elektro-manyetik ortamlardr. Ancak bu modelde kastedilen ve ele alnan, genellikle veri taban dosyalardr. Bu etkileimler aadaki gibi tanmlanabilir. Uygulama Program VeriTaban Motoru VeriTaban Dosyas SQL Veriyi Sorgulama Veri 8lemleri Kayt Kümesi (Record Set) VeriTaban (Database)
Yukarda tanmlanan etkileim, bir model gerei u ekilde Visula Basic (Microsoft) gelitirme ortamnda u hiyerari ile ele alnrlar. VeriTaban Motoru WorkSpace VeriTaban Tablolar (TableDef) Sorgular (QueryDef) VeriKümeleri (RecordSet) Alanlar (Fielads) Kaytlar (Record) Hiyerari u ekilde açklanabilir: Kaytlar, alanlardaki kaytl verilerdir. Kaytlar, alanlarn içindedir. Alanlar, tablolarn ya da sorgularn alanlar olabilir. Tablo ve sorgular veritabann oluturur. Veritabanlar ise bir araya gelerek çalma alanlarn (WorkSpace) oluturur. Bu hiyerarik bütün, veri eriim nesnesi (Data Access Object-DAO) olarak ifade edilen bir nesne ile yönetilir. Verilere yönelik bilgi uygulama programndan veritabanna ya da veritabanndan uygulama programna göredir. Ancak buradaki amaç, DAO ya da SQL ile belirlenir. DAO ile verilere dolaysz eriim olanakl iken, SQL ile uygulama kodlar yazmak suretiyle veriye eriim ve veri/veritaban ilemleri olanakldr. SQL (Yapsal Sorgulama Dili - Structured Query Language) SQL, bir veritaban programlama dilidir ve tablolar üzerinde sorgulama özelliine sahiptir. Bu dilin iki özelliinden söz etmek olanakldr. Bunlar srasyla; Veri Tanmlama Dili (Data Defination Language-DDL) ve Veri 8leme Dili (Data Manipulation Language- DML).
Veri Tanmlama Dili: Bu veritaban dilinin; varolan bir veritabanna yeni tablolar ya da tablolara alanlar eklemek (CREATE), bir veri tabanndan tablo silmek (DROP) ve bir tabloya alan eklemek ya da alan özelliklerini deitirmek (ALTER) gibi bir ilevsellii vardr. Örnekler: CREATE TABLE Tablo_Adi ([Alan_Adi] Alan_Ozellik CREATE TABLE Kisiler ([Ad] TEXT (25), [SoyAd] TEXT (25)) ALTER TABLE Tablo_Adi {ADD {COLUMN field type[(size)] [NOT NULL] DROP {COLUMN field I CONSTRAINT indexname} } ALTER TABLE Kisiler ADD COLUMN Eposta TEXT (30) DROP {TABLE Tablo_Adi } DROP TABLE Kisiler Veri '(leme Dili: Bu veritaban dilinin ise; bir tablodaki kaytlardan belirli ölçütlere göre sorgulama yapmak (SELECT), tabloya yeni kaytlar ekelemek (INSERT), varolan kaytlar üzerinde deiiklikler yapmak (UPDATE) ve tablodan kayt silmek (DELETE) gibi ilevsellii vardr. Örnekler: SELECT Alan_Adi FROM Tablo_Adi WHERE Ölçütler ORDER BY HAVING GROUP BY INSERT INTO Tablo_Adi (Alan_Adi) VALUES (Deger) INSERT INTO Kisiler (Ad, SoyAd) VALUES ( Ali, Güzel ) SQL her ne kadar programlama dili olarak ifade edilse de aslnda deikenleri bir tablonun alanlar, verileri ise alanlara ilkin kaytlar olan ve en önemli özellii ise birer sql cümleciinden (sql clauses) olumasdr. Bu dil yaps, yukarda belirtilen DDL ve DML komutlarna eklenerek oluturulurlar. Örnein; SELECT Alan_Adi FROM Tablo_Adi WHERE Alan_Adi= Bilgisayar ; SELECT DML komutu FROM,WHERE Sql Cümlecii Alan/Tablo Adi 8lem alanlar Bu sorgu cümlesi ise; belirtilen tablonun belirtilen alannda arama yaparak, Alan_Adi nda kaytl Bilgisayar kaytl bilgileri seçmesidir (görüntülemesi).
SQL cümleci.inde kullanlan atomlar: FROM: WHERE: Tablodan seçilecek/görüntülenecek alanlar belirler. Birden fazla alan görüntülenecek ise alan adlar, ila ayrlr. Koul ifade eder. Seçilen alanda belirli bir ölçüte göre seçme yaplmasn salar. GROUP BY: Özel/belirtilen gruplara göre kaytlarn seçilmesini salar. ORDER BY: Seçilen kaytlarn görüntülenmesi srasnda sralama ölçütünü belirlen. SQL cümleci.inde kullanlan operatörler: Mantksal Opertörler: Birden fazla koul söz konusu olduunda kullanlr ve koullar birbirine balar. AND, OR, NOT bu operatörlere örnektir. SELECT Alan_Adi FROM Tablo_Adi WHERE Kosu11 AND Kosul2 Kar(la(trma Opertörler: Ölçüt olarak kullanlan alan deerleri (kaytlar) için karlatrma amaçl kullanlr. < Daha Küçük <= Daha küçük ya da eit > Daha Büyük >= Daha büyük ya da eit = Eit <> Eit Deil BETWEEN 8ki deerin arasndaki deerler LIKE Benzerlik gösteren deerler IN Özel kaytlar için kullanlr. Örnekler: SELECT LastName, FirstName FROM Employees;
1) Aadaki yapya göre bir access veritaban oluturunuz. Tablo_Adi Rehber Dosya Ad Deneme.mdb Rehber: Ad SoyAd E-Posta Dogum_Tarihi String String String String 2) Formunuza bir DAO nesnesi ekleyiniz. 3) DAO nesnesi, Deneme.mdb veritaban dosyasndaki bir tabloyu temsil edebilir. Bu tablomuzun ad: Tablo dur. Tablo içerisindeki verileri program ortamna ancak, kayt kümesi (RecordSet) eklinde alacamzdan dolay öncelikle programmzn içerisinde, DAO yu öncelikle tanmlamamz gerekmektedir. VeriTaban KaytKümesi Deneme.mdb Rehber
Nesne Deikenleri (Global Tanml) Nesne-Tablo Balantlar Çkta nesne deikenlerini yoket VeriTaban Set VT=OpenDatabase( DataBase Ad ) Tablolar Set TB=VT.OpenRecordSet( Tablo Ad ) Alanlar TB.Fields( Alan Ad ) Böylelikle Tablodaki tüm kaytlar TB adl nesne deikenindedir. Aadaki örnekte, Tablo verilerini temsil eden TB deikenini batan sona okutup kontrol edebilirsiniz. Do Until TB.EOF If TB.Field( Alan_Adi )= Ahmet Then Sayac=Sayac+1 TB.MoveNext Loop
Projeyi gelitirelim: Data1 (DAO) nesnesinin visible özelliini False yapalm ve aadaki alanlar ekleyelim. 8leri Butonu Geri Butonu Sorgulama Butonu General Declaration K*sm*: Dim VT As Database Dim Kayit As Recordset Dim Sorgu As Recordset Private Sub Form_Load() Set VT = OpenDatabase(App.Path & "\" & "Deneme.mdb") Set Kayit = VT.OpenRecordset("Rehber") Set Sorgu = VT.OpenRecordset("SELECT * FROM Rehber';") End Sub Text1.Text = Kayit.Fields("Ad") Text2.Text = Kayit.Fields("SoyAd") Text3.Text = Kayit.Fields("EPosta") Text4.Text = Kayit.Fields("Dogum_Tarihi") Private Sub Form_Unload(Cancel As Integer) Set VT = Nothing Set Kayit = Nothing Set Sorgu = Nothing End Sub
Tablo verileri Kayit adl nesne deikeninde tutulacaktr. Select * FROM Rehber; SQL cümleciinin sonuçlar ise Sorgu nesne deikeninde saklanacaktr. Private Sub ileri_click() On Error GoTo Hata Kayit.MoveNext Text1.Text = Kayit.Fields("Ad") Text2.Text = Kayit.Fields("SoyAd") Text3.Text = Kayit.Fields("EPosta") Text4.Text = Kayit.Fields("Dogum_Tarihi") Hata: Exit Sub End Sub Private Sub geri_click() On Error GoTo Hata Kayit.MovePrevious Text1.Text = Kayit.Fields("Ad") Text2.Text = Kayit.Fields("SoyAd") Text3.Text = Kayit.Fields("EPosta") Text4.Text = Kayit.Fields("Dogum_Tarihi") Hata: Exit Sub End Sub Private Sub sorgulama_click() 'Bugün DoAanlar Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" Do Until Sorgu.EOF If Sorgu.Fields("Dogum_Tarihi") = Format(Now, "d.m.y") Then Text1.Text = Sorgu.Fields("Ad") Text2.Text = Sorgu.Fields("SoyAd") Text3.Text = Sorgu.Fields("EPosta") Text4.Text = Sorgu.Fields("Dogum_Tarihi") Exit Sub End If Sorgu.MoveNext Loop End Sub
Uygulama 2 Ödevi Örencinin Ad String Soyad String Numaras String Cinsiyeti String*1 Dersin Ad String Dersin Kodu String*6 (BTÖ304 gibi) Ders Yl String (2005 gibi) Dönemi String (Güz/Bahar) Notu Single (50 ya da 78 gibi) Veri Girileri Örenci Bilgi Girii Örenci Bilgi Deiiklii Not Girii Veri Sorgulama Ders Kodu-Yl-Dönemi ne göre örenci saylar (BTÖ304-2005-Bahar) 2005 Bahar Döneminde BTÖ 304 dersini alan örenci listesi Derse ilikin kz ve erkek örencilerin baar ortalamalar (BTÖ304-2005-Bahar- E -Notu) 2005 Bahar Döneminde BTÖ 304 dersini alan erkek ve kz örencilerin ortalamas