Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

ÖNEMLİ AÇIKLAMA: MUTLAKA OKUYUNUZ!

Gönderen Konu: DateTimePicker ve ComboBox ile sorgulama, ACİLLLL  (Okunma sayısı 2137 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı void_main

  • Üye
  • ***
  • İleti: 34
  • Rep: +0/-0
DateTimePicker ve ComboBox ile sorgulama, ACİLLLL
« : 23 Şubat 2010 11:32:08 »
Mrb arkadaşlar;
Delphi 2009 ve MySql 5.0 kullanıyorum...
Formum üzerinde bir tane DateTimePicker iki tane de ComboBox var. Yapmak istediğim DateTP dan bir tarih seçilecek daha sonra CBox lardan saat. Amaç seçilen tarih ve seçilen saat aralıklarındaki verileri getirme. Yani DateTP dan 23.02.2010 u CBox lardan ise 11:00 ve 12:00 seçeneklerini seçtim. Bana bu tarihte, bu saat aralığındaki verileri getirecek kodlar lazım. MySql de

SELECT * FROM tablo_ismi WHERE DATE(zaman)
BETWEEN '2010.02.23' AND '2010.02.23'
AND DATE_FORMAT(zaman, '%H') BETWEEN 11 AND 17;

(zaman) : tarih kayıtlarını içinde tutan kolon ismi

bu kodu MySql derleyicisinde yazdığımda bana o tarihteki saat 11 ve 17 arasındaki verileri getiriyor. Ama ben Delphi'de DBGrid içinde göstermek istiyorum... ve bu kodu Delphi'de yazdığımda bana birçok hata veriyor.

Query1.SQL.Clear;
Query1.SQL.Add(yukardaki kod bloğu)

Ama
Query1.SQL.Clear;
Query1.SQL.Text := ('select * from tablo_ismi')
Query1.Open;

dediğim zaman verileri sorgusuz sualsiz hepsini DBGrid'e getiriyor...

Umarım derdimi anlatabildim, birkaç gün içinde çözmem lazım yardımlarınızı bekliyorum...



Çevrimdışı barutali

  • Administrator
  • *****
  • İleti: 2.117
  • Rep: +51/-0
  • Cinsiyet: Bay
  • Falan filan ...
Ynt: DateTimePicker ve ComboBox ile sorgulama, ACİLLLL
« Yanıtla #1 : 24 Şubat 2010 03:04:09 »
Kod: Delphi
  1.  SQL.Add(
  2.         'SELECT * FROM tablo_ismi WHERE DATE(zaman) '+
  3.         'BETWEEN ''2010.02.23'' AND ''2010.02.23'' '+
  4.         'AND DATE_FORMAT(zaman, ''%H'') BETWEEN 11 AND 17 '
  5.         );


bu şekilde denermisin ... tırnaklarda bi sorun olabilir.



Amatör Küme Programcı

Çevrimdışı void_main

  • Üye
  • ***
  • İleti: 34
  • Rep: +0/-0
Ynt: DateTimePicker ve ComboBox ile sorgulama, ACİLLLL
« Yanıtla #2 : 24 Şubat 2010 10:25:10 »
burda da birden fazla hata verdi, sanırım sayısal değerler Date tipinde olduğu için onları DateToStr yapmam lazım öyle deneyeceğim birde....

Çevrimdışı void_main

  • Üye
  • ***
  • İleti: 34
  • Rep: +0/-0
Ynt: DateTimePicker ve ComboBox ile sorgulama, ACİLLLL
« Yanıtla #3 : 24 Şubat 2010 14:35:59 »
sorgu ifademi şöyle değiştirdim
var
tarih1 :TDate;
saat1, saat2 : String;
begin
 ZConnection1.Connected := True;
 tarih1 :=(DateTimePicker1.DateTime);
 saat1 :=(ComboBox1.Items[ComboBox1.ItemIndex]);
 saat2 :=(ComboBox2.Items[ComboBox2.ItemIndex]);
  begin
    ZQuery1.SQL.Clear;
    ZQuery1.SQL.Text := (' SELECT * FROM veri_tarih_saat');
    ZQuery1.SQL.Text := (' WHERE DATE(zaman) BETWEEN '+DateToStr(tarih1)+' AND '+DateToStr(tarih1)+' ');
    ZQuery1.SQL.Text := (' AND WHERE DATE_FORMAT(zaman) BETWEEN '+ saat1 +' AND '+ saat2 +' ' );
    ZQuery1.Open;

ve şu hatayı verdi

Project zaman_graph.exe raised exception class EZDatabaseError with message 'Incorrect token followed by ":"'.
EZDatabaseError class'ındaki bir hatayı gösteriyor ama anlayamadım nerde ve tırnak işaretlerini kastediyor, bütün tırnak işaretlerini kontrol ettim fazlası yada eksiği yok farkındaysanız  ":"' sol tarafta iki sağ tarafta 3 tane tırnak işareti var, halen çözebilmiş değilim...

Çevrimdışı muratboy31

  • Kıdemli Üye
  • *****
  • İleti: 115
  • Rep: +0/-0
Ynt: DateTimePicker ve ComboBox ile sorgulama, ACİLLLL
« Yanıtla #4 : 24 Şubat 2010 19:53:10 »
birde böyle dene,

Kod: Delphi
  1. var
  2. tarih1 :TDate;
  3. saat1, saat2 : TTime;
  4. begin
  5.  ZConnection1.Connected := True;
  6.  tarih1 :=(DateTimePicker1.DateTime);
  7.  saat1 :=strtotime(ComboBox1.Items[ComboBox1.ItemIndex]);
  8.  saat2 :=strtotime(ComboBox2.Items[ComboBox2.ItemIndex]);
  9.   begin
  10.     ZQuery1.SQL.Clear;
  11.     ZQuery1.SQL.Text := (' SELECT * FROM veri_tarih_saat');
  12.     ZQuery1.SQL.Text := (' WHERE DATE(zaman) BETWEEN '+DateToStr(tarih1)+' AND '+DateToStr(tarih1)+' ');
  13.     ZQuery1.SQL.Text := (' AND WHERE DATE_FORMAT(zaman) BETWEEN '+ saat1 +' AND '+ saat2 +' ' );
  14.     ZQuery1.Open;

Çevrimdışı void_main

  • Üye
  • ***
  • İleti: 34
  • Rep: +0/-0
Ynt: DateTimePicker ve ComboBox ile sorgulama, ACİLLLL
« Yanıtla #5 : 25 Şubat 2010 09:36:14 »
Yine aynı hatayı verdi :
Project zaman_graph.exe raised exception class EZDatabaseError with message 'Incorrect token followed by ":"'.

Çevrimdışı muratboy31

  • Kıdemli Üye
  • *****
  • İleti: 115
  • Rep: +0/-0
Ynt: DateTimePicker ve ComboBox ile sorgulama, ACİLLLL
« Yanıtla #6 : 25 Şubat 2010 13:36:49 »
combobox ta nasıl bir text varki ? manuel mi giriyorsun yoksa sen önceden listemi yapmışsın ?

Çevrimdışı void_main

  • Üye
  • ***
  • İleti: 34
  • Rep: +0/-0
Ynt: DateTimePicker ve ComboBox ile sorgulama, ACİLLLL
« Yanıtla #7 : 25 Şubat 2010 14:10:05 »
kodlama sırasında Combobox'lara değeri elle girdim

00:00:00
01:00:00
02:00:00.....
22:00:00
23:00:00 gibisinden

Çevrimdışı muratboy31

  • Kıdemli Üye
  • *****
  • İleti: 115
  • Rep: +0/-0
Ynt: DateTimePicker ve ComboBox ile sorgulama, ACİLLLL
« Yanıtla #8 : 25 Şubat 2010 15:36:34 »
önce böyle dene ;

Kod: Delphi
  1. var
  2. tarih1 :TDate;
  3. saat1, saat2 : TTime;
  4. begin
  5.  ZConnection1.Connected := True;
  6.  tarih1 :=(DateTimePicker1.DateTime);
  7.  saat1 :=strtotime(ComboBox1.Text);
  8.  saat2 :=strtotime(ComboBox2.Text);
  9.   begin
  10.     ZQuery1.SQL.Clear;
  11.     ZQuery1.SQL.Text := (' SELECT * FROM veri_tarih_saat');
  12.     ZQuery1.SQL.Text := (' WHERE DATE(zaman) BETWEEN '+DateToStr(tarih1)+' AND '+DateToStr(tarih1)+' ');
  13.     ZQuery1.SQL.Text := (' AND WHERE DATE_FORMAT(zaman) BETWEEN '+ saat1 +' AND '+ saat2 +' ' );
  14.     ZQuery1.Open;

olmazsa bide böyle dene;

Kod: Delphi
  1. var
  2. tarih1 :TDate;
  3. saat1, saat2 : TTime;
  4. begin
  5.  ZConnection1.Connected := True;
  6.  tarih1 :=(DateTimePicker1.DateTime);
  7.  saat1 :=ComboBox1.Text;
  8.  saat2 :=ComboBox2.Text;
  9.   begin
  10.     ZQuery1.SQL.Clear;
  11.     ZQuery1.SQL.Text := (' SELECT * FROM veri_tarih_saat');
  12.     ZQuery1.SQL.Text := (' WHERE DATE(zaman) BETWEEN '+DateToStr(tarih1)+' AND '+DateToStr(tarih1)+' ');
  13.     ZQuery1.SQL.Text := (' AND WHERE DATE_FORMAT(zaman) BETWEEN '+ saat1 +' AND '+ saat2 +' ' );
  14.     ZQuery1.Open;

Çevrimdışı void_main

  • Üye
  • ***
  • İleti: 34
  • Rep: +0/-0
Ynt: DateTimePicker ve ComboBox ile sorgulama, ACİLLLL
« Yanıtla #9 : 05 Mart 2010 17:09:28 »
arkadaşlar bu problemi İsmail Kocacan arkadaşımın yardımı sayesinde şöyle çözdük:
procedure TForm1.Button1Click(Sender: TObject); //Geçmişi Göster Butonu
var
tarih, saat1,
saat2 ,YilAyGun, veri :String;
begin
  tarih :=DateToStr(DateTimePicker1.DateTime);
//mySQL' Tarih Formatında Parselleme işlemi (sonuç:2010-02-24)
  YilAyGun := AnsiRightStr(tarih,4) +'-'+ AnsiMidStr(tarih,4,2) +'-'+ AnsiLeftStr(tarih,2);
  saat1 := ComboBox1.Items[ComboBox1.ItemIndex];
  saat2 := ComboBox2.Items[ComboBox2.ItemIndex];
    YilAyGun := ''''+YilAyGun+'''';
    saat1 := ''''+saat1+'''';
    saat2 := ''''+saat2+'''';

    //bağlantı için
    ZQuery1.SQL.Text := 'SELECT veri, DATE(zaman) as Tarih,Time(zaman) as Saat from veri_tarih_saat WHERE DATE(zaman) ='
    +YilAyGun+ 'AND Time(zaman) BETWEEN' +saat1+ 'AND' +saat2+ '' ;
    ZQuery1.Open;

uses kısmına StrUtils kütüphanesini eklemeyi unutmayın