Gönderen Konu: Filtreleme sonucu gelmiyor.  (Okunma sayısı 173 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı smtylmz

  • Üye
  • ***
  • İleti: 30
  • Rep: +1/-0
  • Cinsiyet: Bay
    • smtylmz's world
Filtreleme sonucu gelmiyor.
« : 27 Ocak 2012 03:24:35 »
Merhaba arkadaslar bir proje üzerinde calısmaktayım.

resimde görünen programda yukarıdaki checkboxların durumuna göre filtre yapmak istiyorum. mesela isme göre ara işaretliyse sadece isme göre  arama yapacak  isme göre ara ve tarihe göre ikisi birden işaretliyse 2 sine göre arama yapacak (burada datetimepicker2 kullanıyorum) isme göre ara ve tarihler arasında ara işaretliyse yazılan isime göre ve seçili 2 tarih arasından(datetimepicker2 ve datetimepicker3) listeleme yapacak. bunun için mantıklı olan kodları yazdım ama sonuc vermiyor sadece isme göre listeleme düzgün calısıyor. bunu nasıl düzeltebilirim yardım ederseniz sevinirim yazdıgım kod aşagıdadır.

Kod: (delphi) [Seç]
procedure TForm2.Button3Click(Sender: TObject);
var
tariha:string;
tarihb:string;
begin
tariha:=FormatDateTime('#yyyy-mm-dd hh.nn.ss#', datetimepicker2.Date) ;
tarihb:=FormatDateTime('#yyyy-mm-dd hh.nn.ss#', datetimepicker3.Date) ;
if checkbox1.Checked=true and (CheckBox2.Checked=false) and (checkbox3.Checked=false) then begin
Adoquery1.close;
Adoquery1.sql.clear;
Adoquery1.SQL.Add('select * from gelenler where isim like ' + QuotedStr('%' + Edit1.Text+ '%'));
Adoquery1.open
end
else if (checkbox1.Checked=true) and (Checkbox2.Checked=true) and (checkbox3.Checked=false) then
begin
Adoquery1.close;
Adoquery1.sql.clear;
Adoquery1.SQL.Add('select * from gelenler where isim  = ' + QuotedStr('%' + Edit1.Text+ '%')+'and'+' tarih ='+tariha+'');
Adoquery1.open;
end
else if(CheckBox1.Checked=true) and (checkbox3.Checked=true) then begin
Adoquery1.SQL.Add('select * from gelenler where isim  like ' + QuotedStr('%' + Edit1.Text+ '%')+'and'+' tarih  between='+tariha+'and'+'+tarihb+)');

end
else if(CheckBox2.Checked=true) then begin
adoquery1.Close;
adoquery1.sql.Clear;
  adoquery1.SQL.Add('select * from gelenler where tarih like '+quotedstr(datetostr(datetimepicker2.Date))+' ');
ADOQuery1.Open;
end
else if(CheckBox3.Checked=true) then begin
adoquery1.Close;
adoquery1.sql.Clear;
ADOQuery1.SQL.Add('select * from gelenler where tarih between '+tariha+' and '+tarihb+'');
ADOQuery1.Open;
end
else begin

end;
end;
« Son Düzenleme: 27 Ocak 2012 03:27:01 Gönderen: smtylmz »
Aynası iştir kişinin lafa bakılmaz.

Çevrimdışı tawer1

  • Kıdemli Üye
  • *****
  • İleti: 239
  • Rep: +0/-0
  • Cinsiyet: Bay
Ynt: Filtreleme sonucu gelmiyor.
« Yanıtla #1 : 27 Ocak 2012 09:24:19 »
bak şimdi sql komutlarında ' ' işaretini kullanman lazım bunu zaten biliyorsun..... ilk sql komutunda derlemedeki sql
select * from gelenler where isim like '%deneme%'
bu dogru bır komut diğerlerinde hataların var şartlarda kulladıkların add komutu içersinde quoted kullanmaz isen
"'+edit1.text+'" şeklinde kullan.Sql komutlarındaki tırnaklara cok dıkkat etmelısın
Seo yapılandırma servisi

Çevrimdışı sheshman

  • Kıdemli Üye
  • *****
  • İleti: 424
  • Rep: +6/-0
  • Cinsiyet: Bay
Ynt: Filtreleme sonucu gelmiyor.
« Yanıtla #2 : 27 Ocak 2012 10:03:46 »
bak şimdi sql komutlarında ' ' işaretini kullanman lazım bunu zaten biliyorsun..... ilk sql komutunda derlemedeki sql
select * from gelenler where isim like '%deneme%'
bu dogru bır komut diğerlerinde hataların var şartlarda kulladıkların add komutu içersinde quoted kullanmaz isen
"'+edit1.text+'" şeklinde kullan.Sql komutlarındaki tırnaklara cok dıkkat etmelısın

yavru ceylan o kodların çoğu benim zaten :D hepsi çalışan kodlar ama bakıcam eşşek seniiiii :)
Dünya sizden nefret ederse sizden önce benden nefret etmiş olduğunu bilin. Dünyadan olsaydınız dünya kendisine ait olanı severdi.

Çevrimdışı tawer1

  • Kıdemli Üye
  • *****
  • İleti: 239
  • Rep: +0/-0
  • Cinsiyet: Bay
Ynt: Filtreleme sonucu gelmiyor.
« Yanıtla #3 : 27 Ocak 2012 10:05:43 »
:D:D yaaa bırak yaaaaaa eksik yazmıssın çocuk kıvranıo burda :D
Seo yapılandırma servisi

Çevrimdışı sheshman

  • Kıdemli Üye
  • *****
  • İleti: 424
  • Rep: +6/-0
  • Cinsiyet: Bay
Ynt: Filtreleme sonucu gelmiyor.
« Yanıtla #4 : 27 Ocak 2012 10:27:22 »
senin hayat sigortan varmı :D
Dünya sizden nefret ederse sizden önce benden nefret etmiş olduğunu bilin. Dünyadan olsaydınız dünya kendisine ait olanı severdi.

Çevrimdışı sheshman

  • Kıdemli Üye
  • *****
  • İleti: 424
  • Rep: +6/-0
  • Cinsiyet: Bay
Ynt: Filtreleme sonucu gelmiyor.
« Yanıtla #5 : 27 Ocak 2012 10:32:13 »
add olayında şöyle bir durum vardı, db access bir şekilde artık windowstan mı yada başka bir sebepten mi bilmiyorum quotedstr yapmadıkça datayı kaydetmiyordu ondan o şekilde kullandık. ben sametle konuşurum zaten bakıyım problem neymiş, çözümüde yazarız buraya :D
Dünya sizden nefret ederse sizden önce benden nefret etmiş olduğunu bilin. Dünyadan olsaydınız dünya kendisine ait olanı severdi.

Çevrimdışı tawer1

  • Kıdemli Üye
  • *****
  • İleti: 239
  • Rep: +0/-0
  • Cinsiyet: Bay
Ynt: Filtreleme sonucu gelmiyor.
« Yanıtla #6 : 27 Ocak 2012 11:23:53 »
şirket sınırları içersinde yapta iş kazası diye para alayım bari :D
Seo yapılandırma servisi

Çevrimdışı smtylmz

  • Üye
  • ***
  • İleti: 30
  • Rep: +1/-0
  • Cinsiyet: Bay
    • smtylmz's world
Ynt: Filtreleme sonucu gelmiyor.
« Yanıtla #7 : 27 Ocak 2012 22:10:10 »
tekrar merhaba . bu sorunumu radiogroupla cozdum ama halen isim alanı ve tarihler arası sorgu yapamıyorum

Kod: (sql) [Seç]
('select * from gelenler where isim like '+quotedstr('%'+Edit1.Text+'%'))+' AND tarih between (select * from gelenler where tarih between '+QuotedStr(datetostr(datetimepicker2.Date))+' AND '+QuotedStr(datetostr(datetimepicker3.Date)))+'
yazdıgım kod bu yardımcı olursanız sevinirim.
Aynası iştir kişinin lafa bakılmaz.

Çevrimdışı smtylmz

  • Üye
  • ***
  • İleti: 30
  • Rep: +1/-0
  • Cinsiyet: Bay
    • smtylmz's world
Ynt: Filtreleme sonucu gelmiyor.
« Yanıtla #8 : 27 Ocak 2012 23:44:04 »
Çözdüm nihayet:)

kodlar su sekilde
Kod: (delphi) [Seç]
procedure TForm2.Button3Click(Sender: TObject);
var
tariha:string;
tarihb:string;
ad:string;
begin
ad:=edit1.Text;
tariha:=FormatDateTime('#yyyy-mm-dd hh.nn.ss#', datetimepicker2.Date) ;
tarihb:=FormatDateTime('#yyyy-mm-dd hh.nn.ss#', datetimepicker3.Date) ;
case radiogroup1.itemindex of
0:begin;
Adoquery1.close;
Adoquery1.sql.clear;
Adoquery1.SQL.Add('select * from gelenler where isim like ' + QuotedStr('%' + Edit1.Text+ '%'));
Adoquery1.open
end;
1:begin;
Adoquery1.close;
Adoquery1.sql.clear;
adoquery1.SQL.Add('select * from gelenler where tarih like '+tariha+' ');
Adoquery1.open
end;
2:begin;
Adoquery1.close;
Adoquery1.sql.clear;
adoquery1.SQL.Add('select * from gelenler where tarih between '+tariha+' and '+tarihb+'');
Adoquery1.open
end;
3:begin;
Adoquery1.close;
Adoquery1.sql.clear;
ADOQuery1.SQL.Add('select * from gelenler where tarih like '+QuotedStr(datetostr(datetimepicker2.Date))+' AND isim like '+quotedstr('%'+Edit1.Text+'%'));
Adoquery1.open;
end;
4:begin;
Adoquery1.close;
Adoquery1.sql.clear;
adoquery1.SQL.Add('select * from gelenler where isim like '+quotedstr(ad)+'  AND tarih between '+tariha+' AND '+tarihb+'');
Adoquery1.open;
end;
end;
end;
Aynası iştir kişinin lafa bakılmaz.

Çevrimdışı sheshman

  • Kıdemli Üye
  • *****
  • İleti: 424
  • Rep: +6/-0
  • Cinsiyet: Bay
Ynt: Filtreleme sonucu gelmiyor.
« Yanıtla #9 : 27 Ocak 2012 23:54:37 »
kardeşim benim işten bir fırsat bulup el atamadım kusura bakma :( bak yine laf sokasım tuttu yahu bu kadar uzatmaya gerek yoktu :D :p
« Son Düzenleme: 27 Ocak 2012 23:55:54 Gönderen: sheshman »
Dünya sizden nefret ederse sizden önce benden nefret etmiş olduğunu bilin. Dünyadan olsaydınız dünya kendisine ait olanı severdi.

Çevrimdışı smtylmz

  • Üye
  • ***
  • İleti: 30
  • Rep: +1/-0
  • Cinsiyet: Bay
    • smtylmz's world
Ynt: Filtreleme sonucu gelmiyor.
« Yanıtla #10 : 28 Ocak 2012 02:32:08 »
kardeşim benim işten bir fırsat bulup el atamadım kusura bakma :( bak yine laf sokasım tuttu yahu bu kadar uzatmaya gerek yoktu :D :p

:)) olsun olsun kendi açımdan daha iyi oldu şimdi kontrol de koydum biraz önce yazdıgım kod veri geri dönmezse hata veriyordu bende düzelttim:)

Kod: (delphi) [Seç]
procedure TForm2.Button3Click(Sender: TObject);
var
tariha:string;
tarihb:string;
ad:string;
begin
ad:=edit1.Text;
tariha:=FormatDateTime('#yyyy-mm-dd hh.nn.ss#', datetimepicker2.Date) ;
tarihb:=FormatDateTime('#yyyy-mm-dd hh.nn.ss#', datetimepicker3.Date) ;
case radiogroup1.itemindex of
0:begin;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from gidenler where isim like ' + QuotedStr('%' +Edit1.Text+ '%'));
adoquery1.Open;
if adoquery1.RecordCount=0 then
showmessage('Aradığınız Kriterlerde Bir Kayıda Rastlanmadı');
if adoquery1.RecordCount>0 then begin
Adoquery2.close;
Adoquery2.sql.clear;
Adoquery2.SQL.Add('select sum(tutar) from gelenler where isim like ' +quotedstr(Edit1.Text)+'');
Adoquery2.open;
edit5.Text:=ADOQuery2.Fields[0].AsString;


edit5.Text:=FormatCurr('#,##0.00', strtoint(edit5.Text));
                                      end;

end;
1:begin;
tariha:=FormatDateTime('#yyyy-mm-dd hh.nn.ss#', datetimepicker2.Date) ;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from gelenler where tarih like '+quotedstr(datetostr(datetimepicker2.Date))+' ');
adoquery1.Open;
if adoquery1.RecordCount=0 then
showmessage('Aradığınız Kriterlerde Bir Kayıda Rastlanmadı');
if adoquery1.RecordCount>0 then begin
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select sum(tutar) from gelenler where tarih like '+quotedstr(datetostr(datetimepicker2.Date))+' ');
adoquery2.Open;
edit5.Text:=ADOQuery2.Fields[0].AsString;


edit5.Text:=FormatCurr('#,##0.00', strtoint(edit5.Text));
                                                  end;
                                    end;

2:begin;
Adoquery1.close;
Adoquery1.sql.clear;
adoquery1.SQL.Add('select * from gelenler where tarih between '+tariha+' and '+tarihb+'');
Adoquery1.open;

if adoquery1.RecordCount=0 then
showmessage('Aradığınız Kriterlerde Bir Kayıda Rastlanmadı');
if (adoquery1.RecordCount>0) then  begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select sum(tutar) from gelenler where tarih between '+tariha+' and '+tarihb+'');
ADOQuery2.Open;
edit5.Text:=ADOQuery2.Fields[0].AsString;

edit5.Text:=FormatCurr('#,##0.00', strtoint(edit5.Text));
end;                             end;
3:begin;
Adoquery1.close;
Adoquery1.sql.clear;
ADOQuery1.SQL.Add('select * from gelenler where tarih like '+QuotedStr(datetostr(datetimepicker2.Date))+' AND isim like '+quotedstr('%'+Edit1.Text+'%'));
Adoquery1.open;
if adoquery1.RecordCount=0 then
showmessage('Aradığınız Kriterlerde Bir Kayıda Rastlanmadı');
if adoquery1.RecordCount>0 then begin
ADOQuery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select sum(tutar) from gelenler where tarih like '+QuotedStr(datetostr(datetimepicker2.Date))+' AND isim like '+quotedstr('%'+Edit1.Text+'%'));
adoquery2.Open;
edit5.Text:=ADOQuery2.Fields[0].AsString;

edit5.Text:=FormatCurr('#,##0.00', strtoint(edit5.Text));
end;                         end;
4:begin;
Adoquery1.close;
Adoquery1.sql.clear;
adoquery1.SQL.Add('select * from gelenler where isim like '+quotedstr(Edit1.Text)+'  AND tarih between '+tariha+' AND '+tarihb+'');
Adoquery1.open;
if adoquery1.RecordCount=0 then
showmessage('Aradığınız Kriterlerde Bir Kayıda Rastlanmadı');
if (adoquery1.RecordCount>0) then  begin
ADOQuery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select sum(tutar) from gelenler where isim like '+quotedstr(Edit1.Text)+'  AND tarih between '+QuotedStr(datetostr(datetimepicker2.Date))+' AND '+QuotedStr(datetostr(datetimepicker3.Date)+''));
adoquery2.Open;

edit5.Text:=FormatCurr('#,##0.00', strtoint(edit5.Text));

end;
end;

          end;end;

olay budur no error no cry:)
« Son Düzenleme: 28 Ocak 2012 02:32:59 Gönderen: smtylmz »
Aynası iştir kişinin lafa bakılmaz.