Tablo birleştirme işlemi Join

Normalizasyon edilmiş veritabanın da ki bir kaç tabloyu birleştirip tek bir tabloda göstermek için Join kullanılır. Join iki tablodan bilgileri alarak tek bir sonuç verir.

Alttaki sablon örneğinde ayrı iki tablodaki değerleri birleştirip tek tabloda gösteriyor.

1
2
3
4
SELECT kolon_adi
FROM tablo_adi
JOIN tablo_adi2
ON tablo_adi.kolon_adi=tablo_adi2.kolon_adi

Ör. Northwind veritabanın da 2 ayrı tablolar üzerinden hangi ürün hangi firmadan alınıyor yazalım.

1
2
3
SELECT p.ProductID [Ürünlerno], p.ProductName [Ürünler], s.CompanyName [şirketadı]
FROM Products p
JOIN Suppliers s ON s.SupplierID = p.SupplierID

Products p ve Suppliers s tabloları kısaltarak(takma ad) yazım kolaylığı sağlamakta. Köşeli parantezler ile tablo başlıklarını değiştirdik. FROM Products p JOIN Suppliers s yazarak Products ile Suppliers tablosunu birleştirdik.

İkiden fazla tabloyu birden fazla join kullanarak yapabiliriz.

Ör.Northwind veritabanın da, çalısanlar hangi eyaletten ve hanngi bölgeden sorumludur yazalım;

1
2
3
4
5
6
7
8
SELECT e.EmployeeID,
e.FirstName,
e.LastName,
t.TerritoryDescription AS Eyalet,
r.RegionDescription AS Bolge FROM Employees e
JOIN EmployeeTerritories et ON et.EmployeeID = e.EmployeeID
JOIN Territories t ON t.TerritoryID = et.TerritoryID
JOIN Region r ON r.RegionID = t.RegionID

Kaynak : Cemal Can AKGÜL (Bilge Adam Yazılım Eğitmeni)

Order By Asc – Desc

Sql’de tablodaki değerleri sıralamak için ORDER BY anahtarı kullanılır.

1
2
3
SELECT kolon_adi
FROM tablo_adi
ORDER BY kolon_adi

Bu şekilde yazıldığında sıralama a’dan z’ye DESC default değer ile gelir. Z’den a’ya sıralamak istersek ASC kullanırız ve şu şekilde yaparız;

1
2
3
SELECT kolon_adi
FROM tablo_adi
ORDER BY kolon_adi ASC

Csharp ile taksitli ödeme hesaplama

Taksitli alış veriş yapılan iş yerlerine uygun bir program ile merhaba. Uygulamada girilen tutarı aylık taksitler şeklinde listeleyen, taksitin ödeme zamanını da gösteren mini bir muhasebe programı.(Cumartesi ve Pazar günü hafta tatili olduğundan dolayı bu günlere denk gelen ödemeyi bir gün sonraya veya önceye atıyoruz)

Taksitli ödeme hesaplama programında kullanılacak materyaller; TextBox, ListView, ComboBox(Edit Items’dan uygun 2,3,4..12 şeklinde sayıları gir) ve iki adet buton.
Metot kullanarak yapılan bu uygulamada zaman fonsiyonları kullandık.

Hesapla butonuna çift tıklayarak kodlama geçebilirsiniz ;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
private void button1_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear(); // ikinci kez hesapla butonuna tıklandığında yeni ödeme planı göster
            try  // try cath ile olası hatalar engellendi...
                  {
                               
                double para = Convert.ToDouble(textBox1.Text); //bölme işlemi olduğundan dolayı double kullanıldı
                double vade = Convert.ToDouble(comboBox1.SelectedItem);
                hesaplama(para, vade); // hesaplama metodu
            }
            catch
            {
                MessageBox.Show("Hata !!! Lütfen geçerli veri gir");
            }
        }

        private void hesaplama(double mpara, double mvade) // hesaplama metodu içeriği double kullanarak...
        {
            double odenecek = mpara / mvade; // tutar bölü seçilen taksit sayısı

            DateTime bugun = DateTime.Now; // şimdiki zamanı baz alarak bugun değişkeni tanımlandı
            DateTime odemegunu; // ödeme günü birincil olarak secildi

            for (int i = 0; i < mvade; i++)
            {
                odemegunu = bugun.AddMonths(i + 1); // taksitlendirme bir sonraki ay başlıyor... Ör: Ocak'da satın alınan ürün taksidi Şubat ayından itibaren başlamakta
                if (odemegunu.DayOfWeek.ToString() == "Saturday") // Ödeme günü Cumartesi 'ne denk gelirse bir önceki günü göster ödemeyi yaptır
                {
                    odemegunu = odemegunu.AddDays(-1);
                }
                else if (odemegunu.DayOfWeek.ToString() == "Sunday") // Ödeme günü Pazar'a denk gelirse bir sonraki günü göster ödemeyi yaptır
                {
                    odemegunu = odemegunu.AddDays(1);
                }

                ListViewItem list = new ListViewItem(); // listeleme olayı burada yapılmakta
                list.Text = odemegunu.ToLongDateString();
                list.SubItems.Add(odenecek.ToString("C"));
                listView1.Items.Add(list);
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear(); // temizle
        }

elimden geldiği kadar kodlar içinde açıklama yaptım. Bir sonraki uygulama ile görüşmek dileği ile…

Kaynak : Cemal Can AKGÜL (Bilge Adam Yazılım Eğitmeni)

Girilen ifadeyi tersten yazdırma

tersten-yazdirma

Bu örnekte girilen bir sayı veya kelimeyi tersten yazdırmayı öğrenelim. Kullanacağımız ürünler; foreach döngüsü ve girilen kelimeyi küçük harfe dönüştürmek için ToLower metodu.

Resimde gördüğünüz gibi bir form ekranı oluşturup, button1_Click kısmına;

 

1
2
3
4
5
6
7
8
9
string kelime = textBox1.Text;
string terskelime = "";
foreach (char harf in kelime)
{
terskelime = harf.ToString() + terskelime;
}
terskelime = terskelime.ToLower();

label1.Text = terskelime;

Formu titretme ve Opacity uygulaması

Csharp’da messengerdaki gibi form titretme, xp ilk açılış ekranı gibi formun yavaş yavaş görüntünün gelmesi uygulaması ile merhaba. Form titretme olayını this özelliğinden, formun sol ve üst değerini arttırıp azaltarak ufak yer değiştirme hareketleri ile göz yanıltması gibi oluşturabilirz. Formun soluktan yavaş yavaş açılmasını ise formun başlangıç(load kısımı) değerindeki Opacity‘sini 0 yapıp, belirli aralıklarla arttırarak yapabiliriz.

Yeni bir form açıp 1 buton ve 1 Timer nesnesi eklemeniz yeterli, kod kısımı ise;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private void Form1_Load(object sender, EventArgs e)
        {

//Opacity değeri başlangıçta 0 ve timer açık
            this.Opacity = 0;
            timer1.Enabled = true;
        }
        private void button1_Click(object sender, EventArgs e)
        {
// for kullanarak bir kaç saniye formu titreştiriyoruz. Sol ve üst kısmını 3'er arttırıp 3'er azaltıyoruz
            for (int i = 0; i < 200; i++)
            {
                this.Left += 3;
                this.Top += 3;
                this.Left -= 3;
                this.Top -= 3;
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
// Opacity değerini 0.10'ar  arttırarak formu yavaş yavaş görüntünün gelmesini sağlıyoruz
            this.Opacity += 0.10;
            if (this.Opacity == 1)
            {
                timer1.Enabled = false;
            }
        }

Olay bu kadar…

Console while ile kullanıcı girişi

Csharp Console Application’da while döngüsünü kullanarak, kullanıcı adı ve şifresi ile giriş yapılan basit bir uygulama örneğiyle merhaba. Bazen form ekranına ihtiyaç duymayız, direk kodlara dalış yapıp kod üzerinde uygulamayı çalıştırabiliriz. Örneğimize geçecek olursak, kullanıcı adı admin şifresi 1234 olan basit giriş ekranı;

static void Main blogu içine;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
static void Main(string[] args)
        {
            string kuladi = "admin";
            string sifre = "1234";

            Console.WriteLine("kullanıcı adı gir");
            kuladi = Console.ReadLine();

            while (kuladi != "admin")
            {

                //kullanıcı adı hatalı ise bunları yazdır
                Console.WriteLine("Hatalı!!! geçerli kullanıcı adı gir");
                kuladi = Console.ReadLine();
            }

            Console.WriteLine("kullanıcı şifresini gir");
            sifre = Console.ReadLine();

            while (sifre != "1234")
            {
                //kullanıcı şifresi hatalı ise bunları yazdır
                Console.WriteLine("Hatalı!!! geçerli kullanıcı şifresi gir");
                sifre = Console.ReadLine();
            }

           

        }