Arkasokak Logo





Forum Arkasokak > HAYATIN İÇİNDEN > İnternet Teknoloji Tasarım » SQL 1.Bölüm İçin Örnek Program
.Form1 görünümü aşağıdaki gibi olmalıdır. İşte gördüğünüz üzere 4 text box,4 label, 8 buton,1 frame mevcut.Form görünüşünü hazırladığınız zaman frame,düzelt ...

Cevap
  #1  
Eski 19-07-2006, 11:04 PM
empedoCles kullanıcısının avatarı
Müdavim
 
Mesaj: 123
empedoCles kullanıcısına MSN aracılığı ile mesaj yolla
SQL 1.Bölüm İçin Örnek Program

.Form1 görünümü aşağıdaki gibi olmalıdır.


İşte gördüğünüz üzere 4 text box,4 label, 8 buton,1 frame mevcut.Form görünüşünü hazırladığınız zaman frame,düzelt ve sil butonlarının visible özelliğini false, text kutularının enabled özelliğinide false yapın.Bu arada Frame üstünde bulunalar frame haret edincede etmektedir.Yani Objeler frame üstüne oluşturulmuştur.

Not : Project menüsünden referances'i seçip karşınıza gelecek olan pencerede "Microsoft ActiveX data Objects 2.5 Library" veya sizde olan sürümünü seçmeyi unutmayın.Höğ bu nedir derseniz ADO,DAO,Laho yazısını oluyun...

Veritabanı'na gelince access'i açın ve id,okulno,adisoyadi,sinif fieldlerini sıra ile otomatiksayı,sayı,metin,metin şeklinde tanımlayın.ve tablo ismi olarak ogrenci verin.Ve veritabanını c:\uygulama dizini içine atın.

Evet şimdi kodları açıklayarak ilerleyelim.



Kod:
Option Explicit ' genaral Declarations
Dim baglanti
Dim rs
Dim sql
Dim id 
Gördüğünüz gibi baglanti,rs,sql ve id değişkenleri tanımlanıyor.bildiğiniz gibi general declarations'ta tanımlanan değişkenleri ilgili fom üzerinde heryerde kullanabiliyoruz....

Kod:
Private Sub Form_Load() ' form load yaw ehueheu
Set baglanti = New ADODB.Connection
baglanti.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & "c:\uygulama\data.mdb"
End Sub 

Form Load 'da ado veritabanına bağlanıyoruz.Dikkat edin Sql komutlarını kullanacağımız Ado kullanmayacağız demek değildir.Yani Ado veya Dao kullanarak veritabanına bağlanmadan Sql komutları bir işe yaramaz.


Kod:
Private Sub Command1_Click() 'yeni Kayıt
Text1.Text = ""
Text1.Enabled = True
Text1.BackColor = &HC0FFFF
Text2.Text = ""
Text2.Enabled = True
Text2.BackColor = &HC0FFFF
Text3.Text = ""
Text3.Enabled = True
Text3.BackColor = &HC0FFFF
Text1.SetFocus
End Sub 
Yeni kayıt butonunun yaradığı iş textbox ların içini boşaltmak,renklerini değiştirmek ve enabled özelliğini true hale getirmesi......



Kod:
Private Sub Command2_Click() 'kaydet
If IsNumeric(Text1.Text) = True Or Text1.Text <> "" Then
sql = "select okulno from ogrenci where okulno=" & Text1.Text
Set rs = baglanti.Execute(sql)
If Not rs.EOF Then
MsgBox ("Böyle bir Kayıt Var")
Set rs = Nothing
GoTo 10
else
Set rs = Nothing
End If

sql = "insert into ogrenci(okulno,adisoyadi,sinif) values(" & Text1.Text & ",'" & Text2.Text & "','" & Text3.Text & "')"
baglanti.Execute (sql)
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Else
MsgBox "Okul numarası Strign değer alamaz veya okul numarası boş olamaz"
10 End If

End Sub 


Kaydet butonu biraz karışık gibi görünüyor ama kesinlikle değil.Veritabanında okulno field'ini sayı olarak tanımladığımızda kullanıcı gelip okulno yerine string değer girdiğinde program doğal olarak "ne ediyon kardeşim" diyerekten hata verecektir.Burda program haklıdır.Ama bir programcı olarak programı sizin eğitmeniz daha iyi olur.Prgramı eğitmek için Isnumeric() fonksiyonu kullandık.Bu fonksiyon bir değişkenin sayı olarak işleme tabi tutulup tutulmayacağını sınar.Eğer değer integer yani sayı ise true değilse false değerini verir. "If IsNumeric(Text1.Text) = True Or Text1.Text <> "" Then" burdada aynı şekilde eğer text1'in değeri integer ise ve text1 boş değilse devam ediyor.Eğer koşul sağlanmıyorsa "Okul numarası Strign değer alamaz veya okul numarası boş olamaz" mesajını veriyor.

Evet gördüğünüz gibi sql = "select okulno from ogrenci where okulno=" & Text1.Text ifadesi ile okulno field'i içinde bulunan ve okulno değeri text1'e eşit olan kayıtları değerleri alıyoruz.Ve bunu Set rs = baglanti.Execute(sql) diyerek işliyoruz.Dikkat edin set rs dedik ancak kayıt seti tanımlamadık.Şu an elimizde sadece SQL komutundan seçilecek öğerenci bilgilerinin bulunduğu bir dizi değişken var.Burda program kontrolü elimizde olduğundan iki değer olabilir.1-1 Tane Kayıt var, 2- Kayıt yok.Bu sınamayı If Not rs.EOF Then ile ayapıyoruz.Eğer kayıt varsa "Böyle bir kayıt var" mesajını kullanıcıya veriyoruz ve Set rs = Nothing ile dizi değişkenini tabir yerinde ise kapatıyoruz ve 10 ile işaretdeğimiz satıra yolluyoruz.Eğer kayıt yok ise yine Set rs = Nothing ile dizi değişkenini tabir yerinde ise kapatıyoruz.Ama bu sefer hiçbir satıra yollamıyoruz.Aynen devam ediyor.

İşte en can alıcı nokta verileri veritabanına çakmak için
sql = "insert into ogrenci(okulno,adisoyadi,sinif) values(" & Text1.Text & ",'" & Text2.Text & "','" & Text3.Text & "')" ifadesini kullanıyoruz.Ancak bu satrın işlenmesi demek veriler çakıldı demek değildir.Nasıl çakacağıma geçmeden önce hemen bu sql2 ifadesini açıklayalım.Bidiğiniz gibi inster into komutu ile kayıt ekliyorduk.Sanırıminsert into ogrenci(okulno,adisoyadi,sinif) bölümüne kadar herkes anladı.daha sonra values(" & text1.text & ",'" dedik.Evet text1 değeri yani okulno veritabanında sayı(integer) olduğundan '(tırnak) kullanmadık.Ancak adisoyadi ve sinif değeri metin(string) olduğundan '(tırnak kullandık).İşte şimdi hayde hep beraber veriyi çakalım.baglanti.Execute (sql) işte sql komutundan sonra bu ifade işlendiği an veri çakılır.Şimdi "yukarda set rs =baglanti.execute(sql) dedin burda neden sadece baglanti.execute(sql) dedin" dediğinizi duyar gibiyim.Hemen açıklayalım.Şimdi orda bize değer lazımdı.Yane kayıt varmı yok mu diye.Burda değere gerek yok.Sonuçta değeri bilsekte veriyi çakacaz bilmesekte.Bu işlemlerin sonunda text kutuları boşaltılıyor.Ve kayıt işlemi bitiyor.



Kayıt Düzeltme,silme işlemine geçmeden kayıt aramayı anlatayım.Çünkü burda kayıt düzeltmeyi ve silmeyi alakadar eden birkaç husus var.

Ara butonuna tıklanınca frame1'i 2040,720 koordinatına getiriyor.Daha sora frame1'in visible özelliğini tru yapıyor ve görünür hale getiryor.Şimdi can alını nokta aşağıda...




Kod:
Private Sub Command7_Click() ' bul
On Error Resume Next
sql = "select * from ogrenci where okulno=" & Text4.Text
Set rs = baglanti.Execute(sql)
Text1.Text = rs("okulno")
Text2.Text = rs("adisoyadi")
Text3.Text = rs("sinif")
id = rs("id")
If Err Then
MsgBox "aradığınız kayıt bulunamadı"
GoTo 10
End If
Command3.Visible = True
Command4.Visible = True
Text1.Enabled = True
Text1.BackColor = &HC0FFFF
Text2.Enabled = True
Text2.BackColor = &HC0FFFF
Text3.Enabled = True
Text3.BackColor = &HC0FFFF
Text1.SetFocus
Frame1.Move 5000, 5000
Frame1.Visible = False

10 Set rs = Nothing

End Sub 

Ara butonuna bastınız.Frame gelince orda bulunan text kutusuna okulnumarasını giriyorsunuz.Bul butonuna basıyorsunuz ve......

İlk önce on error resume next diyoruz çünkü kayıt bulunamayınca program hata verecektir.Bunun nedeni örneğin kayıt bulunamayınca rs("okulno") 'un değerinini boş olması yani öyle bir kayıt olmaması ve bizim bu değeri başka bir değişkene aktarmak isteğimizdir.Eğer hata yoksa zaten bir okulno'da en fazla bir öğrenci olacağından sql komutu doğrultusunda tek seçenek gelecektir.Ve bu değerleri sırası ile text1,text2,text3'e ve id değişkenine aktarıyoruz.Sanırm neden id değişkenine rs("id") değerini aktarıyoruz diyeceksiniz.İşte kayıt düzeltme ve silme işleminde bu id değeri ile işi koparacağız.Daha sora eğer hata varsa ki bu kayıt bulunamamasına denk geliyor
"aradığınız kayıt bulunamadı" cinsinden kullanıcıya bir mesaj veriyoruz ve 10 ile işaretlediğimiz satıra gönderiyoruz. Ancak eğer hata yoksa ki buda kayıt bulundu demek oluyor dediğim gibi ilgili yerlere bilgiler aktarılıyor ve command3,command4'ün visible özelliği true oluyor.Bildiğiniz gibi command3 ve commad4 kayıt düzeltme ve silme butonuna denk geliyor...Daha sonra text1,text2,text3'ün enabled özellikleri true arka renkeride sarı hale getiriliyor.İmleç text1'e yollanıyor.


Kod:
Private Sub Command8_Click() 'iptal
Frame1.Move 5000, 5000
Frame1.Visible = False
End Sub 



Kod:
Private Sub Command3_Click() ' Düzelt
sql = "select okulno from ogrenci where okulno=" & Text1.Text & " and id <>" & id
Set rs = baglanti.Execute(sql)
If Not rs.EOF Then
MsgBox ("Böyle bir Kayıt Var")
Set rs = Nothing
GoTo 10
Else
Set rs = Nothing
End If
sql = "update ogrenci set okulno=" & Text1.Text & ",adisoyadi='" & Text2.Text & "', sinif='" & Text3.Text & "' where id=" & id
baglanti.Execute (sql)
10
End Sub 


İşte size düzeltme.Düzeltme işleminin kaydetme 'den iki tane farklı yanı var.1 insici okulno sorgulamada 2 ncisi ise instert into yerine update kullanılmış olması.Sanırm bu farkarı açıklamam yeterli olacaktır.Okulno sorgulamak için sql = "select okulno from ogrenci where okulno=" & Text1.Text & " and id <>" & id dedik.Şimdi bu sql cümlesini açalım.Hani kayıt ararken bkayıt bulunduğu zaman id değişkenine ilgili kayıtın veritabanında otomatiksayı olan değerini atamıştık.Sizde bana ne iş diye sormuştunuz.Burdki sql cümlesinde where sorgusunu kullanarak okulno değeri text1'e eşit olan ancak id değeri id değişkenine eşit olmayan kayıtlar seçiliyor.Peki neden id'yi işe kattın derseniz nedeni şudur.Eğer id'i işe katmasaydık sql = "select okulno from ogrenci where okulno=" & Text1.Text & "'" diyecektik.Bu durumda düzeltmekte olduğunuz kayıtın eğer okulno sunu değiştirmezseniz"Böyle bir Kayıt Var" mesajını alacaktınız.Çünkü düzeltmekte olduğunuz kayıtta zaten veritabanında ve siz onuda işleme tabi tutuyorsunuz.Ancak okul değerinin girildiği text1'in enabled özeliği false olursa değiştirilemez ve sizde bu sql sorgusunu yazmak zorunda kalmazsınız.

sql = "update ogrenci set okulno=" & Text1.Text & ",adisoyadi='" & Text2.Text & "', sinif='" & Text3.Text & "' where id=" & id dediğimizde id 'si aramada aldığımız değere eşit olan kayıtın bilgilerini değiştir demek oluyor.Budda where sorgusu ile oluyorBunun dışında zaten kalıp olan update ifadesi......




Kod:
Private Sub Command4_Click() 'Sil
sql = "delete from ogrenci where id=" & id
baglanti.Execute (sql)
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text1.Enabled = False
Text2.Enabled = False
Text3.Enabled = False
Text1.BackColor = &H80000005
Text2.BackColor = &H80000005
Text3.BackColor = &H80000005
End Sub 



Silme işleminde delete komutunu kullandık.Kayıt aradıktan sora atanan id değişkeni sayesinde id değeri tek olduğundan veritabanındaki idye'eşit olan kayıt siliniyor...Gerisini açıklamay bile gerek yok....



Kod:
Private Sub Command6_Click()
baglanti.Close
Set baglanti = Nothing
End
End Sub 



Erhan SELİMOĞLU 'na Teşekkürler
imza
#include <middleeast.h>

#define ISRAELIS foul_beasts






Alıntı Yaparak Cevapla
Cevap

Konu Araçları
Görünüm Modları



Saat 09:49 AM.


Copyright ©2005 - 2008 Arkasokak.Net
Tasarım: NoDRaC
Bize Ulaşın - En Üst
Powered by vBulletin
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0