C# Formlar Arası Veri Aktarımı

C# Formlar Arası Veri Aktarımı

Birbirine bağlı formlarda birbirleri arasında veri aktarımını nasıl yaparız?

Selam Arkadaşlar.

Bu dersimde bize her zaman lazım olan formlar arasında veri aktarımı konusunu anlatmaya çalışacağım.

NOT: anlattığım dersler daima kendi kullandığım yöntemleri anlatmaktayım. Tabi bazı konularda sağlam bilgim olmadığında internette diğer yazılımcıların sunduğu yöntemleri de kullanıyorum. O konu hakkında da bilgi sahibi olmaya başladığımda kendime göre tekrar düzenlemesini yapıyorum.

Arkadaşlar bu işi yapmanın birden fazla yöntemi vardır. Bu zamana kadar kullandığım yöntemleri sizlerle paylaşacağım.

1. YOL - SQL ile
Bu işlemi SQL kullanarak yapabilirsiniz. Bunun tek kullandığım yer iki farklı proje arasında veri göndermem gerektiğinde kullanmıştım. Örn aynı proje içerisindeki Ana uygulamadan yan uygulamaya veri göndermek isterseniz bu yöntemi kullanabilirsiniz. Zaten başka yerde kullanmazsınız. Çok mantıksız olur. Çünkü aynı proje içerisinde daha kolay kullanım şekilleri var.

Senaryomuz;

 2 formumuz olsun 1. formun adı " PersonelListe " 2. formun adı da " PersonelKaydi " olsun. PersonelListe formumuzda da bir grid , label ve contextmenustrip olsun bu contextmenustrip'e de Kaydet ve Güncelle seçeneklerini ekleyelim.

   İlk yapacağımız işlem PersonelKaydi formunda bir public değişken açmaktır. PersonelKaydi  formunu açarken bu public değişkene personelin sql kayıt numarasını göndereceğiz. Bu kayıt numarasına göre sql select işlemi yapıp ilgili alanları dolduracağız. İstediğimiz güncellemeyi yaptığımızda sql update ile liste formundan gönderdiğimiz kayıtno ile ilgili sql update işlemini yapacağız.Formu kapatıp liste formuna geri döndüğümüzde ise listeyi otomatik güncelleyeceğiz ve label'in text'ine güncellemesini yaptığımız personelin adını yazdıralım.

 

2. YOL - Form Açıp/Kapatırken
     a. Formu Açarken Veri Gönderme
     Yapmak istediğimiz işlem listedeki bir personel bilgilerini güncellemek.

PersonelKaydi formunda aşıdaki gibi bir değişken açalım.

Public int PersonelRECno = 0;


    Şimdi PersonelListe formundan PersonelKaydi formuna bir kayıtno gönderelim ve PersonelListe formuna eklediğimiz contextmenustrip'e eklediğimiz Güncelle seçeninin click eventine kodları yazalım;

 PersonelKaydi fr =  new PersonelKaydi ();
   fr.PersonelRECno = AlınanRECno;
   //boş form açarken değişken göndermemize gerek yok.
   //bu değişken PersonelListe formunda tanımlanan normal bir değişken. Yani Public değil
   fr.ShowDialog();

//alttaki kodları da contextmenustrip deki kaydet seçeneği altına yazın 
 PersonelKaydi fr =  new PersonelKaydi ();
   fr.ShowDialog();
// bu şekilde boş bir form da açabilirsiniz.

Bu şekilde PersonelListe formundan aldığımız ve AlınanRECno değişkenine atadığımız kayıt numarasını  PersonelKaydi formundaki PersonelRECno adlı public değişkene atadık. Yani kayıt no bilgisini diğer forma aktardık.

PersonelKaydi formunda bir label'in text'ine yazdırdığınızda sonucu görebilirsiniz.

Label1.Text = PersonelRECno .ToString(); 

2. Formu Kapatırken Veri Gönderme
Şimdi PersonelKaydi formunda PersonelAdi adında public bir değişken açıyoruz.

Public string PersonelAdi = "";

PersonelKaydi formunda güncellememizi yaptık ve formu kapatacağız. Formumuza ekldiğimiz 

kapat butonunun click eventi altında yada

kaydet butonumuzun altındaki update işleminin sonundaki

Close();

kodunun üst kısmında PersonelKaydi formumuzda açtığımız public değişken olan PersonelAdi değişkenimize personel adını atıyoruz.

Yani kodlarımız şu şekilde olacak;

//sql update işlemini yapan kodlar
//...

PersonelAdi = txt_PersonelAdi.Text;
Close();

Şimdi PersonelListe fromumuza geri döndük ve PersonelKaydi formumuzdan aldığımız personel adını label'e yazdıracağız.

PersonelKaydi fr =  new PersonelKaydi ();
fr.PersonelRECno = AlınanRECno;
fr.ShowDialog();
//güncelleme için yazdığımız form açma kodlarımızın altına bu satırı ekliyoruz.
lbl_PersonelAdi.Text = fr.PersonelAdi ;

Gördüğünüz gibi arkadaşlar. Yukarıdaki son satırı da eklediğimizde kayıt formu kapatıldığında personel adını label e yazdırmış oluyoruz.

3. YOL Class Kullanarak

2. yol ile birlikte bu yolu da çok sık kullanırım. Kendime bir GlobalSystem adında bir class açtım ve değişken göndermek için kullanıyorum. 

Senaryomuz; 

Kullanıcı giriş başarılı ise Kullanıcı Kodu, Kullanıcı Adı, Kullanıcı Şifresi vs bilgileri bu class a attıktan sonra program kapanana kadar o bilgilleri istediğim kadar kullabilirim. Bunu yapmamış olsaydım her seferinde diğer bilgiler için sqlden veri çektirmek zorunda kalırdım ki bu performansı kötü yönde etkiler.

Görelim;

Class'ı açtıktan sonra içerisinde bunları ekleyelim.

public static string AktifKullaniciAdi = "";
public static int AktifKullaniciKodu = 0;
public static string AktifKullaniciSifre= "";
.
.

Bunları nasıl kullanacağımızı da görelim;

KullaniciLogin Formundaki giriş butonunun click eventine atama kodlarımızı yazalım.

GlobalSystem.AktifKullaniciAdi  = TXT_Kullanici_Adi.Text;
GlobalSystem.AktifKullaniciKodu = Convert.ToInt32(TXT_Kullanici_Kodu.Text);
GlobalSystem.AktifKullaniciSifre = TXT_Kullanici_Sifre.Text;

Örn bir SQL insert içerisinde kullanımına bakalım.

INSERT INTO PERSONELLER 
 (
 //Diğer Kolonlar
 , Kaydeden
 , KayitTarihi
 )
VALUES
 (
 //Diğer Kolonlar
 , " + GlobalSystem.AktifKullaniciAdi + "
 , Getdate() //SQL serverin bulunduğu pcnin saatini alır.
 )

Bu ders bu kadar sevgili arkadaşlar umarım faydalı olur.

Yorumlarınızı eksik etmeyin arkadaşlar. Artılarımı ve eksilerimi söylemekten çekinmeyin.

Mustafa BÜKÜLMEZ
Web sitesi, ERP, MRP, CRM ve kişiye özel uygulamalar hazırlanır. -- Deneyip çalıştığını onaylamadan çok nadir ders eklerim. Denemediklerim ise eski makalelerimdendir. Hem bildiklerimi paylaşmak hemde her seferinde aramamak için yayınlıyorum. -- *Bilgi paylaştıkça çoğalır. *Bir mum diğer mumu yakmakla ışığından bir şey kaybetmez. Aksine Daha çok ışık yayar. -- 1992 İstanbul doğumluyum. Kahramanmaraş'ta yaşıyorum. Lise: Ağ sistemleri ve Yönetimi, Üniversite: Bilgisayar Programcılığı.. -- 07.2014 tarihinden beri bir firmada Bilgi İşlem Müdürü olarak çalışmaktayım. -- Kişisel Bloğum : https://csharpiledundenbugune.blogspot.com.tr/
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git