sadık özdoğan Moderatör
ÜYELİK TARİHİ : 12/09/09 YER : ANKARA Yaş : 33 MESAJLAR : 872 Rep Gücü : 22 Tecrübe Puan'ı : 2546 Doğum tarihi : 10/04/91 RUH HALİ : Hangi Takımlı : galata saray İş/Hobiler : bilgisayarla ilgilenmek, şiir yazmak. Lakap : efsane Hakkımda : ben sadık özdoğan: lise 3 öğrencisiyim 18 yaşındayım.
| Konu: vb sql kodları Çarş. Mart 09, 2011 4:03 pm | |
| *** İlk önce bir Access veri tabanı oluşturalım. Adı veri.mdb olsun. *** İçerisinde kayit adında bir tablo oluşturalım. *** Tabloya 4 değişken gireceğiz.
id Otomatik Metin(ve birincil anahtar) adi Metin soyadi Metin telefon Metin
*** Şimdi açıklamaları yapalım:
id : Neden otomatik metin ve birincil anahtar; Çünkü biz bu kayıda karışmayacağız. Her yeni kayıt yapıldığında ACCESS otomatik olarak buraya bir rakam atayacak ve birincil anahtar olduğu için aynı numaraya sahip bir başka kayıt olmayacak. Bu numara bize silme ve düzeltme işlemlerinde yarayacak.
adi, soyadi, telefon : Neden Metin olduğu ortada sanırım. Sayısal bir işlem yapmayacağız.
*** Çalışma alanımız C:\Belgelerim\ilksql klasörü olsun. Ve veri tabanımızı buraya koyalım.
*** Kayıt alanımızda şunlar kayıtlı olsun
kayit id adi soyadi telefon 1 Şevket Bulamaz 05355555555 2 Özge Gölbaşı 05352552525 3 Çağrı Solakoğlu 05354212121 4 Sadık Bulamaz 05423454545 5 Mediha Bulamaz 05558898998 6 Vbturk NoktaNet 05455617181
*** Şimdi kodlarımızı yapalım. Formumuza bir listbox ekleyelim. Adı listbox1. Form load olayına şunu yazalım.
Private Sub Form_Load() On Local Error GoTo hata ‘program içerisinde hata olduğunda hata etiketine gönderiyoruz. Set baglanti = New ADODB.Connection baglanti.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & App.Path & "\veri.mdb" ‘yukarıdaki 2 satır bizim veri tabanı ile bağlantı kurmamıza yarıyor. ‘app.path olayı programımızın da c:\belgelerim\ilksql klasöründe olduğunu anlatıyor. ‘yani programı nerede çalıştırırsak çalıştıralım program veri.mdb dosyasını yanında arayacak.
sql = "select adi,soyadi,telefon from kayit order by soyadi" Set rs = New ADODB.Recordset rs.Open sql, baglanti, 1, 3
‘yukarıdaki 3 satırda ise veri tabanı içindeki verilere ulaşmak için ‘ilgili tablo ile bağlantımızı kuruyoruz. ‘sql değişkenimize kayit tablosu içinden adi soyadi ve telefon değişkenlerini seçmesini ‘ve bunları soyadi sırasına göre dizmesini söyledik. Eğer ki en sona DESC yazsaydık ‘dizilimi z `den a `ya yani azalan sıraya göre yapacaktı. ‘sql bağlantı tiplerini program sonrasında etraflıca anlatacağım. Şimdilik bir fikrimiz ‘olması açısından olaya böyle başladık.
Dim adi, sadi, teli As String ‘şimdi 3 değişken tanımladık işi biraz uzattık Do While Not rs.EOF ‘Kayıt sonu değilse veya boş değilse do loop arasındakileri yap adi = rs("adi") ‘veri tabanındaki adi değişkeninin değerini adi değişkenine atadık sadi = rs("soyadi") ‘veri tabanındaki soyadi değişkeninin değerini sadi değişkenine atadık teli = rs("telefon") ‘veri tabanındaki telefon değişkeninin değerini telii değişkenine atadık listbox1.AddItem adi & " " & sadi & " " & teli ‘ve bu değişkenleri ard arda listbox a ekledik rs.MoveNext ‘Birsonraki kayıda geç Loop ‘Do ifadesinin doğasını gerçekleştir. GoTo kayitson ‘işlem bittiğinde kayıtson a git ve bitir. hata: ‘hata etiketi MsgBox "HATA OLUŞTU" & Chr(13) & Err ‘hata oluştu ise haber ver ve hata sebebini yaz kayitson: ‘işlem bitti etiketi End Sub
Eğer ki bir yazım yanlışı yapmadıysanız listbox içerisinde kayıtlarınızı görebilirsiniz.
Sql içerisindeki “select” deyimi bize listeleme ,düzenleme ve kayıt girişinde yarayacak. Ben işlemleri şimdilik recordset kullanarak yapıyorum bide bunu yapmanın sql ile yolu var.
Mesela yani kayıt eklemek için sql değişkeni şöyle olacak:
sql="insert into kayit(adi,soyadi, telefon) values('Mustafa','KESER','05055050505')"
ve bu durumda hiç recordset açmamıza gerek kalmayacaktı.
sql = "select adi,soyadi,telefon from kayit order by soyadi" Set rs = New ADODB.Recordset rs.Open sql, baglanti, 1, 3
yerine
sql="insert into kayit(adi,soyadi, telefon) values('Mustafa','KESER','05055050505')" baglanti.execute(sql)
dememiz kayıt için yeterli olurdu.
Ancak recordset kullanarak kayıt eklemek şunların yapılmasını gerektiriyor.
Dim adi, sadi, teli as String adi = “Mustafa” sadi = “KESER” teli = “05055050505”
Set baglanti = New ADODB.Connection baglanti.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & App.Path & "\veri.mdb" sql = "select adi,soyadi,telefon from kayit order by soyadi" Set rs = New ADODB.Recordset rs.Open sql, baglanti, 1, 3 rs.AddNew rs(“adi”) = adi rs(“soyadi”) = sadi rs(“telefon”) = teli rs.Update
Recordset ile bir kayıt yaptık işte. Eğer ki textboxlardan veri alalım derseniz rs.AddNew rs(“adi”) = text1.text rs(“soyadi”) = text2.text rs(“telefon”) = text3.text rs.Update
şeklinde bir düzenleme yapmanız yeterli olacaktır.
*** Şimdi sql’in en çok işe yaradığı yerlerden birine göz atalım
ben adı Mustafa olan kişinin telefonunu değiştirmek istiyorum. Önce recordsetsiz sonrada recordsetli bir yapalım.
sql="update kayit set telefon='05332226655' where adi='Mustafa'" baglanti.execute(sql)
buradaki where komutu adı Mustafa olan herkesin telefon numaralarını değiştirir. İşte id burada işe yarayacak. Çünkü sadece bir tane id bir tane isime ait. Diyelim ki Bizim Mustafa’nın id si 15 olsun. Bu durumda komut,
sql="update kayit set telefon='05332226655' where id=15" baglanti.execute(sql)
olarak değişecektir.
15 numaralı kaydın telefon numarası değişti. Bir de recordset ile yapalım
Set baglanti = New ADODB.Connection baglanti.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & App.Path & "\veri.mdb" sql = "select id,telefon from kayit where id = 15" Set rs = New ADODB.Recordset rs.Open sql, baglanti, 1, 3 rs(“telefon”) = “05332226655” rs.Update
İşte bukadar basit. Değiştirme işlemini de bu şekilde yapıyoruz. *** En kolayı ise silme işlemi.
sql="delete from kayit where id=15" baglanti.execute(sql)
işte bukadar. Veri tabanından 15 numaralı kaydı bir anda sildik. Bu komut için recordset kullanmıyoruz. Çünkü bir zorluk çıkarmıyor. Recordset kullanmanın amacı toplu kayıt, listeleme ve aramalarda yarıyor. Recordset kullanmasak yaparmıyız. Tabi ki yapabiliriz. Uygun döngülerle her şey yapılabilir. Yada tüm database i boşaltmak istersek ;
sql="delete from kayit" baglanti.execute(sql)
yazmamız yeterli. Veritabanı bomboş…
| |
|