En iyi yanıtlayıcılar
Değişkene göre database de sorgu çalıştırmak

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();
}
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
-
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
Tüm Yanıtlar
-
-
-
-
-
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.
-
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();
}- Düzenleyen Hasan TİRTOM 17 Mart 2018 Cumartesi 10:41
-
-
-
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
-
Evet ama nasıl?
Yardım edebilecek kimse yok mu?
- Düzenleyen Hasan TİRTOM 19 Mart 2018 Pazartesi 08:07
-
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.
-
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