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);
        }  
    }
}