Access C# C# Windows Form Örnekleri

C# Access İlişkili Tablodan Veri Çekme (İl – İlçe Veritabanı)

Bu yazımızda ilişkili veritabanından veri çekme işlemini anlatan bir örnek gerçekleştireceğiz. Veritabanı olarak Access’ te hazırlanmış iller.accdb dosyasını kullanacağız. Örneğimizde Combobox1′ de seçilen şehir ismine göre Combobox2′ de ilçe gösterimini sağlayacağız. İller ve ilçelerin bulunduğu dosyayı yazımızın sonunda bulunan linkten indirebilirsiniz.

Öncelikle iller.accdb uzantılı veritabanımıza bakalım.
il_ilce_vt_1     il_ilce_vt_2

Veritabanımız 2 tablodan oluşmakta. “iller” tablosu ve “ilceler” tablosu. Yukarıdaki resimlerde bu tablolara ait alan adlarını görmekteyiz. Yeni bir C# Windows Form projesi oluşturarak örneğimize başlayalım. Form tasarımımızı basit bir şekilde 2 adet comboBox kontrolü ekleyerek oluşturalım.

il_ilce_3

Veritabanı dosyamızı Projemizin altında bulunan “../Bin/Debug” klasörü altına kopyalayarak devam ediyoruz. Şimdi yapacağımız işlem C# ile Access arasında bir veritabanı bağlantısı oluşturarak Form Yüklendiğinde yani Form_Load olayına  Şehir listelemesinde kullanacağımız Combobox1′ e verileri çekmek olacak. Burada Combobox kontrolünün ValueMember ve DisplayMember özelliklerini kullanacağız.  Combobox’ ın Valuemember’ ına “iller” tablosunun “id” alanını DisplayMember’ ına ise “sehir” alanını bağlayacağız.

Kodlarımıza geçelim.

Öncelikle projemize;

dahil ediyoruz.
Daha sonra public olarak;

bağlantı nesnemizi oluşturuyoruz. Form_Load event’ ı için;

kodlarını yazıyoruz. Şimdi Combobox’ta seçilen il’ e göre diğer Combobox’ ta sehirlerin gösterilmesini sağlayacağız. Bunun için comboBox1′ in SelectedIndexChanged event’ ını kullanacağız. Kodlarımızı aşağıdaki şekilde oluşturuyoruz.

İşlem tamam.

Kodlarımızın tamamlanmış hali ve ekran görüntüsü ise şu şekilde olacaktır.

il_ilce

Örneği ve veritabanını indirebilirsiniz.
https://yadi.sk/d/-Uf4PmV5qb8fs

27 Yorum

  • System.InvalidOperationException: ”Microsoft.ACE.Oledb.12.0′ sağlayıcısı yerel makine kayıtlı değil.’
    Hatası alıyorum

  • hocam bir bunun güncelleme yapar mısınız proje ödevi var da aynılarını yaptımda güncelleme dataview anaform da başka formda güncelleme nasıl yaparım seçilen il ilçe görmesi gerekte?

  • “”Gerekli bir veya daha fazla parametre için girilen değer yok.”” böyle bir hata alıyorum

  • DataTable dt = new DataTable();OleDbDataAdapter da = new OleDbDataAdapter(“select * from ilceler where sehir = ” + comboBox1.SelectedValue, con); “”da.Fill(dt);””
    tam olarak burada hata alıyorum ve bir çözüm üretemedim

  • Bu tarz veya excele bağlanan bir dosya düşünün içinde database mevcut. Benim bir girdim olacak ve onları çağıracak bir program yapmak istiyorum. Aslında yaptım excel’de. Vlookup fonksiyonu ile basit bir şey(sorgu tarzı). Bunu C# yapabilir miyim? Yaparsam 10’dan fazla bilgisayar kullanıcak ve programı onlara yüklediğimde Access veya Excel’deki veri güncellemesinde kullanıcalar update etmek zorunda kalır mı? yoksa otomatik update olur mu?

    Yardımcı olursanız çok sevinirim
    Kolay Gelsin

  • Her ilçenin en ünlü yemeklerini hazırladığım bir liste olduğunu farz ediyorum ve İl ve ilçeyi seçince label1’e o ilçenin en meşhur yiyeceğini getirmek istiyorum. Bunun kodunu nasıl yazabilirim?? Yardımcı olur musunuz??

  • Merhaba Ahmet Bey;
    Veri tabanındaki kayıtları sırası ile textboxlara aktarmak için örnek arıyorum ama bulamadım. Textboxlara veri aktarımı için örnek çalışmanız var mı ya da bu konuda yardımcı olabilir misiniz?

  • dostum selamlar. sql sorgusunu

    “select il from iller ORDER BY id ASC ”

    ve

    “select ilce from ilceler where sehir = ”

    yapınca sorun yaşıyorum ve “da.Fill(dt);” satırında “Gerekli bir veya daha fazla parametre için girilen değer yok.” hatası alıyorum. sebebi ne olabilir? aynı sorguyu accesste çalıştırdığımda hata almıyorum.

      • teşekkürler geri dönüş için hocam.

        sizin iki sorgunuz sırasıyla şu şekilde;

        OleDbDataAdapter da = new OleDbDataAdapter(“select * from iller ORDER BY id ASC “, con);

        OleDbDataAdapter da = new OleDbDataAdapter(“select * from ilceler where sehir = ” + comboBox1.SelectedValue, con);

        benimkiler ise şöyle;

        OleDbDataAdapter da = new OleDbDataAdapter(“select SehirAdi from SehirListesi”, con);

        OleDbDataAdapter da = new OleDbDataAdapter(“select IlceAdi from IlceListesi where SehirID = ” + comboBox1.SelectedValue, con);

        diğer alanlarda herhangi bir farklılık yok.

        select * kullanırsam çalışıyor, ama tablodan belli bir alanı çağırmak istediğimde çalışmıyor.

          • Merhaba. Projenizdeki sorun PoliklinikGetir metodunda.

            //OleDbDataAdapter da = new OleDbDataAdapter(“select PoliklinikAdi from PoliklinikBilgi ORDER BY PoliklinikID ASC”, baglanti);
            OleDbDataAdapter da = new OleDbDataAdapter(“select * from PoliklinikBilgi ORDER BY PoliklinikID ASC”, baglanti);

            Üstteki sizin yazdığınız kod. Sadece Poliklinik adını çektiğiniz için ID leri almıyor. Select * From ….. olarak değiştirirseniz ilgili doktorlar gelecektir.

          • lsdflsdfldf salaklığıma gülüyorum ya, o kadar uğraşmama rağmen nasıl fark edememişim. çok ama çok teşekkür ederim hocam, gerçekten çok yardımcı oldunuz 🙂

  • Veritabanı adı,Tablo adı ve Alan adlarını doğru yazıp yazmadığınızı tekrar kontrol edin.

  • hocam öncelikle paylaşım için teşekkür ederim. combobox’ın selectedindex olayına kodları yazdığımda “da.Fill(dt);” satırında “Gerekli bir veya daha fazla parametre için girilen değer yok.” hatası alıyorum. yardımcı olursanız çok memnun olurum. kolay gelsin.

Yorum yap

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