Konuyu görüntüle
IUCODERS FORUM > Programlama > .NET > CheckBoxList'ten SQL IN ile Gridview'a Aktarım
Yazar
wardom


avatar
Kirklareli
admin
Kayıt: 12.11.2006
23.03.2011-09:29 #74063
Merhaba

Bir CheckBoxList'im var diyelim. S_TEKLIF tablomun içinde HESAP_NO (Primary Key) ve MUS_K_ISIM sütunları var. CheckBoxList'te C'ler listeleniyor.

Programatik olarak tanımladığım SQL'im var botunun click event'inde.

ve ben buraya yine programatik olarak CheckBoxList'te seçtiğim MUS_K_ISIM'lerin HESAP_NO'larını SQL'de IN kullanarak başka bir gridview'a aktarmak istiyorum.
ArrayList values = new ArrayList();
        for (int i = 0; i < CheckBoxList1.Items.Count; i++ )
        {
            if (CheckBoxList1.Items[i].Selected)
            { 
                values.Add(CheckBoxList1.Items[i].Value);
            }
        }

        strQuery = strQuery + " AND A.HESAP_NO IN (SELECT A.HESAP_NO FROM S_TEKLIF A WHERE A.MUS_K_ISIM IN (" + values + "))";


SQL'imi tanımladıktan sonra şöyle deniyorum fakat SQL IN kullanarak values dizisini bir türlü yerleştiremedim.

Bunun nasıl yapıldığını bilen var mı?





www.sonergonul.net





Yazar
wardom


avatar
Kirklareli
admin
Kayıt: 12.11.2006
23.03.2011-10:39 #74064
Add watch dediğimde strQuery'nin sonu

A.HESAP_NO IN (SELECT A.HESAP_NO FROM S_TEKLIF A WHERE A.MUS_K_ISIM IN (System.Collections.ArrayList))


olarak görünüyor.





www.sonergonul.net





Yazar
memetonder


avatar
BeSnI
Kayıt: 17.05.2007
23.03.2011-11:02 #74065
Çünkü sen direk ArrayList'in kendisini eklemişsin sorguya.
O ArrayList içine doldurdugun değerleri eklemen gerekiyor.






...









Yazar
wardom


avatar
Kirklareli
admin
Kayıt: 12.11.2006
23.03.2011-11:28 #74066
ArrayList'in içi ("Ahmet", "Mehmet", "Ali", "Veli") şeklinde olduğundan IN clause'ın içinde bu şekilde kullanılmıyor mu zaten?

Yani burada;

SELECT A.HESAP_NO FROM S_TEKLIF A WHERE A.MUS_K_ISIM IN ("Ahmet", "Mehmet", "Ali", "Veli") olmaz mı?





www.sonergonul.net





Yazar
memetonder


avatar
BeSnI
Kayıt: 17.05.2007
23.03.2011-11:35 #74067
Yok işte senin oraya eklediğin şey ArrayList'in içeriği değil direk kendisi. Onun içindeki value'ları eklemen lazım. kaldı ki arrayList kullanmana da gerek yok, direk bi String işini görür sanki.
for içinde arrayList'e ekleyeceğine. String'e append etsen değerleri,sonra o stringi query içine koyarsan istediğin şekilde olmus olur sanki.





...









Yazar
wardom


avatar
Kirklareli
admin
Kayıt: 12.11.2006
23.03.2011-11:55 #74068
stringe eklerim de şöyle olur ama o zaman.

string abc = "Ali, Veli, 49, 50"


gibi ama IN şu şekilde oluyor ya IN ("Ali", "Veli", "49", "50")

ben IN (+ abc +) diyemem o zaman. Değil mi?





www.sonergonul.net





Yazar
memetonder


avatar
BeSnI
Kayıt: 17.05.2007
23.03.2011-12:27 #74069

String values="";
for (int i = 0; i < CheckBoxList1.Items.Count; i++ )
{
if (CheckBoxList1.Items[i].Selected)
{
values=values+"'" +CheckBoxList1.Items[i].Value+"',";
}
}

values.TrimEnd(",");
Bunu yaptıktan sonra

values=" 'Ali','Ahmet','Ayşe' " şeklinde bir string elde edersin.

strQuery = strQuery + " AND A.HESAP_NO IN (SELECT A.HESAP_NO FROM S_TEKLIF A WHERE A.MUS_K_ISIM IN (" + values + "))";








...









Yazar
wardom


avatar
Kirklareli
admin
Kayıt: 12.11.2006
23.03.2011-12:35 #74070
memetonder yazdi
 

String values="";
for (int i = 0; i < CheckBoxList1.Items.Count; i++ )
{
if (CheckBoxList1.Items[i].Selected)
{
values=values+"'" +CheckBoxList1.Items[i].Value+"',";
}
}

values.TrimEnd(",");
Bunu yaptıktan sonra

values=" 'Ali','Ahmet','Ayşe' " şeklinde bir string elde edersin.

strQuery = strQuery + " AND A.HESAP_NO IN (SELECT A.HESAP_NO FROM S_TEKLIF A WHERE A.MUS_K_ISIM IN (" + values + "))";




aynen benim de şimdi geldi aklıma. şu "", '' ve "''" gibi noktalama hatalarını da hiç sevmiyorum.

Çok saol kanka





www.sonergonul.net





Yazar
memetonder


avatar
BeSnI
Kayıt: 17.05.2007
23.03.2011-12:39 #74071
Rica ederim,

Kolay gelsin wink





...









Yazar
greenrock


avatar
istanbul
Kayıt: 18.08.2008
24.03.2011-00:42 #74074
ArrayList in içinden object olarak döndüğü için hata veriyor olabilir.

List<string> generic kullanırsan sorun hallolur gibi.

Yada arkadaşın dediği gibi StringBuilder sınıfını kullanarak bir string oluşturarakda verebilirsin..





Yazar
barboonia


avatar
cennet kösesi
Kayıt: 09.10.2009
24.03.2011-12:34 #74077
memetonder yazdi
 


values+"'" +CheckBoxList1.Items[i].Value+"',";




yerine string.Format("{0}{1}",s,z); şeklinde yaparsanız daha iyi olur.

çünkü; a=a+b+c+d; denidiğinde c+d yi bi stringe atıyor sonra bu sitringe b yi birleştiriyor ki bunuda ayrı bir stringe tutuyor. sonra bu stringle a yı birleştiriyor. en sonunda bu stringi a ya atıyor.

kaç tane string oldu. biggrin

ya da System.Text.StringBuilder sınıfını kullanabilirsiniz.





süphesiz ki Antalya dünyanin en güzel sehridir...
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb