C# C# Windows Form Örnekleri Programlama

C# Inner Join ile Çoklu Tablolardan Veri Çekme

Bu yazımızda C# ile ilişkili 3 SQL tablosunu Inner Join kullanarak birleştirme ve DataGridView’de görüntüleme işlemini gerçekleştireceğiz. kutuphane veri tabanında bulunan tablolarımızı inceleyelim.

1- “ogrenci” Tablosu

2- “kitap” Tablosu

3- “islem” Tablosu

 

Tablolarımızı incelediğimizde “islem” tablosunda, öğrencilerin hangi kitapları aldığını alış ve veriş tarihleriyle birlikte kayıt altına alındığını görüyoruz. Fakat bu tabloyu incelediğimizde Normalizasyon Kuralları gereği sadece öğrenciye ait ogrno verisinin ve yine kitaba ait kitapno bilgisinin tutulduğunu görüyoruz.

Tablomuzu bu şekilde program içinde görüntülediğimiz zaman pek anlaşılır olmayacaktır. Örneğimizde bu tablonun öğrenci ve kitaba ait detayların görüntülenecek şekilde C# Windows Formda bulunan DataGridView kontrolüne aktarılmasını sağlayacağız.

Formumuzu basit bir şekilde oluşturacağız. Sadece bir dataGridView kontrolü ekleyeceğiz. Form_Load olayına yazacağımız kodlarla Verilerimizin istediğimiz şekilde görüntülenmesini sağlayacağız.

Kodlarımızı yazmaya başlıyoruz. Öncelikle aşağıdaki kütüphaneyi ekliyoruz.
 

Form_Load event’ ı için kodlarımız.

Kodlarımızı yazıp projemizi çalıştıralım.

Görüldüğü gibi islem tablosunda anlaşılmaz şekilde bulunan veriler yerine kayıttaki öğrenci ve kitaba ait istediğimiz alanların görüntülenmesini sağlamış olduk. Sütun başlıkları için Takma ad kullanmak isterseniz String sql değişkeninin aşağıdaki şekilde değiştirebilirsiniz.

Bu durumda proje çalıştırıldığında aşağıdaki görüntü elde edilecektir.

8 Yorum

  • Merhaba ben sorunumu exceldeki verileri db’ye aktarıp oradan joinile çekerek çözdüm ancak bu seferde başka sorula karşılaştım.Srunum şu Exceldeki tarih alanını db’e aktarırken datetime olarak değil varchar olarak aktarabiliyorum.Bu şekilde yapınca DateTimePicker veya textbox ile sorgulatma yapınca Must declare the scalar variable “@bastar”. şeklinde hata alıyorumYardımcı olursanız sevinirim.

    Kullandığım kodlar

    OleDbConnection baglanti = new OleDbConnection(“Provider=SQLOLEDB;Data Source=.;Initial Catalog=siparis_liste;Integrated Security=SSPI”);
    baglanti.Open();
    OleDbCommand sql = new OleDbCommand(“SELECT e.tarih as [TARİH],e.referans as [REFERANS],e.kasa_ici AS [KASA İÇİ],e.bakiye AS [BAKİYE],s.aciklama AS [AÇIKLAMA],s.tolerans AS [TOLERANS],s.ham_boy[HAMMADDE BOYU],s.kalite AS [KALİTE],s.kasa_tipi AS [KASA TİPİ],ceiling(e.bakiye/e.kasa_ici) as [KASA ADETİ] from [excel] e inner join [siparisler] s on e.referans=s.referans where e.tarih>=@bastar”, baglanti);
    DataTable dt = new DataTable();
    sql.Parameters.AddWithValue(“@bastar”,dateT,mePicker1.Value);
    sql.Parameters.AddWithValue(“@bittar”, dateTimePicker2.Value);
    OleDbDataAdapter daa = new OleDbDataAdapter();
    sql.ExecuteNonQuery();
    daa.Fill(dt);
    dataGridView1.DataSource = dt;
    baglanti.Close();

    • DateTimePicker ifadesi kodlarda yanlış yazılmış görünüyor. Kontrol eder misiniz? dateT,mePicker1.Value olarak görünüyor.

    • Çözdünüz mü bilmiyorum ama tarih formatınızı hem Accdb veri tabanından ; hem de kod kısmından string olarak değiştirmeniz gerekiyor. ‘tarih’ şeklinde yapmazsanız int değer gibi çalışır.

  • Merhaba
    Öncelikle böyle paylaşımlar yaptığınız için TEŞEKKÜRLER.
    Benim şöyle bir sorunum var.
    Benim projede 2 adet form var.
    1.Formda datagridview’de excel dosyasından veri çekiyorum.
    2.Formdaki datagridview’de ise sql serverden veri çekiyorum.
    Bu iki tablonun referans adında ortak isimleri var.Benim istediğim 1.Formdaki datagridviewe excel dosyasını çektiğimde referans alanını sql serverdan karşılaştırarak gerekli alanları karşısına ilave etmek.Örnek
    1.Form : Tarih Referans Adet 2.Form Referans Açıklama
    11/09/18 755548 100 755548 Sırt Bağlantı Aparatı
    İki veri alanlarını karşılaştırarak

    1.Formdaki datagridviewde

    Tarih Referans Adet Açıklama
    11/09/18 755548 100 Sırt Bağlantı Aparatı

    şeklinde listelemesi.Yardımcı olursanız sevinirim.

    • Merhaba. Bir şeyi merak ettim. Diğer tablodaki verilerin excelde tutulması zorunlumu? Onuda sql veritabani icine alırsanız yapmak istediginiz is çok kolaylasacaktir.

      • Excelde şöyle zorunlu ben o bilgileri bir firmanın portalından excel formatında çekebiliyorum başka formatta veya şekilde data almam söz konusu değil malesef.

  • Staj da lisans takip programı yapmam istendi bu şekil ilişkisel veri tabanlı bir personel ait cihazlar birden fazla olabilir bir personelin cihazı ve bu cihazların ürün anahtarları girilecek aynı kod girilince veri girşi olmayacak soft silme yardımcı olabilir misiniz?

Ahmet C için bir yanıt yazın X

Web Tasarım & Programlama sitesinden daha fazla şey keşfedin

Okumaya devam etmek ve tüm arşive erişim kazanmak için hemen abone olun.

Okumaya devam et