oledb etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
oledb etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

17 Mart 2013 Pazar

Veritabanı - 2... Combobox Kullanarak Alan Seçimi İle Aratma Yapmak...


Veritabanı  - 1 dersin de kullanmış olduğumuz okul isimli access dosyası üzerinden yine bir uygulama yapacağız... Bunun için aşağıdaki form tasarımını sağlayın... Bu sefer ki amacımız comboboxtan seçilen alan adına göre aratma yapmak ve yine bilgileri ekrana getirmek... 


Seçim alanı için kullanacağımız combobox ın içeriğini, üzerindeki ok işaretine tıklayarak edit items kısmına alan isimlerini sırası ile giriyoruz... Aşağıdaki gibi olacaktır.. Buraya gireceğimiz alan isimleri ile okul dosyamızdaki alan isimleri birebir aynı olmaz ise çalışmamız hata verecektir... 


Programımız çalıştığı zaman aşağıdaki gibi bir görüntü olacaktır... 

SQL ifadesi içerisinde form elamanlarını kullanmak istediğimiz zaman önce " karakteri ile SQL ifadesinden çıkıyoruz... Sonra aralarında bağlantı olması için aynı console.write komutundaki gibi + karakterini koyup form elamanımızı yazıyoruz... Nasıl SQL ifadesinden çıktıysak aynı mantıkla geri dönüyoruz... Önce +, sonra ise " karakterlerini yerleştirip SQL ifadesine devam ediyoruz... 

Aslına bakarsanız Console.Write komutunda değişkenleri kullanmak ile aynı mantık... 

Aşağıdaki örnekte alan isimleri combobox1 den gelmektedir... Alan isimlerinde Türkçe karakter veya boşluk ifadeler kullanıyorsanız [] karakterleri arasında alan isimlerini çağırın... Örneğin [Isim] veya [Ad Soyad] gibi... Bu şekilde olunca alan ismi olduğu anlaşılır ve program devam eder... Biz buradaki örnekte alan isimlerini Combobox1 de tuttuğumuz için ["+combobox1.text+"] komutunu kullandık... 


Programımızın kodları ise aşağıdaki gibi olacaktır...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;  // Veritabanı için OLEDB kütüphanesini açıyoruz...

namespace arama_2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //ÖRNEK - 2:  COMBOBOX İLE SEÇİLEN ALAN ADINA GÖRE, 
        // TEXTBOX'A GİRİLEN DEĞER ARANIYOR ve TEXTLERDE BİLGİLER GÖSTERİLİYOR...
         
        // Bu kısımda tanımlama database bağlantısı yapılınca bütün alt programlarda kullanılabiliyor...
        // Database bağlantısını yapıyoruz ve SQL komut nesnesini tanımlıyoruz...
        OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=okul.mdb");
        OleDbCommand komut = new OleDbCommand();
        
        private void button1_Click(object sender, EventArgs e)
        {
            // Veritabanını açıyoruz... 
            baglanti.Open();

            /*Like komutu belirlenen alan adına göre verilen değerleri araştırır... Kaç adet bulunursa hepsini gösterir...
             * Combobox'ta seçmiş olduğumuz alan adına göre arama yaptırılıyor... Sadece o alanda bulunan hücrelere
             * bakılarak, Textbox'da bulunan değer aranıyor... Burada bulunan karakterler çok önemlidir... 
             * SQL komutlarının haricinde bir ifade eklenecek ise " " işaretleri arasında verilir ve + + işaretleri ile eklenir...
             */
            komut.CommandText = "SELECT * FROM ogrenci WHERE  [" + comboBox1.Text + "] Like '%" 
                + textBox1.Text + "%'";
            komut.Connection = baglanti;

            OleDbDataReader oku = komut.ExecuteReader(); //Aldığımız bilgilerimizi depomuza atıyoruz...
            while (oku.Read()) // Sonuna kadar okutma yapıyoruz...  Aynı olduğu anda textlere değerleri yazıdıyoruz...
            {
                textBox2.Text = oku[0].ToString();
                textBox3.Text = oku[1].ToString();
                textBox4.Text = oku[2].ToString();
                textBox5.Text = oku[3].ToString();
            }

            oku.Close();         // Depo değişkenimizi ve veritabanımızı kapatıyoruz...
            baglanti.Close(); 
        }
    }
}

13 Şubat 2013 Çarşamba

İlaç Programı

Birden fazla form üzerinde ilaç firmaları için yapılan güzel bir uygulama... 1. dönem öğrencilerimize yaptırdığımız örnek uygulamalardan bir tanesi... Amaç veritabanı bağlantıları üzerinden işlemler yapabilmek...

Temel veritabanı bağlantılarının olduğu, kayıt ekleme, bilgi kontrolü gibi access veritabanına bilgilerin gönderildiği bir uygulama...

Programda kullanacağımız veritabanı aşağıdaki gibi olacaktır...


Veritabanının tasarım kısmı ise aşağıdaki gibi olacaktır...


Uygulamada üç adet formumuz var... 1. formda ürün adlarına göre listeleme bilgileri geldiği gibi aynı zamanda ödeme seçenekleri alınan ilaç için ödeme yapılıyor... form1 e ait kodlar aşağıdaki gibidir... Kodlama kısmının yanında  gerekli açıklamalar yapılmıştır...



// FORM 1 KODLAR
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;  // Access ile yaptığımız bütün veritabanı bağlantılarında eklemek zorundayız...

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ilac.accdb");
        OleDbCommand komut = new OleDbCommand();

        private void Form1_Load(object sender, EventArgs e)
        {
            // Program başladığı anda ürün adı kısmında combobox ın içerisine ilaç isimleri yerleştiriliyor ...
            baglanti.Open();   
            komut.CommandText = " Select * From tablo1"; 
            komut.Connection = baglanti; 
            OleDbDataReader oku = komut.ExecuteReader(); 
            while (oku.Read()) 
                 comboBox1.Items.Add(oku[0].ToString()); // oku[0] olması sebebi ile ilk alandaki bilgileri alıyor...
              
            oku.Close();         
            baglanti.Close();
            textBox1.Enabled = false; // Fiyat bilgileri ürün seçilmeden aktif olmamalı
            textBox2.Enabled = false; 
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Combobox tan seçilen ilaca göre bilgileri veritabanından alıyoruz...
            baglanti.Open();  
            komut.CommandText = " Select * From tablo1 where [İlacın Adı]='"+comboBox1.Text+"' "; 
            komut.Connection = baglanti; 
            OleDbDataReader oku = komut.ExecuteReader(); 
            while (oku.Read())  
            {
                pictureBox1.ImageLocation = oku[2].ToString(); // resim adresini alıyoruz... 
                textBox6.Text = oku[5].ToString();
                textBox4.Text = oku[1].ToString();
                textBox5.Text = oku[3].ToString();
                textBox7.Text = oku[6].ToString();
                richTextBox1.Text=oku[7].ToString(); // geniş içerik... daha fazla yazı için kullandık... 

            }
            oku.Close();
            baglanti.Close();      
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            // kredi kartı numarasını gireceğimiz alanı seçimden sonra aktif ediyoruz... 
            if (radioButton1.Checked == true)
            {
                textBox1.Enabled = true;
            }
            else
                textBox1.Enabled = false;          
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            // Kontör ile ödemeyi de seçimden sonra aktif ediyoruz...  
            if (radioButton2.Checked == true)
            {
                textBox2.Enabled = true;
            }
            else
                textBox2.Enabled = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {

            string obilgi="";       // Ödeme bilgisini buraya alıyoruz... Numara bilgileri
            string oturu="";        // Ödeme türünü buraya alıyoruz... Radio button seçimleri
            string kurum="";
            double son_fiyat = 0;   // Sosyal güvenlikten sonra ödenecek fiyat... 

            if(radioButton1.Checked)
            {
                // Kredi kartı ile ödeme...
                obilgi=textBox1.Text;
                oturu=radioButton1.Text;
            }
            else if(radioButton2.Checked)
            {
                // Kontör ile ödeme... Telefon...
                obilgi=textBox2.Text;
            oturu=radioButton2.Text;
            }
            else if(radioButton3.Checked)
            {
                // Peşin ödeme... Kapıda... 
                oturu=radioButton3.Text;
                obilgi = "peşin";
            }

            if (radioButton4.Checked)
            {
                // Bakıma muhtaç seçili ise ilaçtan para alınmıyor... Son fiyat yok... 
                kurum = radioButton4.Text;
                son_fiyat = 0;
            }
            else if (radioButton5.Checked)
            {
                // SSK ise %10 fiyatı ödeniyor... 
                kurum = radioButton5.Text;
                son_fiyat = double.Parse(textBox4.Text)*0.1;
            }
            else if (radioButton6.Checked)
            {
                // Emekli sandığı ise %20 ödeniyor... Devlet memuru... 
                kurum = radioButton6.Text;
                son_fiyat = double.Parse(textBox4.Text)* 0.2;
            }

            bool kontrol = false; // Boş alan kalmaması için kontrol ettirdiğimiz değişkendir... 
            if (kontrol == false)
            {
                if (textBox3.Text != "" && textBox8.Text != "" && kurum != "" && oturu != "" && obilgi != "" && comboBox1.Text != "")
                    kontrol = true;
                else
                    MessageBox.Show("HATA...");
                }

            if (kontrol)
            {
                try
                {
                    baglanti.Open();
                    komut.Connection = baglanti;
                    komut.CommandText = "insert into Satis([Ad Soyad],[Adres],[İlaç Adı],[Fiyat],[Ödeme Türü],[Ödeme Bilgileri],[Kurum],[Son Fiyat]) values('" + textBox3.Text + "','" + textBox8.Text + "','" + comboBox1.Text + "'," + textBox4.Text + ",'" + oturu + "','" + obilgi + "','" + kurum + "'," + son_fiyat + ")";
                    komut.ExecuteNonQuery();
                    MessageBox.Show("Kayıt Eklendi");
                    baglanti.Close();

                    Form3 frm3 = new Form3();
                    frm3.Show();
                    this.Hide();
                }
                catch (Exception)
                {
                    MessageBox.Show("Ödeme bilgileri size ait değil... Tekrar deneyiniz...");
                }
                
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            kaydet frm2 = new kaydet();
            frm2.Show();
            this.Hide();
        }
    }
}

Form 2 de olan kodlar ise aşağıdaki gibidir... bu formda ise Gözat kısmından bilgisayarda olan her hangi bir resim seçilmekte ve ilaçın kullanım tarihleri bilgisi belirlenmektedir... Bir eksik olarak sıralı bilgiler şeklinde girilmelidir... Yani Gözattan resim seçilmeden diğer işlemlere geçmemek lazım... Aynı zamanda Gözatdan resim seçildiği anda veritabanının olduğu yere o resim kopyalanmaktadır... 


// FORM 2 KODLAR
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace WindowsFormsApplication2
{
    public partial class kaydet : Form
    {
        public kaydet()
        {
            InitializeComponent();
        }

        OleDbConnection baglan = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ilac.accdb");
        OleDbCommand komut = new OleDbCommand();
        
        private void button1_Click(object sender, EventArgs e)
        {
            // Veritabanına kayıt işlemini yapıyor... 
            komut.Connection = baglan;

            komut.CommandText = "insert into Tablo1 values('" + textBox1.Text + "'," + textBox2.Text + ",'" + resimyol + "','" + comboBox1.Text + "','" + comboBox2.Text + "','" + dateTimePicker1.Value.Date.ToString() + "','" + dateTimePicker2.Value.Date.ToString() + "','" + richTextBox1.Text + "')";
            baglan.Open();
            komut.ExecuteNonQuery();
            baglan.Close();
            MessageBox.Show("Kayıt Eklendi");

        }

        private void button2_Click(object sender, EventArgs e)
        {
            Form1 frm1 = new Form1();
            frm1.Show();
            this.Hide();
        }

        string resimyol=""; // kopyaladığımız resmin bilgisayardaki yolunu almak için kullanıyoruz... 

        
        private void button2_Click_1(object sender, EventArgs e)
        {
            // Resmi istenilen klasörün altına kopyasını oluşturarak kaydediyor... 
            OpenFileDialog od = new OpenFileDialog();
            
            try
            {
                if (od.ShowDialog() == DialogResult.OK)
                {
                    string hedefDizin = @"resim\" + od.SafeFileName; // kopyalanacak dizin belirliniyor... 
                    System.IO.File.Copy(od.FileName, hedefDizin); // kopyalıyor... 
                    resimyol ="resim\\" + od.SafeFileName; // resmin adını ve yolunu alıyor... veritabanı için...
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Dosya Zaten Var...");
            }
            
        }
    }
}