Access C# C# Windows Form Örnekleri Programlama

C# Farklı Formdan Kayıt Ekleme ve Anaform daki Datagridview’in Güncellenmesi

” Form2  de kayıt ekleme yapıldığında Form1 de bulunan datagridview’ de bulunan veriler nasıl güncellenir ?” sorusuna ait örneğimizi inceleyelim. Bu örneğimizde Form2 kapatıldığında Form1 i yenileme işlemini gerçekleştireceğiz.

 

Access veri tabanı bağlantısını kullanacağız.
Bunun için öncelikle access veritabanı dosyamızı aşağıdaki şekilde tasarlayalım.
gecis_vt_tasarim
Olusturduğumuz “ogrenci.accdb” dosyamızı projemizin içinde “…\bin\debug\” klasörüne atalım. Bu işlemden sonra Form1 ve Form2 tasarımlarını aşağıdaki şekilde oluşturalım.
gecis_vt_f1

gecis_vt_f2

Örneğimizde Form yüklendiğinde veri tabanı bağlantısı oluşacak ve datagridview’de veriler görüntülenecek ; “Kayıt Ekle” butonuna basıldığında ise Form2 açılacak.

Bu işlemler için öncelikle aşağıdaki satırı ekliyoruz.

Form yüklendiğinde verilerin datagridview’de görüntülenmesi için aşağıdaki kodları yazıyoruz.

griddoldur metodumuza Form2’den erişmemiz gerekeceğinden public olarak oluşturmayı unutmuyoruz.
Daha sonra “Kayıt Ekle” butonuna çift tıklayarak aşağıdaki kodları yazıyoruz.

Bu işlemleri yaptıktan sonra Form1 deki işimiz bitmiş oluyor.

Form2’de kayıt ekleme işlemini gerçekleştireceğiz.

satırını tekrar ekliyoruz.Daha sonra kayıt ekleme işlemi için kodlarımızı aşağıdaki şekilde oluşturuyoruz.

Not:Textboxların name özelliğini değiştirmezseniz “cmd.CommandText=” satırını uygun biçimde yazmayı unutmayın.

Bu işlemlerden sonra son adıma geliyoruz. Form2 yi kapattığımızda Form1 deki datagridview’in güncellenmesi için FormClosed event‘ine aşağıdaki kodları yazıyoruz.

İşlem tamam!!
Artık form2’de kayıt ekleyip form2’yi kapattığımızda Form1’de bulunan datagridview’ deki verilerin güncellendiğini göreceksiniz.

Aynı işlemi yapmanın bir diğer yoluda ShowDialog() kullanmaktır.Bununla ilgili farklı bir örnek daha yapalım. Aşağıdaki videoda C# Sql server bağlantısı kullanılarak Form2’den girilen kayıt sonrası Form1′ de bulunan Datagridview’ in güncellenmesi sağlanmıştır.

Kolay gelsin.

24 Yorum

  • Hocam çok sağolun. Bu bilgileri herkes paylaşmıyor. 8 saattir uğraştığım bir problem için çözüm oldunuz. Teşekkürler. ( yazılımda yeniyim )

  • Ahmet Bey Merhaba; Verdiğiniz bilgiler çok yararlı teşekkür ederim, ancak bir yerde takıldım cmd.ExecuteNonQuery(); hatası veriyor Form1 de datagid var butona basınca yeni kayıt formu açılıyor textbox’ lara bilgi girerek Form1 deki datagrid göndermek istiyorum veri tabanı olarak access i kullanıyorum işin içinden çıkamadım projeyi göndersem bakarmısınız.
    Saygılar

  • tuşa basınca formu tekrar oluşturduğum için controller erişimi sıfırlıyormuş.
    yani:
    private void button1_Click(object sender, EventArgs e)
    {
    form6 = new Form6();

    çözümü:
    private void button1_Click(object sender, EventArgs e)
    {
    Form6 form6 = (Form6)Application.OpenForms[“Form6”];

    şeklinde çözüme kavuştum.

  • admin bnm form 3 datagridview var çalıştırdığımda form1 de datagridview ekledim aynısı orda gözüksün istiyorum

  • 3 formum var ve her birinde kişinin bi özelliği var .bu özellikleri tek kayıt altında (tek id ile) access veri tabanında tutmak istiyorum nasıl yaparım.yani birinci formdan kişinin adı ,2.formda soy adı, 3.formda da yaşını giriyorum bu kişiye ait bilgiler aynı satırda veritabanında nasıl tutulur.

    yardımcı olursanız çok sevinirim

      • aynı durum sql server için de geçerli mi? 2.formda textboxları doldurup kaydet dediğimde 1.formdaki datagridview e kayıt yapıyor ancak ikinci formu kapattığıma

        internal void verilerigetir()
        {
        throw new NotImplementedException();
        }

        diye bir şey ekliyor birinci formun en altında ve 2.formda formClosed olayına yazdığımız kodda fz.verilerigetir() altını çiziyor.

          • ilginiz için teşekkürler,

            internal void verilerigetir()
            {
            throw new NotImplementedException();
            }

            bu kısmı tekrar silip programı tekrar çalıştırıyorum, çalışıyor hatta kayıt ekleme de yapıyor, enson çıkarken tekrar bu kodları ekliyor,

            formClosed ve ya formClosing olaylarından olabilir mi? bunları da bilmiyorum ayrıca biraz araştırınca ikisinin farklı görevleri olduğunu okudum.

          • Aslında 2. bir yöntem daha var. Hatta daha basit. Şöyle de yapabilirsiniz.

            Form1′ de bulunan Ekle butonunda
            Form2 f2 = new Form2();
            f2.Show();
            şeklinde yazan kodları

            Form2 f2 = new Form2();
            f2.ShowDialog();
            griddoldur();

            olarak değiştirin.
            Form2’de Form_Closed bölümündeki kodları da iptal edin. Yani sadece kayıt ekleme kodları kalsın. Sorununuz bu şekilde de çözülecektir.

          • ben griddoldur() dediğiniz alanı şu şekilde yaptım,

            public void verilerigetir(string veriler)
            {
            baglanti.Open();
            SqlDataAdapter da = new SqlDataAdapter(veriler,baglanti);
            DataSet ds = new DataSet();
            da.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];

            }

            en son dediğinizi de yaptım orada da yine bahsettiğim kodları ekledi,
            hata olarak ta,
            No overload for method ‘verilerigetir’ takes 0 arguments

            gösteriyor.

          • projenizi tam olarak görmeden hatanın nerede olduğuyla ilgili bir yorum yapamayacağım. Sorgu cümlenizle ilgili bir hata olabilir. Bu konuyla ilgili basit bir video hazırladım ve yazıya ekledim. Dilerseniz izleyebilirsiniz.

          • Ahmet bey, tekrar merhabalar,çok kısa bir sorum daha olacaktı başka bir konu ile ilgili,
            bir formum var orada Firma adı,Gittiği Tari,Geldiği Tarih, Parça Adı sütunları var, bunlar access de bir tabloda açtım, formda da bir datagridview de listeledim, burada yapmak istediğim, ürün bir firmaya gitti giriş tarihini ekledim sonra tamir edilip geri geldi, ürünün geri geldiğinin belli olması için ürün geldikten sonra geldiği tarihi yazdığımda gittiği tarih kısmı arka planı veya yazı rengi yeşil olsun,tarihler için dateTimePicker kullandım, formda bir if bloğunda geldiği tarih gittiği tarihten büyükse dateTimePicker Back color yeşil olsun dedim hata vermedne çalıştı ama renk olayı olmadı, sonra şunu farkettim dateTimePicker ların properties deki ayarlarında renk seçenekleri var,seçiyorum ama onları uygulamıyor.

            yazdığım if bloğu

            DateTime gidenTarih, gelenTarih;
            gidenTarih = dateTimePicker1.Value;
            gelenTarih = dateTimePicker2.Value;
            if (gelenTarih>gidenTarih)
            {
            dateTimePicker2.CalendarMonthBackground = Color.Green;
            }

            kısa dedim ama biraz uzun oldu sanırım, kusura bakmayın 🙂

          • Bu şekilde yapmak yerine tavsiyem tablonuzda Evet/Hayır türünde bir alan oluşturun geri gelip gelmediği ile ilgili. Bu şekilde daha kullanışlı olacaktır.

      • aslında soruyu sormamdaki amaçlardan biri de başka bir yolu varmıdır diye tavsiye almaktı,daha işin çook başındayım algoritma filan da baya zayıf bende, evet/hayır mantıklı geldi ama birde geldiği tarihin kaydını da tutmak istiyorum

        • Yine kayitlari tutabilirsiniz. Sadece accesse bir sutun daha ekleyip evet hayir olarak secin. Form kisminda da checkbox a baglayabilirsiniz bu alani.

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