tarihe göre sorgulama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

merhaba
1- like gibi komutlardan sonraki ifadeler sql kodunda ' ' işaretleri arasında olması lazım. delphide sql cümlesi atarken ifadeleri tırnak işartei almak için ifadeyi quotedstr() içinde yazıyoruz. Olayı şöyle deneyebilirsiniz.

Kod: Tümünü seç

showmessage(quotedstr('merhaba'));
2- query1.sql.close; hata vermesi normal. query1.close; olmalı. yanlış yazmışım :)

3- kendi bilgisayarımdayım ve oalyı inceleme şansı buldum. veritabanı ( firebird ) tarih alanlarını aralarında - işareti olacak şekilde tutuyor.

4- firebird tarih alanını yyyy-aa-gg olarak tutuyor.

Kod: Tümünü seç

query1.close;
query1.sql.clear;
query1.sql.add('select * from tel where dtar like '+quotedstr('%'+  copy(datetostr(date),4,2) +'-'+copy(datetostr(date),1,2)));
query1.open;
bu kodu kendi programımda denedim. yılın aynı günü kesilmiş faturaları veriyor. yani
03.06.2006
03.06.2005
03.06.2004 gibi.
kolay gelsin.
boncapelo
Üye
Mesajlar: 49
Kayıt: 01 Tem 2005 02:28
Konum: Bursa
İletişim:

Mesaj gönderen boncapelo »

hocam tekrar selam vallahi kafayı yiyecem ne yaptıysam olmuyor şunu birde paradox da deneyebilirmisiniz hocam...sorun nerede anlamadım paradox artık iyice sıkmaya başladı beni yaaa.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

ben paradox kullanmayalı 3 yıl oluyor. ne nasıl yapılıyor hatırlamıyorum bile. ama bilenler varsa yardımcı olsunlar.
boncapelo
Üye
Mesajlar: 49
Kayıt: 01 Tem 2005 02:28
Konum: Bursa
İletişim:

Mesaj gönderen boncapelo »

Nitrokonat hocam çok teşekkürler ilginden dolayı...Kod firebird de canavar gibi çalışıyor...Böylece bende firebird e geçmiş bulunuyorum.Lazanya kardeş sende hiç durma geç hemen firebird e hiç durma hemde....
Tekrar Herkese Çok Teşekkür Özellikle nitrokonat'a...Kolay Gelsin
Saygılar...
lazanya
Üye
Mesajlar: 23
Kayıt: 13 Haz 2003 12:34
Konum: trabzon
İletişim:

Mesaj gönderen lazanya »

firebird e geçip dert almayayım. hadi getik diyelim. Databse seçimi, databse yaratma vb. işler aynı şekildemi yapılıyor.
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Bir ara sizinki gibi uzun mesajlı bir tarih sorunu daha vardı. Lokal sql deki EXTRACT ile bir çözüm önermiştim.
ofenX yazdı:Merhaba,

Naile Hanım'ın dediği gibi bu pilav çok su çekti.

Şimdi bir an için her şeyi unutun.
1 paradadoks tablosunu bde ile ve query ile kullanıyorsunuz.
aşağıdaki tarihlerden

Kod: Tümünü seç

kno   tarih
----    ------
1        25.01.2006
2        01.03.2006
3        15.03.2006
4        27.03.2006
5        28.03.2006
6        01.04.2006
7        31.10.2006
8        01.03.2007
günün tarihi ne olursa olsun. 2006 nın 3.ayında bu sorguyu kullandığımda bana 2,3,4,5 kayıt nolu tarihleri göstersin diyorsanız. Sizin istediğiniz olacaktır.
Bir paradadoks dosyasına yukarıdileri girip. Aşağıdaki sorguyu kullanırsanız. istediğinizi verecektir.



Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
     QUERY1.CLOSE;
     QUERY1.SQL.Clear;
    QUERY1.SQL.Add('SELECT * FROM OZCANK ');
    QUERY1.SQL.Add(' WHERE EXTRACT(MONTH FROM TARIH)=EXTRACT(MONTH FROM CAST(:BUGUN AS DATE ))');
    QUERY1.SQL.Add(' AND  EXTRACT(YEAR FROM TARIH)=EXTRACT(YEAR FROM CAST(:BUGUN AS DATE ))');
   QUERY1.ParamByName('BUGUN').AsDate:=DATE;
     QUERY1.Open;

end;

Kolay gelsin.
diğer mesajları görmek için aşağıdaki linke tıklayabilirsiniz.
viewtopic.php?t=13983

Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
lazanya
Üye
Mesajlar: 23
Kayıt: 13 Haz 2003 12:34
Konum: trabzon
İletişim:

Mesaj gönderen lazanya »

evet o sayfayı inceledim. oradaki kod aylık olarak veriyordu. ben birde günü ekledim. şu anda aylık olarak veya günlük olrak doğum günü olanlrı buluyorum. Hepinize bana vakit ayırıp yol gösterdiğiniz için teşekkür ederim.

QUERY1.CLOSE;
QUERY1.SQL.Clear;
QUERY1.SQL.Add('SELECT * FROM tel');
QUERY1.SQL.Add('WHERE EXTRACT(MONTH FROM DTAR)=EXTRACT(MONTH FROM CAST(:BUGUN AS DATE ))');
QUERY1.SQL.Add('AND EXTRACT(DAY FROM DTAR)=EXTRACT(DAY FROM CAST(:BUGUN AS DATE ))');
QUERY1.SQL.Add('AND EXTRACT(YEAR FROM DTAR)=EXTRACT(YEAR FROM CAST(:BUGUN AS DATE ))');
QUERY1.ParamByName('BUGUN').AsDate:=DATE;
QUERY1.Open;
ShowMessage('Bu ay ki önemli tarihler!');
Form9.QuickRep1.Preview;
Cevapla