iki tarih arası sorguda problemlerim var.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
alguli
Üye
Mesajlar: 35
Kayıt: 04 Nis 2007 01:03

iki tarih arası sorguda problemlerim var.

Mesaj gönderen alguli »

Selamun Aleyklüm arkadaşlar.
delphi 7 ve firebird 2.0 kullanıyorum.
3 katmanlı bir master detail yapısı kullanıyorum.
1-(eğitmen tablosu) eğitmen kodu-primary
2- (hareket tablosu) hareket kodu -primary, eğitmen ve eğitim tip kodu-foreign
3- (Eğitimler tablosu) eğitim kodu-primary, hareket kodu-foreign.

bu yapıya dayanarak herhangi bir eğitmenin belli tarihler arası verdikleri eğitimleri eğitim tip adına göre gruplanmış olarak alıyorum aynı zamanda eğitmenin genel, eğitim tipine göre ortalama puanı ve eğitim puanını gruplanmış olarak gösterebiliyorum.

Bazı eğitmenler için;uzun bir tarih aralığı verdiğimde (01.08.2007-31.10.2007) sonuç alıyorum ve bu sonuçlar içerisinde 01.10.2007-31.10.2007 tarih aralığındaki eğitimleri görebiliyorum. Ama sadece 01.10.2007-31.10.2007 tarih aralığında sorgulama yaptığımda herhangi bir sonuç alamıyorum.
bu sorguyu yaparken parametre kullandım olmadı, kullanmadım olmadı, between kullandım olmadı, >= ve <= kullandım olmadı, karıştırdım olmadı allem ettim olmadı, kullem ettim olmadı. Son çare size danışmak. Bana fikir veriniz ALLah rızası için ne olur.

Allah yar ve yardımcınız olsun.
Hayat yalanlarla dolu bir aşktır.
Gerçek aşka erişince o da biter.
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

uzun tarih aralığında alıyom kısada alamıyom diye bişey olmaz... o tarihler arasındaki gerçekten kayıt olduğuna eminmisin..
birde sorgu kodunu yazarsan ordan bakarız..
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Mesaj gönderen hi_selamlar »

mrb.

muhtemelen sorguda hata vardır.

sorguyu gönder ki bakalım. yoksa nasıl yardımcı olabiliriz.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
alguli
Üye
Mesajlar: 35
Kayıt: 04 Nis 2007 01:03

Mesaj gönderen alguli »

uzun aralıkta gördüğüm kayıtları daha dar bir aralığa indirgediğimde alamıyorum. Kod istemişsiniz kodu gönderiyorum. Yeni taşındığım yere telekom grevi sebebi ile internet alamadım bu sebeple geç kalıyorum kusuruma bakmayın. Allah'a emanet olun.

Kod: Tümünü seç

  IBDTEgitmenim.Close;
  IBDTEgitmenim.SelectSQL.Clear;
  IBDTEgitmenim.SelectSQL.Text := 'Select * From Egitmen_Rapor where 1=1';
  IBDTMaster.Close;
  IBDTMaster.SelectSQL.Clear;
  IBDTMaster.SelectSQL.Text := 'Select a. ADI_SOYADI, a. EGITMEN_KOD, ' +
    '(Select AVG(b.EGITMEN_PUANI) From EGITIM b where b.EGITMEN=a.EGITMEN_KOD) as ortalama From EGITMEN a';
  if RzRadioButton1.Checked = True then
  begin
    IBDTMaster.SelectSQL.Add('where a.EGITMEN_KOD=' + QuotedStr(DM.IBDTEgitmenEGITMEN_KOD.AsString));
    IBDTEgitmenim.SelectSQL.Add(' and EGITMEN=' + QuotedStr(DM.IBDTEgitmenEGITMEN_KOD.AsString));
  end;
  IBDTDetail.Close;
  IBDTDetail.SelectSQL.Clear;
  IBDTDetail.SelectSQL.Text := 'Select a.EGITIM_AD, a.EGITIM_KOD, a.KAYITNO, a.EGITMEN, ' +
    '(Select AVG(b.EGITMEN_PUANI)  From EGITIM b where b.HAREKETNO=a.KAYITNO) as Ortalama ' +
    'From EGITIM_HAREKET a where a.EGITMEN=:EGITMEN_KOD ';
  if RzRadioButton3.Checked = True then
  begin
    IBDTDetail.SelectSQL.Add('and a.EGITIM_KOD=' + QuotedStr(DM.IBDTEgitimlerEGITIMLER_KOD.AsString));
    IBDTEgitmenim.SelectSQL.Add(' and EGITIM_TIP=' + QuotedStr(DM.IBDTEgitimlerEGITIMLER_KOD.AsString))
  end else IBDTDetail.SelectSQL.Add('and a.EGITIM_KOD>=' + QuotedStr('0'));
  IBDTSDetail.Close;
  IBDTSDetail.SelectSQL.Clear;
  IBDTSDetail.SelectSQL.Text := 'Select * From EGITMEN_RAPOR where 1=1 ';

  if TarihSor.Checked = True then
  begin
    IBDTSDetail.SelectSQL.Add('and (BASLANGIC_TARIHI between :bastarih and :sontarih)');
    // between :bastarih and :sontarih)');
    IBDTEgitmenim.SelectSQL.Add('and (BASLANGIC_TARIHI between :bastarih and :sontarih)');
  end;

  IBDTEgitmenim.SelectSQL.Add(' Order By ADI_SOYADI');
  IBDTMaster.SelectSQL.Add(' ORDER BY a.ADI_SOYADI');
  IBDTDetail.SelectSQL.Add(' ORDER BY a.EGITIM_AD');
  IBDTSDetail.SelectSQL.Add('and HAREKETNO=:KAYITNO ');
  IBDTSDetail.SelectSQL.Add('Order By BASLANGIC_TARIHI');

  if TarihSor.Checked then
  begin
    IBDTSDetail.ParamByName('bastarih').AsDateTime := Tarih1.Date;
    IBDTSDetail.ParamByName('sontarih').AsDateTime := Tarih2.Date;

    IBDTEgitmenim.ParamByName('bastarih').AsDateTime := Tarih1.Date;
    IBDTEgitmenim.ParamByName('sontarih').AsDateTime := Tarih2.Date;
  end;
  IBDTEgitmenim.Open;
  IBDTMaster.Open;
  IBDTDetail.Open;
  IBDTSDetail.Prepare;
  IBDTSDetail.Open;
Hayat yalanlarla dolu bir aşktır.
Gerçek aşka erişince o da biter.
Cevapla