none
Değişkene göre database de sorgu çalıştırmak RRS feed

  • Soru

  • Merhaba hocalarım 

    combobox tan yapılan seçime göre database deki bir kolondaki değere bağlı olarak veri çekmeye çalışıyorum. Fakat combobox daki veri tek tek elma /  armut  /  portakal  iken sıkıntı yok fakat  combobox daki veri elma, armut veya elma, portakal yada elma, armut, portakal olduğunda veri dönüşü alamıyorum. Burada yapmak istediğim elma olduğunda elmaya bağlı veriler gelsin, elma, armut olduğunda elma olanlarla birlikte armut olanlarda gelsin istiyorum. Gelen veriyi de checkedComboBox da göstereceğim.

    Bunun için öncelikle split ile ile combobox tan gelen veriyi virgül ile ayırarak parçaladım. Fakat bu parçalara göre sorgumu çalıştıramadım. Burada nasıl bir yol izlemem lazım. Yardımcı olabilirseniz çok sevinirim.

      string metin = cmbSec.Text;
                    string[] Parcalar = metin.Split(',');
                    foreach (string parca in Parcalar)
                    {
                    OleDbDataReader oku;
                    bag.Open();
                    srg.Connection = bag;
                    srg.CommandText = "Select [UyeAdi] From [Gor] Where [GorAdi] like '" + parca + "'  AND [Durum]='Aktif' ";
                    oku = srg.ExecuteReader();
                    while (oku.Read())
                    {
                        chkCmbCek.Properties.Items.Add(oku[0], CheckState.Unchecked, true);
                        chkCmbRet.Properties.Items.Add(oku[0], CheckState.Unchecked, true);
                    }
                    bag.Close();
                    }

     

    16 Mart 2018 Cuma 12:16

Yanıtlar

  •  Xsecimler = "Select [UyeAdi] From [Gor] Where [Durum]='Aktif' ";

    ten sonra and olacak sadece meyveleri secerken or olacak yani

    select * from Gor where durum = 'Aktif' and (MeyAdi = 'elma' or MeyAdi = 'armut') 

    sen bu sorguyu elde edeceksin parantesi içi uzayabilir or ile bağlı olarak.

    • Yanıt Olarak İşaretleyen Hasan TİRTOM 19 Mart 2018 Pazartesi 17:39
    17 Mart 2018 Cumartesi 11:10

  •                 string metin = cmbKomSec.Text;
                    string[] Parcalar = metin.Split(',');
                    string Xsecimler;
                    Xsecimler = "Select [UyeAdi] From [Gor] Where [Durum] = 'Aktif' AND ([MeyAdi] = '" + Parcalar[0] + "' ";
                    for (int i = 0; i < Parcalar.Count(); i++)
                    {
                        Xsecimler = Xsecimler + "OR [MeyAdi] Like '%" + Parcalar[i].Substring(1,5) + "%' ";
                    }

                    OleDbDataReader oku;
                    bag.Open();
                    srg.Connection = bag;
                    srg.CommandText = Xsecimler + ")";
                    MessageBox.Show(srg.CommandText);
                    oku = srg.ExecuteReader();
                    while (oku.Read())
                    {
                        chkCmbCek.Properties.Items.Add(oku[0], CheckState.Unchecked, true);
                        chkCmbRet.Properties.Items.Add(oku[0], CheckState.Unchecked, true);
                    }
                    bag.Close();

                }

    Çalışan kod bu. Yardımlarınız için çok teşekkür ederim. Buradaki sıkıntı split ile bölerken virgülden sonraki boşluğu da almasından kaynaklı cevap döndürmemesiymiş. Umarım benzer sorunla karşılaşan arkadaşlara yol gösterir.

    • Düzenleyen Hasan TİRTOM 19 Mart 2018 Pazartesi 17:39 Sorun çözüldü
    • Yanıt Olarak İşaretleyen Hasan TİRTOM 20 Mart 2018 Salı 10:51
    19 Mart 2018 Pazartesi 13:44

Tüm Yanıtlar

  • Merhaba,

    comboBox da seçilen nesne/nesnelere göre sorguyu düzenleyebilirsiniz.

    Örnek olarak bir if sorgusunda her şecileni kontrol ettirip eğer seçilmişse " + and GorAdi like 'secilendeger%' şeklinde yapabilirsiniz. 

    Kolay gelsin..

    16 Mart 2018 Cuma 13:03
  • İyi günler.

    Combobox daki değerlerini split ile , (virgüle) göre parcala ve bir döngü ile select komudunda topla (or ile) sorgunu ondan sonra çalıştır.

    16 Mart 2018 Cuma 21:54
  • hocam elma, armut gibi değerler kullanıcı tarafından tanımlanacağı için sabit değiller ve sayıları belirli değil. O nedenle if sorgusuyla yapılabilecek gibi durmuyor.
    17 Mart 2018 Cumartesi 07:46
  • iyi günler hocam, or komutunu döngü ile nasıl kullanıcam örnek bir kod bloğu yazabilirmisiniz?

    or komutunda birinci değer doğru ise ikinci değere bakmaz gibi bir açıklama okudum o yüzden tam olarak kafamda oturtamadım. 

    17 Mart 2018 Cumartesi 07:49
  • string[] meyveler= {"elma""armut""portakal""mandalina" }; 

    string Xsecimler;

    xsecimler = "select * from tablomeyve where 1 = 1";

    for (int i=0;i < meyveler.lenght;i++)

    secimler = secimler + " or meyveadi = '" + meyveler[i] ;

    şeklinde bir select cümlesi tanımlayabilirsin or meyve adı elma ise veya armut ise veya protakal isede bulur getirir.

    yanlız kodları şimdiy yazdım denemedim denerken kontrol edersen iyi olur.

    İyi çalışmalar.

    17 Mart 2018 Cumartesi 08:33
  • hocam aşağıdaki şekilde düzenledim ama sorgu ifadesinin sonunu çift tırnakla kapatamadığım için sanırım dönüş alamıyorum.

    sorgunun dönüşü şu oluyor : Select [UyeAdi] From [Gor] Where [Durum]='Aktif

    kodu şu şekilde düzenledim :

                    string metin = cmbKomSec.Text;
                    string[] Parcalar = metin.Split(',');
                    foreach (string Mey in Parcalar)
                    {
                        string[] Meyveler = { Mey };
                        string Xsecimler;
                        Xsecimler = "Select [UyeAdi] From [Gor] Where [Durum]='Aktif' ";
                        for (int i = 0; i < Meyveler.Length; i++)
                        
                            Xsecimler = Xsecimler + " or [MeyAdi] = '" + Meyveler[i] + "'" ;
                        
                        OleDbDataReader oku;
                        bag.Open();
                        srg.Connection = bag;
                        srg.CommandText = Xsecimler;
                        oku = srg.ExecuteReader();
                        while (oku.Read())
                        {
                            chkCmbCek.Properties.Items.Add(Xsecimler, CheckState.Unchecked, true);
                            chkCmbRet.Properties.Items.Add(Xsecimler, CheckState.Unchecked, true);
                        }
                        bag.Close();
                    }


    17 Mart 2018 Cumartesi 10:37
  • Xsecimler = Xsecimler + " AND [MeyAdi] = '" + Meyveler[i] + "'" ;

    and kullanmışsın bir meyvenin adı aynı anda elma ve armut olamaz or kullanman gerekiyor meyvenin adı elma veya armut ise demen lazım.

    17 Mart 2018 Cumartesi 10:42
  • evet orayı düzelttim birde ckhcombobox a yazarken sorgu cümlesini yazdırmışım onuda düzeltiyorum şimdi.

    Fakat combobox tan seçimi değiştirsem bile her seferinde database de aktif olan tüm isimleri getiriyor. Hata nerede olabilir?

    17 Mart 2018 Cumartesi 10:58
  •  Xsecimler = "Select [UyeAdi] From [Gor] Where [Durum]='Aktif' ";

    ten sonra and olacak sadece meyveleri secerken or olacak yani

    select * from Gor where durum = 'Aktif' and (MeyAdi = 'elma' or MeyAdi = 'armut') 

    sen bu sorguyu elde edeceksin parantesi içi uzayabilir or ile bağlı olarak.

    • Yanıt Olarak İşaretleyen Hasan TİRTOM 19 Mart 2018 Pazartesi 17:39
    17 Mart 2018 Cumartesi 11:10
  • Evet ama nasıl?

    Yardım edebilecek kimse yok mu?

    17 Mart 2018 Cumartesi 11:17
  •  Xsecimler = "Select [UyeAdi] From [Gor] Where [Durum]='Aktif' ";

    ten sonra and olacak sadece meyveleri secerken or olacak yani

    select * from Gor where durum = 'Aktif' and (MeyAdi = 'elma' or MeyAdi = 'armut') 

    sen bu sorguyu elde edeceksin parantesi içi uzayabilir or ile bağlı olarak.

    ilk döngüde "OR" olmasın diğer döngülerde "OR" olsun u nasıl diyeceğiz?
    19 Mart 2018 Pazartesi 10:32

  •                 string metin = cmbKomSec.Text;
                    string[] Parcalar = metin.Split(',');
                    string Xsecimler;
                    Xsecimler = "Select [UyeAdi] From [Gor] Where [Durum] = 'Aktif' AND ([MeyAdi] = '" + Parcalar[0] + "' ";
                    for (int i = 0; i < Parcalar.Count(); i++)
                    {
                        Xsecimler = Xsecimler + "OR [MeyAdi] Like '%" + Parcalar[i].Substring(1,5) + "%' ";
                    }

                    OleDbDataReader oku;
                    bag.Open();
                    srg.Connection = bag;
                    srg.CommandText = Xsecimler + ")";
                    MessageBox.Show(srg.CommandText);
                    oku = srg.ExecuteReader();
                    while (oku.Read())
                    {
                        chkCmbCek.Properties.Items.Add(oku[0], CheckState.Unchecked, true);
                        chkCmbRet.Properties.Items.Add(oku[0], CheckState.Unchecked, true);
                    }
                    bag.Close();

                }

    Çalışan kod bu. Yardımlarınız için çok teşekkür ederim. Buradaki sıkıntı split ile bölerken virgülden sonraki boşluğu da almasından kaynaklı cevap döndürmemesiymiş. Umarım benzer sorunla karşılaşan arkadaşlara yol gösterir.

    • Düzenleyen Hasan TİRTOM 19 Mart 2018 Pazartesi 17:39 Sorun çözüldü
    • Yanıt Olarak İşaretleyen Hasan TİRTOM 20 Mart 2018 Salı 10:51
    19 Mart 2018 Pazartesi 13:44