SQL DateTimePicker sorunu..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
meric
Üye
Mesajlar: 9
Kayıt: 15 Şub 2004 03:00

SQL DateTimePicker sorunu..

Mesaj gönderen meric »

Selam,
Aşağıdaki gibi bir kodum var. tarih bilgilerini elimle yazdığımda kod çalışıyor ama datetimepicker dan alamıyorum. Neyi gözden kaçırıyorum acaba?



procedure TForm3.BitBtn1Click(Sender: TObject);
var
tarihilk,tarihson : Tdate;
begin
tarihilk :=form2.DateTimePicker1.Date;
tarihson :=form2.DateTimePİcker2.Date;
form3.Query1.Close;
form3.Query1.SQL.Clear;
form3.Query1.SQL.Add ('SELECT Field1, TARIH, Field3');
form3.Query1.SQL.Add ('FROM Data.DB');
form3.Query1.SQL.Add ('WHERE (tarih >= "tarihilk") and
(tarih <= "tarihson")');
form3.Query1.SQL.Add ('order by tarih desc');
form3.Query1.open;
end;
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Genel olarak runtime'da oluşturulan bir SQL cümlesinin hata vermesi durumunda ilk yapılacak şey Query.Open veya Query.ExecSQLsatirlarindan hemen önce ya showmessage(Query1.SQL.text) ile ya da watch yöntemi ile oluşturulan sql cümlesine bakmaktır. Gözel hata görülemiyorsa bu cümle yani caliştirilmak üzere olan bu cümle kopyalanıp SQL explorer gibi bir araç üzerinden doğrudan çalıştırılarak hata burada bulunmaya çalışılmalıdır. Tarih alanlarındaki format farkliliklarindan dolayi kullandığınız yöntem ile bu tür hatalar olması muhtemeldir. Bunun yerine parametre kullanmayi deneyin.

Yani.

Kod: Tümünü seç

form3.Query1.Close; 
form3.Query1.SQL.Clear; 
form3.Query1.SQL.Add ('SELECT Field1, TARIH, Field3'); 
form3.Query1.SQL.Add ('FROM Data.DB'); 
form3.Query1.SQL.Add ('WHERE (tarih >= :tarihilk) and (tarih <= :tarihson)'); 
form3.Query1.ParamByName('tarihilk').AsDate:=form2.DateTimePicker1.Date;
form3.Query1.ParamByName('tarihson').AsDate:=form2.DateTimePicker2.Date;
gibi.....

Kolay gelsin...
meric
Üye
Mesajlar: 9
Kayıt: 15 Şub 2004 03:00

Mesaj gönderen meric »

İlginiz için çok teşekkür ederim.

Gece sabaha kadar uğraştım ve en sonunda konuyu şu şekilde çözdüm.
Çalışıyor.

procedure TForm3.BitBtn1Click(Sender: TObject);
var
tarihilk, tarihson : string;

begin
tarihilk :=(formatdatetime('mm', form2.DateTimePicker1.Date) + '/' +
formatdatetime('dd', form2.DateTimePicker1.Date) + '/' +
formatdatetime('yyyy', form2.DateTimePicker1.Date));
tarihson :=(formatdatetime('mm', form2.DateTimePicker2.Date) + '/' +
formatdatetime('dd', form2.DateTimePicker2.Date) + '/' +
formatdatetime('yyyy', form2.DateTimePicker2.Date));
form3.Query1.Close;
form3.Query1.SQL.Clear;
form3.Query1.SQL.Add ('SELECT Field1, TARIH, Field3');
form3.Query1.SQL.Add ('FROM Data.DB');
form3.Query1.SQL.Add ('WHERE tarih between ' + quotedstr(tarihilk) + ' and ' + quotedstr(tarihson));
form3.Query1.SQL.Add ('order by tarih desc');
form3.Query1.open;


end;
koko134
Üye
Mesajlar: 16
Kayıt: 17 Ağu 2004 04:15
Konum: ist

Mesaj gönderen koko134 »

Kod: Tümünü seç

where
      case
            when State = 'C' then case
                  when captdate IS NOT NULL then captdate
                  else DATEADD(hour, DATEPART(hour, Timecapt),
                        DATEADD(mi, DATEPART(mi, Timecapt),
                              DATEADD(ss, DATEPART(ss, Timecapt), Datecapt)
                        )
                  )
                  end
            when State IN ('CR') then case
                  when captrevdate IS NOT NULL then captrevdate
                  else DATEADD(hour, DATEPART(hour, Timecaptreverse),
                        DATEADD(mi, DATEPART(mi, Timecaptreverse),
                              DATEADD(ss, DATEPART(ss, Timecaptreverse),
Datecapt)
                        )
                  )
                  end
            when State IN ('RE') then case
                  when retdate IS NOT NULL then retdate
                  else DATEADD(hour, DATEPART(hour, Timereturn),
                        DATEADD(mi, DATEPART(mi, Timereturn),
                              DATEADD(ss, DATEPART(ss, Timereturn),
Datereturn)
                        )
                  )
                  end
            end
      between ? and ?

string editore girdim şimdi parametremi sql e nasıl baglıcam die sorsam ??
tskr ederim...
Cevapla