Asp.net'te Arama yapmak

Kodla Büyü

Kayra_Bilal

Seçkin Üye
Seçkin Üye
Mesajlar
612
Arkadaşlar veritabanındaki verileri textboxlara girilen değerler ile sorgulama yapmak istiyorum.
Birden fazla textbox kullanarak ve or kullanmadan(or deyimi ile tam sonuç alamıyoruz) bu nasıl yapılabilir fikren yardımcı olabilecek var mı?
Örnek:Adı:..........Soyadı:..............Okul no:...........Sınıf:..........
 
İsteğiniz tam olarak 4 parametreyi kullanarak tek bir öğrenciyi getirmek midir hocam?
 
hocam SELECT *** FROM TABLE WHERE XX LIKE %DEGER% olarak kullanarak, kendine göre ayarlaman gerekecek. LIKE % ifadesi içerisinde aradaki değeri bulunduran değerler için kullanıyor.
 
hocam farklı bir bakış açısı olarak string.contains araştır ben aramaları containsle yaparım hep.
 
erdcannet' Alıntı:
İsteğiniz tam olarak 4 parametreyi kullanarak tek bir öğrenciyi getirmek midir hocam?

Evet ama herhangi birini de girsem arama yapacak 2 sini girsem o iki kriter için arayacak 3ünü girsem o girilen 3 ü için arayacak
Bilmem anlatabildim mi.
Daha detaylı anlatayım.
Öğrenci bilgilerini adına göre, adı ve soyadına göre,tc sine göre sınıfına göre aratmak istiyorum.
Örnek sınıfa göre 11.sınıflar hepsi gelecek Bir de şubeyi A seçersem 11 A dakiler gelsin.
Veya Adı ahmet olanlar listelensin aynı zaman da soyadına göre soyadı sayın olanlar gelsin gibi...
Birden fazla kritere göre arama ve tek sql kodunda yazmak istiyorum.
Ben iç içe iflerle yapmaya çalışıyorum ama aşağıdaki gibi...
Sql de sorgulanın içeriğini görmüyor maalesef.
if (TextBox2.Text != "")
{
if (sorgula == "")
{
sorgula = "tc='" + TextBox2.Text + "'";
}
else
{
sorgula = "tc='" + TextBox4.Text + "' + " + sorgula + "";
}
}
if (TextBox3.Text != "")
{
if (sorgula == "")
{
sorgula = "adi like '" + TextBox3.Text + "'";
}
else
{
sorgula = "adi like '" + TextBox3.Text + "' + " + sorgula + "";
}
}
if (TextBox4.Text != "")
{
if (sorgula == "")
{
sorgula = "sadi='" + TextBox4.Text + "'";
}
else
{
sorgula = "sadi='" + TextBox4.Text + "' + " + sorgula + "";
}
}
if (TextBox3.Text != "")
{
if (sorgula == "")
{
sorgula = "okulno='" + TextBox3.Text + "'";
}
else
{
sorgula = "okulno='" + TextBox3.Text + "' + " + sorgula + "";
}
}
if (DropDownList1.Text != "")
{
if (sorgula == "")
{
sorgula = "sinif='" + DropDownList1.Text + "'";
}
else
{
sorgula = "sinif='" + DropDownList1.Text + "' + " + sorgula + "";
}
}
if (DropDownList2.Text != "")
{
if (sorgula == "")
{

sorgula = "sube='" + DropDownList2.Text + "'";
}
else
{

sorgula = "sube='" + DropDownList2.Text + "' + " + sorgula + "";
}


}
if (sorgula != "")
{


OleDbConnection baglan1 = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; DATA Source=" + Server.MapPath("App_Data/bilgilerim.accdb"));
OleDbCommand sg = new OleDbCommand("Select tc,adi,sadi,okulno,sinif,sube from ogrenciler where sorgula", baglan1);

OleDbDataAdapter adp = new OleDbDataAdapter(sg);
DataTable dt = new DataTable();
baglan1.Open();
adp.Fill(dt);
if (dt != null && dt.Rows.Count > 0)
{
GridView1.DataSource = dt;


GridView1.DataBind();
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
TextBox4.Text = "";
DropDownList1.Text = "";
DropDownList2.Text = "";


GridView1.HeaderRow.Cells[1].Text = "T.C Kimlik No";
GridView1.HeaderRow.Cells[2].Text = "Ad";
GridView1.HeaderRow.Cells[3].Text = "Soyad";
GridView1.HeaderRow.Cells[4].Text = "Okul No";
GridView1.HeaderRow.Cells[5].Text = "Sinif";
GridView1.HeaderRow.Cells[6].Text = "Subesi";

GridView1.Visible = true;

}
 
hocam kodun tam olarak incelemedim ama mantık olarak doğru. Sorgu içeriğini boş görüyorsa, BreakPoint koyup programı öyle çalıştırın. Programın bir yerde atladığı bir şey olabilir.
 
Sorgu ifadelerinin arasına and koymalısınız. Bu haliyle sorgu boş değer döndürecektir.
 
yakuphan' Alıntı:
Sorgu ifadelerinin arasına and koymalısınız. Bu haliyle sorgu boş değer döndürecektir.

Yakuphan hocam and de denedim ama hata veriyor.ama
Gerekli bir veya daha fazla parametre için girilen değer yok.
sorgula ifadesinin içini direk yazdığım zaman çalışıyor.sorgula değişkenini direk yazınca hata veriyor.
OleDbCommand sg = new OleDbCommand("Select tc,adi,sadi,okulno,sinif,sube from ogrenciler where sorgula", baglan1); hata
OleDbCommand sg = new OleDbCommand("Select tc,adi,sadi,okulno,sinif,sube from ogrenciler where tc='" + TextBox2.Text + "' ", baglan1);çalışıyor
 
OleDbCommand sg = new OleDbCommand("Select tc,adi,sadi,okulno,sinif,sube from ogrenciler where "+sorgula, baglan1); ve @yakuphan hocamın dediği gibi and kullanmalısınız
 
beyisoy' Alıntı:
OleDbCommand sg = new OleDbCommand("Select tc,adi,sadi,okulno,sinif,sube from ogrenciler where "+sorgula, baglan1); ve @yakuphan hocamın dediği gibi and kullanmalısınız

hocam onu da denedim olmuyor aynı hatayı verdi.
 
Kod:
OleDbCommand sg = new OleDbCommand("Select tc,adi,sadi,okulno,sinif,sube from ogrenciler where sorgula", baglan1);
eğer yukarıdaki kodu kullanıyorsanız, hata almanız normal.
Kod:
OleDbCommand sg = new OleDbCommand("Select tc,adi,sadi,okulno,sinif,sube from ogrenciler where "+sorgula, baglan1);
şeklinde sorgula değişkenini sorgu metnine eklemelisiniz.
Ancak tavsiyem öncelikle sorgula değişkenini ekrana yazarak doğru bir SQL cümlesi oluşturup oluşturmadığına bakınız.
AND eklemelisinizden kastım; diyelim ki ad (örneğin yakup) ve sınıf (örneğin 9-A) bilgileri girilip, ara dendiğinde aşağıdaki bir bir sorgula değişkeni değeri oluşturmanız gerekir.
adi like '%yakup%' and sinif='9-A"
Bunu da select cümlenize eklediğinizde
Select tc,adi,sadi,okulno,sinif,sube from ogrenciler where adi like '%yakup%' and sinif='9-A'
şekline gelmelidir.
Diğer seçeneklerde de ekleme yapıldığında aynı mantıkla koşul ifadelerinin aralarına and ifadesi eklemelisiniz. Yukarıdaki örnek 9-A sınıfında isminde yakup kelimesi geçen öğrencilerin bilgilerini getirir.
Kodunuzu aşağıdaki verdiğim örneğe uygun değiştirir ve yukarıdaki gibi sorgu cümlesini oluşturursanız kodlarınızın işinizi göreceğini düşünüyorum.
Kod:
if (TextBox2.Text != "")
{
if (sorgula == "")
{
sorgula = "tc='" + TextBox2.Text + "'";
}
else
{
sorgula = "tc='" + TextBox4.Text + "' AND " + sorgula + "";
}
}
 
Kod:
  if (TextBox2.Text != "")
            {
                if (sorgula == "")
                {
                    sorgula = "tc='" + TextBox2.Text + "'";
                }
                else
                {
                    sorgula = "tc='" + TextBox4.Text + "' and " + sorgula + "";
                }
            }



Kod:
 if (sorgula != "")
 {


     OleDbConnection baglan1 = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; DATA Source=" + Server.MapPath("App_Data/bilgilerim.accdb"));
     OleDbCommand sg = new OleDbCommand("Select tc,adi,sadi,okulno,sinif,sube from ogrenciler where"+ sorgula, baglan1);
           
            OleDbDataAdapter adp = new OleDbDataAdapter(sg);
            DataTable dt = new DataTable();
            baglan1.Open();
            adp.Fill(dt);
            if (dt != null && dt.Rows.Count > 0)
            {
                GridView1.DataSource = dt;

Bu şekilde yapıyorum zaten ama FROM yan tümcesinde sözdizimi hatası.veriyor.
bir türlü olmadı nasıl iştir ya.
 
Hocam breakpoint koyup sorgu ya da sqlcommand içeriğini hata verdiğinde kopyalayın buraya yapıştırın beraber bakalim.
 
Sayın hocam
new OleDbCommand("Select tc,adi,sadi,okulno,sinif,sube from ogrenciler where" + sorgula kısmında hatanız var.
Komut
new OleDbCommand("Select tc,adi,sadi,okulno,sinif,sube from ogrenciler where " + sorgula şeklinde olmalı where ifadesinden sonra boşluk olmalı.
Siz
if (sorgula != "")
{

kısmından sonra messagebox.show("Select tc,adi,sadi,okulno,sinif,sube from ogrenciler where " + sorgula);
yazarak oluşan SQL cümlesini bir görüntüleyip, buraya ekleyin. Bahsettiğiniz hata oluşan SQL cümlesinin kurallara uygun olmamasından kaynaklanıyor ki en sonuncu mesajında hatanın sebebi where ifadesinden sonra boşluk kullanmamış olmanızdır.
 
Hocam ben de Gazi Üniversitesi, TEF - I. Öğretim, 2004 .Elektronik mezunuyum.Belki de birbirimizi görmüşüzdür.Neyse..
Hocam yaptım dediğin gibi ama aynı hata bu işi çözebilirmiyiz bilmem uğraştırıyor.Belki basit bi hata ama göremiyoruz...Hata bu attım.
 

Ekli dosyalar

  • hata.jpg
    hata.jpg
    81.1 KB · Görüntüleme: 1,307
Aşağıdaki şekilde denediğimde çalışıyor. Ama ben sqlde denedim. Kodları kendinize göre değiştirmeniz lazım. Mevcut programınız bozmamak için yeni bir button oluşturup, button_Click olayına aşağıdaki kodları yapıştırıp, veritabanı bilgilerini kendinize göre değiştirip dener misiniz?
Kod:
            //Deneme yaptığım veritabanı bilgileri
            //veritabanı adı secmeli_ders_bilgileri
            //veri tabanındaki tablo adı ogrenci_bilgileri
            //tablodaki sütun adları
            //Ogrenci_sinif, Ogrenci_Okul_No, Ogranci_Ad, Ogrenci_Soyad

            SqlCeConnection baglanti = new SqlCeConnection(@"Data Source=C:\Users\deneme\Documents\Visual Studio 2010\Projects\secmeli ders\secmeli ders\bin\Debug\secmeli_ders_bilgileri.sdf");
            SqlCeCommand komutara = new SqlCeCommand();

            string komutString="";

            if (textBox1.Text != "")
                komutString = " Ogrenci_Sinif=@sinif";

            if (textBox2.Text != "")
            {
                if (komutString != "")
                    komutString += " AND Ogrenci_Okul_No=@okulNo";
                else
                    komutString += " Ogrenci_Okul_No=@okulNo";
            }

            if (textBox3.Text != "")
            { 
                if(komutString != "")
                    komutString += " AND Ogrenci_Ad=@ad";
                else
                    komutString += " Ogrenci_Ad=@ad";
            }

            if (textBox4.Text != "")
            {
                if (komutString != "")
                    komutString += " AND Ogrenci_Soyad=@soyad";
                else
                    komutString += " Ogrenci_Soyad=@soyad";
            }
            
            komutString = "SELECT * FROM ogrenci_bilgileri WHERE" + komutString;
            komutara = new SqlCeCommand(komutString, baglanti);

            komutara.Parameters.AddWithValue("@sinif", textBox1.Text);
            komutara.Parameters.AddWithValue("@okulNo", textBox2.Text);
            komutara.Parameters.AddWithValue("@ad", textBox3.Text);
            komutara.Parameters.AddWithValue("@soyad", textBox4.Text);
            
            SqlCeDataAdapter dtAdapter = new SqlCeDataAdapter(komutara);
            DataSet dtSet = new DataSet();
            dtAdapter.Fill(dtSet);

            dataGridView1.DataSource = dtSet.Tables[0];

            komutString = "";
 

Ekli dosyalar

  • form_ornek.jpeg
    form_ornek.jpeg
    16.8 KB · Görüntüleme: 1,306
Oluşturduğunuz SQL cümlesinde hata oluşuyor. Bir virgül ya da boşluktan da kaynaklanabilir. En son kullandığınız halini tekrar buraya ekleyin isterseniz, bir bakalım.
Elektronikten Cumali, doğan yurttan arkadaşlarımdı. Muhtemelen mantık devreleri dersini beraber almışızdır.
 
Nihayet hallettim.Çok teşekkür ederim.Saat gibi çalışıyor.İlk if de sorgula değişkenini boş gördüğünden kaynaklanıyormuş.
:++: :+1:
 
Geri
Üst