işlem yapılmayan günleri bul diye bir sorgu?

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

işlem yapılmayan günleri bul diye bir sorgu?

Mesaj gönderen nitro »

merhaba
delphi7 ve firebirk kullanıyorum.
programın personel hakediş takip kısmı şöyle:
tarih perdonel adı hakediş tutarı
01.09.2006 Ali çoban 30 YTL
02.09.2006 Ali çoban 30 ytl
04.09.2006 Ali Çoban 35 ytl
05.09.2006 Ali çoban 35 ytl
...

bana lazım olan sorgu çu soruyu cevaplamalı:
ali Çoban'ın 15 Eylül'e kadar hakediş olmayan günlerini listele?

Aklıma bişey gelmedi, sizlerin fikirlerini sorayım dedim.
ibrahimcoban
Üye
Mesajlar: 163
Kayıt: 11 Eki 2005 10:44
İletişim:

Mesaj gönderen ibrahimcoban »

Şöyle uçuk bir fikirde bulunayım...

2006 yılının 01.01.2006 dan 31.12.2006 ya kadar olan tarihlerini bir tableye yaz.
Sonra da kendi tablen ile not in alt sorgu uygula.


select distinct tarih from tarihler
where tarihler.tarih not in(select hakedis.tarih from hakedis)
....gibi
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

fikir güzel hocam, ama tarihleri tabloya yazdırmadan kontrol ettirmek de mümkün olabilir bence. daha güzel fikirler çıkabilir. :)
mahsuni
Üye
Mesajlar: 99
Kayıt: 21 Haz 2003 01:09
Konum: Ankara-Mamak

Mesaj gönderen mahsuni »

Aşağıdaki sp işinizi görür sanırım

Kod: Tümünü seç

CREATE PROCEDURE SP_TARIHBUL
RETURNS (
    OTARIH DATE)
AS
DECLARE VARIABLE BASTAR DATE;
DECLARE VARIABLE FARK INTEGER;
DECLARE VARIABLE SAY INTEGER=0;
DECLARE VARIABLE CNT INTEGER;
begin
  /* Procedure Text */
  select max(tarih)-min(tarih),min(tarih) from hakedis into :FARK,:BASTar;
  while (:SAY<:FARK) do begin
   otarih=:BASTAR+:SAY;
   select count(*) from hakedis where tarih=:otarih into :cnt;
   if (:cnt=0) then suspend;
   SAY=:SAY+1;
  end

end
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

kardeş çok teşekkürler ama benim için bu işlem delphide gerekli, yani söz konusu kodu ibquery'de kullanayım diyorum.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Delphi tarafta yapacaksan yukarıdakilere benzer şekilde önce istediğin tarihler arasındaki kayıtları bulur, daha sonra da istediğin tarihler arasındaki günlerle dolduracağın bir dizi değişkenine query yi baştan sona taratırken hangi gün var ise dizide bulup işaretleyip daha sonra da işaretsizleri listeletebilirsin :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

Kod: Tümünü seç

select distinct tarih from tarihler 
where tarihler.tarih not in(select hakedis.tarih from hakedis)
olayı en mantıklısı gibi duruyor, ben de bu kodu kullanarak devam edeyim, daha iyi bir çözüm bulursam ilerde uygularım, böylece progjeyi durdurmamış olurum, çözüm çözümdür :)
Cevapla