Tablodaki iki tarih alanına göre arama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

Tablodaki iki tarih alanına göre arama

Mesaj gönderen baloglurecep »

merhaba arkadaşlar....projede bir güncelleştirme istediler... büyük çoğunluğunu yaptım. bir sql sorgusunda yada projenin ilerleyişinde bir sıkıntım var. tablom şu şekilde;
uye_no
miktar
baslama_tarihi
bitis_tarihi

burada ben üyenin vermiş olduğu aidatları kaydediyorum. şöyleki üye başlangıç tarihin belirleniyor ve kaç aylıksa o yazılıyor ben otomatik olarak bitiş tarihini belirleyen bileşene başlama tarihini o kadar artırarak atıyorum ödenen miktarıda girerek kaydediyorum.

tekrar üye aidat ödemesi yapacağım zaman önce sorgulamam gerekiyor.
yeni girilen değerlerin veri tabanındaki başlama tarihi ve bitiş tarihleri arasında kalıyorsa uyarı vermesi gerekiyor. bir türlü yapamadım sql sorgumu.

örnek:

24 nolu uye 03/03/2007 ve 03/06/2007 arasındaki tüm aidatları ödemiş olsun.yeni aidat öderken önce üyenin bu bilgilerine bakacak yeni girlen değer bu değerler arasında ise mesaj vermesi ve çıkması gerekiyor. örneğin 25/03/2007 ve 20/05/2007 tarihini yukardaki tarihlerin içinde kaldığından uyarı mesajını verip çıkması gerekiyor.

Sanırım anlatabildim sorunumu arkadaşlar...
oyle
Üye
Mesajlar: 137
Kayıt: 17 Eki 2006 05:53

Mesaj gönderen oyle »

Forumda arama yaparsaniz, yeterince bilgiye ulasabilirsiniz.
orn:
viewtopic.php?t=18828&highlight=tarih+arama
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

Üstad sanırımbeni anlamadınız...

Mesaj gönderen baloglurecep »

Veri tabnımda bir tane tarih alanı yok ben iki tane tarih alanınna göre sorgu oluşturmak istiyoum.

baslangic_tarihi
bitis_tarihi
uye_no

uye_no oalnına göre yeni bir kayıt yapacağım zaman önce sorgulamam lazım. Eğer yeni girilecek tarih değerleri veri tabanınbdaki başlangıç tarihi ve bitiş tarihi arasında kalıyorsa mesaj vermesini istiyorum.

veri tabnında 24 nolu üğyenin 03/03/2007 ve 03/05/2007 arasında bir kayıtı var diyelim. yeni kayıt gereceği zaman girilen kayıt şu olsun.25/04/2007 ve 03/05/2007 olursa butarihlerin arasında zaten kayıt var üyenin. ve mesaj vermesi gerek. ama bir türlü çözemedim. sorunu.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Insert veya Append ile giriş yapıyorsanız, tablonun BeforeInsert olayında;

SQL ile "Insert Into" ile yapıyorsanız bu işlemden hemen önce bir tane kukla sorgu yapacaksınız. Mesela şöyle bir fonksiyon olabilir...

Kod: Tümünü seç

Function TarihUygun( Tarih:TDate; UyeNo:Integer ):Boolean;
begin
  With Form1.AdoQuery999 do begin
    SQL.Text := 'SELECT Count(*) as KayitSay FROM UyelerTablosu WHERE uye_no = :uye AND baslangic_tarihi < :d0 AND bitis_tarihi > :d1';
    Parameters.ParamByName('uye').Value   := UyeNo;
    Parameters.ParamByName('d0').DataType := ftDate;
    Parameters.ParamByName('d0').Value    := Tarih;
    Parameters.ParamByName('d1').DataType := ftDate;
    Parameters.ParamByName('d1').Value    := Tarih;
    Active := True;
    Result := FieldByName('KayitSay').AsInteger = 0;
    Active := False;
  end;
end;
Asıl Tablonun BeforeInsert olayında diyeceksin ki

Kod: Tümünü seç

If NOT TarihUygun( Date, Dataset.FieldByName('UyeNo').AsInteger ) then ABORT;
Resim
Resim ....Resim
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

Teşekkürler

Mesaj gönderen baloglurecep »

Teşekkürler hocam ağzına sağlık. sizinle tanışmak isterim. ben erzurumda sınıf öğretmeni olarak çalışmaktayım. delphiyi kendi kendime öğrendim desem yalan olmaz. anma ilerlememde delphitürkiye ve delphi forum sitelerin payı çok büyük. siz üstadların bakış açılarıyla daha farklı bakabiliyorum olaylara.... selam ve saygılar hocam.....
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Memnun oldum... Kısmet olur bir gün tanışılır...

- Başarılarınızın devamını dilerim...
Resim
Resim ....Resim
Cevapla