14 Mayıs 2013 Salı

Veritabanı - 10... Order By Geçti Kaldı Bilgilerinin Listelenmesi...


CheckedListBox ile aşağıda bir örnek uygulama gerçekleştirdik... Burada ki örnek uygulamada daha önceki kullandığımız okul tablosuna not alanını ekliyoruz... Öğrencilerin notları üzerinden değerlendirme yapacağız... 45 üzeri olanlar geçecek, 45 altı olanlar kalacaktır... Aynı zamanda max seçeneği seçili iken notları yüksekten düşüğe, min seçeneği seçili iken notları düşükten yükseğe sıralama yapacaktır... Bunun için DESC ve ASC kullanılacaktır... 

Formun tasarımı aşağıdaki gibi olacaktır... 

Form çalıştığında ise aşağıdaki gibi bir görüntü olacaktır... 
Örneğin Geçti kutucuğu CheckedListbox dan seçildikten sonraki görüntü ise aşağıdaki gibi olacaktır... 

Fark ettiyseniz Not alanı içerisinde kalan öğrenci yoktur... Çünkü 44 üzerinde olan bütün öğrencileri geçirdik... Veritabanı üzerinde sorgulama yaparken de Not alanı 44 üzerinde olan herkesi göstermiş olduk...  

Form tasarımında sonra kodlar ise aşağıdaki gibi olacaktır... 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Data.OleDb;

namespace Listeleme_3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=okul.mdb");
        OleDbCommand komut = new OleDbCommand();
        string sorgu=""; // SQL sorgularımız için string bir değişken tanımlıyoruz... 

        void veritaban(string a)
        {
            baglanti.Open();
            
            if (a == "") // Formun açılışından mı, yoksa seçimden mi sorgunun geldiğini ayırmak için if kullandık...
                komut.CommandText = "Select * From ogrenci";
            else
                komut.CommandText = a;
            
            komut.Connection = baglanti;

            OleDbDataAdapter da =  new OleDbDataAdapter(komut);
            DataSet ds = new DataSet();
            da.Fill(ds, "NOT");
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "NOT";

            baglanti.Close();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // Formun açılışında datagridwiev e verilerin gelmesi için database'i çağırıyoruz...
            veritaban(sorgu);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (checkedListBox1.GetItemChecked(0)) // İndexi verilen kutucuk seçili ise True değerini dönderir...
                sorgu = "SELECT * FROM ogrenci WHERE ([Not] > 44) ORDER BY [No]"; // Geçenleri gösteriyor...
            else if (checkedListBox1.GetItemChecked(1))
                sorgu = "SELECT * FROM ogrenci WHERE ([Not] < 45) ORDER BY [No]"; // Kalanları gösteriyor...
            else if (checkedListBox1.GetItemChecked(2))
                sorgu = "SELECT * FROM ogrenci ORDER BY [Not] DESC"; // Not sütünunu maksimuma göre sıralama yaptırır...
            else if (checkedListBox1.GetItemChecked(3))
                sorgu = "SELECT * FROM ogrenci ORDER BY [Not] ASC"; // Not sütünunu minumuma göre sıralama yaptırır... 

            // Seçili kutucuklar birden fazla ise üsteki kutucuk daha öncelikli oluyor... 

            veritaban(sorgu);
        }  
    }
}

Veritabanı - 9... Order By ile İstenilen Numara Aralığındaki Öğrencileri Listeleme...

Daha önceki örneklerimizde kullandığımız okul isimli access dosyamızı yine kullanıyoruz... Bunun hazırlanışı için veritabanı 1-2-3 derslerine bakılabilir... Aynı veritabanı üzerinde bu sefer girilecek olan iki numaranın arasında kalan bütün veriler gösterilecektir... 

Burada order by komutu ile birlikte And operatörünü de kullanıyoruz... Bir aralık içerisindeki veriler kontrol edilecekse veya birden fazla kontrolümüz varsa bu durumda And, Or gibi operatörler kullanılabilir... 

Form tasarımı aşağıdaki gibi olacaktır... 

Program çalıştığında uygun değerler girildiğinde aşağıdaki gibi sonuçlar gösterilecektir... 

Programın kodları ise aşağıdaki gibi olacaktır... 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Data.OleDb;
namespace Listeleme_2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=okul.mdb");
        OleDbCommand komut = new OleDbCommand();

        private void button1_Click(object sender, EventArgs e)
        {
            // İstenilen aralıktaki numaraları listeliyoruz... Bunun için Order By ile birlikte And operatörünü de kullanıyoruz... 
            baglanti.Open();
            komut.CommandText = "SELECT * FROM ogrenci WHERE ([No] > "+textBox1.Text+") AND ([No] < "+textBox2.Text+") ORDER BY [No]";
            komut.Connection = baglanti;

            OleDbDataAdapter da = new OleDbDataAdapter(komut);
            DataSet ds = new DataSet();
            da.Fill(ds, "listele");
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "listele";

            baglanti.Close();
        }
    }
}

Veritabanı - 8... Order By ile İstenilen Alanları Listeleme...


Order By komutu sql üzerinde listeleme yapmak için kullanılan bir komuttur... Verilen alan ismine göre listeleme yapar ve verileri sıralı bir halde ekranda gösterir... Aşağıdaki program örneğinde bir datagridview de yapılan seçime göre listeleme işlemleri yapılmaktadır... 

Programın tasarımı aşağıdaki gibidir...

Program ilk açıldığında hemen verileri datagridview de göstermektedir... 

Bundan sonra yapılan seçimlere göre listeleme işlemlerini gerçekleştirmektedir... Programın kod satırları aşağıdaki gibidir... 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Data.OleDb;

namespace Listeleme_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        
        // Veritabanı bağlantılarını yapıyoruz... 
        OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=okul.mdb");
        OleDbCommand komut = new OleDbCommand();
        
        private void Form1_Load(object sender, EventArgs e)
        {
            // Formun girişinde bütün bilgileri datagridview de gösteriyoruz... 
            baglanti.Open(); 
            komut.CommandText = "Select * From ogrenci";
            komut.Connection = baglanti;

            OleDbDataAdapter da =new OleDbDataAdapter(komut);
            DataSet ds = new DataSet();
            da.Fill(ds, "diz");
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "diz";

            baglanti.Close();
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            // İsme göre listeleme yapılacaksa veritaban isimli metodumuza alan adı olarak Isim gönderiyoruz... 
            // Buradaki Isim access tablomuzdaki alan adıdır... 
            string a = "Isim";
            veritaban(a);
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            // Numaraya göre listeleme yapılacaksa veritaban isimli metodumuza alan adı olarak No gönderiyoruz... 
            string a = "No";
            veritaban(a);
        }

        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {
            // Yaşa göre listeleme yapılacaksa veritaban isimli metodumuza alan adı olarak Yas gönderiyoruz... 
            string a = "Yas";
            veritaban(a);
        }

        void veritaban(string kontrol)
        {
            baglanti.Open(); 
            //[] içerisinde alan adlarını yazarak Türkçe karakter veya özel karakter sorununu da ortadan kaldırmış olduk...
            komut.CommandText = "Select * From ogrenci ORDER BY[" + kontrol + "]";
            komut.Connection = baglanti;

            OleDbDataAdapter da = new OleDbDataAdapter(komut);
            DataSet ds = new DataSet();
            da.Fill(ds, "diz");
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "diz";
            baglanti.Close();
        }
    }
}