Forum

Asp.net Aynı tablod...
 
Bildirimler
Hepsini Temizle

Asp.net Aynı tablodaki benzersiz sorgular

3 Yazılar
2 Üyeler
0 Reactions
484 Görüntüleme
(@irfankocak)
Gönderiler: 32
Trusted Member
Konu başlatıcı
 

Merhaba ;

Destek sistemi projemde aşamadığım bir sorun ile karşılaştım konu hakkında yardımcı olabilirseniz çok sevinirim.

Raporlar ekranında 6 adet checkbox 2 adet dropdownlist ve 4 adet textbox kullanıyorum.Filtrele butonuna tıkladığımda gerekli işlemleri yapıyor bu kısıma kadar sorun yok fakat birden fazla seçim ile listeleme yaptığımda aynı veriyi iki kere listeliyor.

Örn : öncelik derecesi : acil , talep durum : işlemde parametreleri ile sorgu yaptığımda aynı özelliği taşıyan talep iki kere listeleniyor.

Bu talepleri benzersiz olarak listelemek için yardımcı olabilirseniz çok sevinirim.

Filtrele butonuna yazdığım kodlar aşağıdaki gibidir.

 

protected void BtnFiltrele_Click(object sender, EventArgs e)
{
SqlConnection baglanti = system.baglan();
try

{
DataSet Ds = new DataSet();

if (Session["Grup"] == "Yönetici")
{

if (CbBeklemede.Checked == true)
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where Durum='Beklemede'", baglanti);
//DataSet Ds = new DataSet();
Da.Fill(Ds);

RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (CbCozumonerildi.Checked == true)
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where Durum='Çözüm Önerildi'", baglanti);
// DataSet Ds = new DataSet();
Da.Fill(Ds);

RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (CbEkBilgi.Checked == true)
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where Durum='Ek Bilgi İstendi'", baglanti);
// DataSet Ds = new DataSet();
Da.Fill(Ds);

RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (CbGaranti.Checked == true)
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where Durum='Garantiye Gönderildi'", baglanti);
// DataSet Ds = new DataSet();
Da.Fill(Ds);

RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (Cbislemde.Checked == true)
{
SqlDataAdapter Da = new SqlDataAdapter("Select Distinct * From Talepler where Durum='İşlemde'", baglanti);
// DataSet Ds = new DataSet();
Da.Fill(Ds);

RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (CbKapali.Checked == true)
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where Durum='Kapalı'", baglanti);
// DataSet Ds = new DataSet();
Da.Fill(Ds);

RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (TxtTarih1.Text != "" && TxtTarih2.Text != "")
{
string KayitTarihi = TxtTarih1.Text;
string BitisTarihi = TxtTarih2.Text + 1;

SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where KTarih >='" + KayitTarihi + "' and BTarih <= '" + BitisTarihi + "'", baglanti);
Da.Fill(Ds);
RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (DrpDestekTipi.SelectedValue != "Seçiniz")
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where DTipi = '" + DrpDestekTipi.SelectedItem + "'", baglanti);
Da.Fill(Ds);
RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (DrpOncelik.SelectedValue != "Seçiniz")
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where ODerece = '" + DrpOncelik.SelectedItem + "'", baglanti);
Da.Fill(Ds);
RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (TxtTalepNo.Text != "")
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where Id='" + TxtTalepNo.Text + "'", baglanti);
Da.Fill(Ds);
RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (TxtAranan.Text != "")
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where Baslik Like '%" + TxtAranan.Text + "%' ", baglanti);
Da.Fill(Ds);
RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}

if (CbBeklemede.Checked == false && CbCozumonerildi.Checked == false && CbEkBilgi.Checked == false && CbGaranti.Checked == false && Cbislemde.Checked == false && CbKapali.Checked == false && TxtTarih1.Text == "" && TxtTarih2.Text == "" && DrpDestekTipi.SelectedValue == "Seçiniz" && DrpOncelik.SelectedValue == "Seçiniz" && TxtTalepNo.Text == "" && TxtAranan.Text == "")
{
RaporListele();
}
}
else
{

if (CbBeklemede.Checked == true)
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where KAdi='" + Session["KAdi"] + "' and Durum='Beklemede'", baglanti);
//DataSet Ds = new DataSet();
Da.Fill(Ds);

RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (CbCozumonerildi.Checked == true)
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where KAdi='" + Session["KAdi"] + "' and Durum='Çözüm Önerildi'", baglanti);
// DataSet Ds = new DataSet();
Da.Fill(Ds);

RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (CbEkBilgi.Checked == true)
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where KAdi='" + Session["KAdi"] + "' and Durum='Ek Bilgi İstendi'", baglanti);
// DataSet Ds = new DataSet();
Da.Fill(Ds);

RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (CbGaranti.Checked == true)
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where KAdi='" + Session["KAdi"] + "' and Durum='Garantiye Gönderildi'", baglanti);
// DataSet Ds = new DataSet();
Da.Fill(Ds);

RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (Cbislemde.Checked == true)
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where KAdi='" + Session["KAdi"] + "' and Durum='İşlemde'", baglanti);
// DataSet Ds = new DataSet();
Da.Fill(Ds);

RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (CbKapali.Checked == true)
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where KAdi='" + Session["KAdi"] + "' and Durum='Kapalı'", baglanti);
// DataSet Ds = new DataSet();
Da.Fill(Ds);

RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (TxtTarih1.Text != "" && TxtTarih2.Text != "")
{
string KayitTarihi = TxtTarih1.Text;
string BitisTarihi = TxtTarih2.Text + 1;

SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where KAdi='" + Session["KAdi"] + "' and KTarih >='" + KayitTarihi + "' and BTarih <= '" + BitisTarihi + "'", baglanti);
Da.Fill(Ds);
RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (DrpDestekTipi.SelectedValue != "Seçiniz")
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where KAdi='" + Session["KAdi"] + "' and DTipi = '" + DrpDestekTipi.SelectedItem + "'", baglanti);
Da.Fill(Ds);
RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (DrpOncelik.SelectedValue != "Seçiniz")
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where KAdi='" + Session["KAdi"] + "' and ODerece = '" + DrpOncelik.SelectedItem + "'", baglanti);
Da.Fill(Ds);
RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (TxtTalepNo.Text != "")
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where KAdi='" + Session["KAdi"] + "' and Id='" + TxtTalepNo.Text + "'", baglanti);
Da.Fill(Ds);
RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}
if (TxtAranan.Text != "")
{
SqlDataAdapter Da = new SqlDataAdapter("Select * From Talepler where KAdi='" + Session["KAdi"] + "' and Baslik Like '%" + TxtAranan.Text + "%' ", baglanti);
Da.Fill(Ds);
RptRaporlar.DataSource = Ds;
RptRaporlar.DataBind();
}

if (CbBeklemede.Checked == false && CbCozumonerildi.Checked == false && CbEkBilgi.Checked == false && CbGaranti.Checked == false && Cbislemde.Checked == false && CbKapali.Checked == false && TxtTarih1.Text == "" && TxtTarih2.Text == "" && DrpDestekTipi.SelectedValue == "Seçiniz" && DrpOncelik.SelectedValue == "Seçiniz" && TxtTalepNo.Text == "" && TxtAranan.Text == "")
{
RaporListele();
}
}
}
catch
{

}
finally
{
baglanti.Close();
baglanti.Dispose();
SqlConnection.ClearAllPools();

}
}

 
Gönderildi : 21/04/2014 14:20

(@MustafaPAT)
Gönderiler: 26
Eminent Member
 

Merhaba Aşağıdaki gibi yol izlersen daha sağlıklı bir çözüme ulaşırsın.

Her seferinde DB bağlantısı yapmana gerek kalmaz son ana kadar sorguyu oluşturursun ve sorguyu tamamladıktan sonra datasete gönderirsin.

İstersen order by group by gibi özellikler ile zenginleştirebilirsiniz  sorguya göndereceğiniz parametreleri DB sorgulamadan önce mutlaka formdan aldığınız tüm bilgileri sorguya işlediğinizden emin olun.

string sqlcommandstr = "Select * From Talepler where "

bool ilkparemetre = false;

if (CbBeklemede.Checked == true){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

 sqlcommandstr = + " Durum='Beklemede'";

 ilkparemetre = true;

}

if (CbCozumonerildi.Checked == true){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + " Durum='Çözüm Önerildi'";

ilkparemetre = true;

}

if (CbEkBilgi.Checked == true){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + " Durum='Ek Bilgi İstendi'";

ilkparemetre = true;

}

if (CbGaranti.Checked == true){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + " Durum='Garantiye Gönderildi'";

ilkparemetre = true;

}

if (Cbislemde.Checked == true){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + " Durum='İşlemde'";

ilkparemetre = true;

}

if (CbKapali.Checked == true){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + " Durum='Kapalı'";

ilkparemetre = true;

}

if (TxtTarih1.Text != "" && TxtTarih2.Text != ""){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + " KTarih >='" + KayitTarihi + "' and BTarih <= '" + BitisTarihi + "'";

ilkparemetre = true;

}

if (DrpDestekTipi.SelectedValue != "Seçiniz"){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + "DTipi = '" + DrpDestekTipi.SelectedItem + "'";

ilkparemetre = true;

}

SqlDataAdapter Da = new SqlDataAdapter(sqlcommandstr, baglanti);

Da.Fill(Ds);

RptRaporlar.DataSource = Ds;

RptRaporlar.DataBind(); 

 
Gönderildi : 22/04/2014 19:58

(@irfankocak)
Gönderiler: 32
Trusted Member
Konu başlatıcı
 

Merhaba Aşağıdaki gibi yol izlersen daha sağlıklı bir çözüme ulaşırsın.

Her seferinde DB bağlantısı yapmana gerek kalmaz son ana kadar sorguyu oluşturursun ve sorguyu tamamladıktan sonra datasete gönderirsin.

İstersen order by group by gibi özellikler ile zenginleştirebilirsiniz  sorguya göndereceğiniz parametreleri DB sorgulamadan önce mutlaka formdan aldığınız tüm bilgileri sorguya işlediğinizden emin olun.

string sqlcommandstr = "Select * From Talepler where "

bool ilkparemetre = false;

if (CbBeklemede.Checked == true){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

 sqlcommandstr = + " Durum='Beklemede'";

 ilkparemetre = true;

}

if (CbCozumonerildi.Checked == true){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + " Durum='Çözüm Önerildi'";

ilkparemetre = true;

}

if (CbEkBilgi.Checked == true){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + " Durum='Ek Bilgi İstendi'";

ilkparemetre = true;

}

if (CbGaranti.Checked == true){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + " Durum='Garantiye Gönderildi'";

ilkparemetre = true;

}

if (Cbislemde.Checked == true){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + " Durum='İşlemde'";

ilkparemetre = true;

}

if (CbKapali.Checked == true){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + " Durum='Kapalı'";

ilkparemetre = true;

}

if (TxtTarih1.Text != "" && TxtTarih2.Text != ""){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + " KTarih >='" + KayitTarihi + "' and BTarih <= '" + BitisTarihi + "'";

ilkparemetre = true;

}

if (DrpDestekTipi.SelectedValue != "Seçiniz"){

if(ilkparemetre){

sqlcommandstr = + " and ";

}

sqlcommandstr = + "DTipi = '" + DrpDestekTipi.SelectedItem + "'";

ilkparemetre = true;

}

SqlDataAdapter Da = new SqlDataAdapter(sqlcommandstr, baglanti);

Da.Fill(Ds);

RptRaporlar.DataSource = Ds;

RptRaporlar.DataBind(); 

 Yardımınız için çok teşekkür ederim şimdi sizin söylediğiniz şekilde deniyorum. 

 
Gönderildi : 24/04/2014 17:05

Paylaş: