C# datagridview etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# datagridview etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

22 Mart 2014 Cumartesi

Veritabanı Ders Uygulamaları - 4

Uygulamamızın konusu garanti süresi devam eden ürünleri bulmak... Bunun için garanti süresini, giriş tarihine ekleyip şimdiki zaman ile kıyaslamamız gerekiyor... 

Örneğin 2012 yılında alınan bir harddiskin eğer 2 yıl garanti süresi var ise 2012+2 = 2014 yılına kadar garantisi devam ediyor demektir... Biz bunu Sql sorgusu ile hesaplayıp, datagridview de göstereceğiz... 

Bu işlemi yaparken de Combo kutusundan yapılan seçimlere göre yaptıracağız... Yaptığımız seçime göre stokta olanlar, garantisi devam edenler ve eldeki bütün ürünleri göstereceğiz... Combo içerisine Hepsi, Garanti ve Stok eklemelerini yapalım...

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















Veritabanı tasarımı aşağıdaki gibi olacaktır... Bu tabloyu daha önceden kullandık...









Program çalıştığı zaman aşağıdaki gibi bir ekran gelecektir...














Burada yukarıda yapılan seçimlere göre sırası ile istenilen bilgiler gelecektir... Programın kod kısmına geçelim...

1 - Baglanti, komut, da ve ds değişkenlerimizi daha önceki örneklerdeki gibi tanımlayınız...

2 - doldurdatagrid adında bir metod tanımlayacağız... Bu metod ile datagridviewimize bilgileri getireceğiz... Bunun için void doldurdatagrid(string sorgu) şeklinde metodu tanımlayınız...

3 - Bu metodun girişinde ds.Clear(); komutu ile bir önceki tablo bilgilerini silelim...

4 - Bu metodun içerisindeki komutları tamamlayalım ve datagridviewde bütün tablo program açıldığı zaman gözüksün... Yalnız Kimlik ve Kalan alanlarındaki bilgiler gizli olsun... Program çalıştığında gösterilmesin...

5 - Diğer komutlarımızı comboBox1_SelectedIndexChanged olayının içerisine yazacağız...Üç ihtimal var... Aşağıdakine gibi bir şart kullanacağız...
if (comboBox1.Text == "Garanti") // Garanti süresi devam edenler
  doldurdatagrid("Select *  From Stok Where DateAdd('yyyy',[Garanti],[Alınan Tarih])>Now()  And [Kalan]<>0");
else if (comboBox1.Text == "Hepsi") // Stokta olan ve olmayan hepsi gözüküyor...
    doldurdatagrid(// Burayı siz tamamlayınız...);
else if (comboBox1.Text == "Stok") // Stokta olan ürünler gösteriliyor... Kalan alanına bakmamız gerekiyor... Sıfır olmayanları ekranda göstermeliyiz...
    doldurdatagrid(// Burayı siz tamamlayınız...); 

6 - En son olarak da çıkış butonunu yapınız...

23 Mart 2013 Cumartesi

Veritabanı - 3... DataGridview Kullanımı...


Veritabanı  - 1 dersin de kullanmış olduğumuz okul isimli access dosyası üzerinden yine bir uygulama yapacağız... Bunun için aşağıdaki formu tasarlayalım... Bu sayfaya bir adet  Tools penceresindeki Data kısmından datagridview eklemeyi de unutmayalım...

Kodlarımızı yine ara butonunun içerisine yazacağız... Aşağıdaki örnekte formun hemen girişinde veritabanında ki verileri alıp, datagirdview içerisinde gösteriyoruz... Bu kısmı sağlamak için formun load kısmına ilk kodlarımızı yazıyoruz... 

Önemli bir ayrıntıda access veri tabanında ki alanların hangi veri türü ile tanımlandığıdır... Burada aramayı No isimli alan adına göre yapacağız ve hatırlanacağı gibi bu alan adı sayı olarak tanımlanmıştı... 

Sayı olarak tanımlanan alanlarda SQL sorgusu yaparken ' işaretleri kullanılmamaktadır... Örnek: 
"SELECT * FROM ogrenci WHERE [No] = 12"

Halbuki metin olsaydı bu kısım sorgulama şu şekilde olmalıydı...
"SELECT * FROM ogrenci WHERE [No] = '12' "


Gördüğünüz gibi aradaki tek fark tırnaklardır... Bu sebeple sorgumuzu yaparken numaranın alındığı kısımda şöyle bir sorgu cümlesi yazılmıştır... Buraya textbox1 i nasıl eklediğimiz ile ilgili sıkıntılarınız varsa veritabanı 2 dersine bakınız... Ama şunu unutmayalım SQL komutlarının haricinde bir form nesnesi eklenecek ise " " işaretleri arasında verilir ve + + işaretleri ile eklenir... Aşağıdaki  örnekteki gibi form nesnesinden sonra SQL'e geri dönülmeyecek ve kod yazılmayacak ise " + işaretleri yeterli olacaktır...

komut.CommandText = "SELECT * FROM ogrenci WHERE [No] =" + textBox1.Text;

Örnek olması ve konunun tam anlaşılması için söylüyorum... Belki de biraz uzatıyorum... Buradaki No isimli alanın veri türü metin olsaydı SQL cümleciğimiz aşağıdaki gibi olmak zorundaydı... 

komut.CommandText = "SELECT * FROM ogrenci WHERE [No] = ' " + textBox1.Text + " ' ";

Programın çalışmasındaki ekran görüntüleri ise aşağıdaki gibi olacaktır... İlk açılış aşağıdaki ekrandaki gibidir..


Numara girilip ara butonuna basıldığında ise aşağıdaki ekran gelmiş olacaktır... 

Programın kodları ise aşağıdaki gibidir... Yanlarında gerekli görülen yerlerde açıklama satırları eklenmiştir... 


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 arama_3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // ÖRNEK - 3 : GİRİLEN NUMARA BİLGİSİ DATAGRİDVİEW YARDIMI İLE VERİTABANINDA GÖSTERİLİYOR...

        OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source= okul.mdb");
        OleDbCommand komut = new OleDbCommand();
        OleDbDataAdapter da;
        DataSet ds = new DataSet();

        /*DataSet; SQLDataAdapter veya OleDbDataAdapter nesnesinden gelen kayıtları çevrimdışı depolamak ve 
         * yönetmek için kullanılan sınıftır. DataSet tüm veri sağlayıcı sınıflar için ortaktır.
         * 
         * OleDbDataAdapter; Access veya diğer veritabanlarından çekilen verileri ilgili veritabanına
         * aktarmak için kullanılan sınıftır...
         */

        private void Form1_Load(object sender, EventArgs e)
        {
            komut.CommandText = "SELECT *  FROM ogrenci";
            komut.Connection = baglanti;

            da = new OleDbDataAdapter(komut);         // DataAdapter'e bilgiler alınıyor...
            da.Fill(ds, "tablo");                     // DataSet'e bilgiler "tablo" ismi ile dolduruluyor...
            dataGridView1.DataSource = ds;            // Dataset gridview'e bağlanıyor...
            dataGridView1.DataMember = "tablo";       // GridView e Dataset'teki bilgiler aktarılıyor...
        }

        private void button1_Click(object sender, EventArgs e)
        {
            /*Numaraya göre arama yapılıyor...
             * SQL komut cümleceğinde alan adında türkçe karakterler varsa [ ] ifadelerini kullanmamız lazım...
             * "SELECT * FROM ogrenci WHERE [No] = 12" olacak olan cümlede, " işaretinden sonra + işaretinden sonra 
             * kontrol nesnesi getiriliyor ...
             */
            komut.CommandText = "SELECT * FROM ogrenci WHERE [No] =" + textBox1.Text;
            komut.Connection = baglanti;
            
            da = new OleDbDataAdapter(komut);
            ds = new DataSet();
            da.Fill(ds, "tablo");
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "tablo";
        }
    }
}