C# Comboboxdan DataGridViewe Bilgi Getirmek etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# Comboboxdan DataGridViewe Bilgi Getirmek 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...

15 Aralık 2013 Pazar

Veritabanı - 12... Comboboxdan DataGridViewe Bilgi Getirmek...

Comboboxda yaptığımız tercihler önemlidir... Yaptığımız tercih işlemine göre programda bir şeylerin değişmesini isteriz... Hatta veritabanından bazı bilgilerin gelmesi veya veritabanına bilgi kaydetmeyi bile isteyebiliriz... Bu program parçasında veritabanın da olan tarih verilerine göre garanti süresi devam eden bilgisayar parçalarını göstereceğiz... Bunun için aşağıdaki veritabanını kullanacağız... 



Veritabanımızın adı bilsay, tablomuzun adı ise Stok olacaktır... 

Burada Alınan Tarih ve Garanti alanları bizim için önemli olacaktır... Alınan Tarih üzerine garanti süresini yıl olarak ekleyeceğiz... Çıkan tarih eğer şu anki tarihden daha büyük ise garanti süresi devam ettiği için datagridview de göstereceğiz... Ama bunu sadece stokta kalan ürünler için göstereceğiz... Bu durumda Kalan alanı = 0 olanlar için garanti süresine bakmayacağız... 

Programımızın Form sayfası aşağıdaki gibi olacaktır... Comboboxın listelerine program açılmadan Hepsi ve Garanti seçeneklerini ekleyelim... 

Program çalıştığı zaman aşağıdaki gibi bir görüntü olacaktır... 

Garanti seçimi yapıldıktan sonra aşağıdaki gibi gözükecektir... 

Programımızın kodları 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 WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=bilsay.accdb");
        OleDbCommand komut = new OleDbCommand();
        OleDbDataAdapter da;
        DataSet ds = new DataSet();

        void doldurdatagridview1(string sorgu)
        {
            ds.Clear(); // Datagridview her doldurulduğunda bir önceki veriler gözükmemesi için temizleniyor...

            baglanti.Open();
            komut.CommandText = sorgu;
            komut.Connection = baglanti;

            da = new OleDbDataAdapter(komut);
            da.Fill(ds,"StokTablo"); // Burada kullanılan "StokTablo" ismi datagridview olaylarının hepsinde kullanılır...
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "StokTablo";
            dataGridView1.Columns["Kimlik"].Visible = false; // Kimlik alanı datagridviewde gözükmesin...
            dataGridView1.Columns["Kalan"].Visible = false; // Kalan miktarı datagridviewde gözükmesin...
            baglanti.Close();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            doldurdatagridview1("Select * From Stok"); // Veritabanındaki bütün veriler gösteriliyor...
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox1.Text == "Garanti") // Garanti süresi devam edenler
                doldurdatagridview1("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...
                doldurdatagridview1("Select * From Stok"); 
        }

        private void button4_Click(object sender, EventArgs e)
        {
            Application.Exit(); // Programı tamamen sonlandırmak için kullanılır... 
        }
    }
}

Program kod satırında bazı önemli noktalar vardır. 
*  ds.Clear();
DataGridView içerisini temizleyen komuttur... Çünkü combobox her seçim yapıldığında DataGridView temizlenmelidir... Aksi takdirde veriler üst üste binecek ve hepsi gözükecektir...

*  dataGridView1.Columns["Kimlik"].Visible = false; 
DataGridView içerisinde verintabanın da olan alanlardan göstermek istemediğimiz olursa bu komut satırı ile göstermeyebiliriz... Kimlik alanı ve Kalan alanı veritabanın da olmasına rağmen DataGridView de gösterilmemektedir... 

* doldurdatagridview1("Select *  From Stok Where DateAdd('yyyy',[Garanti],[Alınan Tarih])>Now()  And [Kalan]<>0");
DateAdd komutu verilen tarihin üstüne istenilen kadar tarih eklemektedir... Buradan yyyy ifadesi yerine m veya d ifadesi kullanılırsa yıl yerine, ay veya gün eklenerek yeni tarih bulunabilmektedir... Now() ise bilgisayarın tarihini göstermektedir... Çıkan tarih ile bilgisayarın tarihi kıyaslanmaktadır... 

And ifadesi birden fazla şart olması durumunda kullanılmaktadır... Biz burada Stokta olmayan ürünleri göstermek istemediğimiz için [Kalan]<>0 ifadesini kullanmaktayız... <> ifadesi eşit değil anlamındadır...