Randevu Boşluklarını DBGridde gösterebilmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Re: Randevu Boşluklarını DBGridde gösterebilmek

Mesaj gönderen NewMember »

sevgili conari haklıymışsın.Ordaki kod tekrar denedim çalışıyor.Her nasıl olmuşsa ben ordaki koda Where ibaresini eklemişim.Left joinden sonra where ifadesini ekleyince resimlerdeki gibi bir sonuç dönüyor.Ancak where olmayınca sonuç doğru dönüyor.Ayrıca Lost Soul'un söylediği yöntem de çalışıyor.Yani eğer Where ifadesi kullanılacaksa da Lost Soul'un söylediği gibi null olanlara da or şartı getirilmesi gerekiyor.Hepinize teşekkürler.

Yanlış Kod:

Kod: Tümünü seç

dm.IBDataSet1.SelectSQL.Clear;
  dm.IBDataSet1.SelectSQL.Text := 'SELECT SAATKONTROL.SAAT,MUAYENEISTEM.HASTAADISOYADI FROM SAATKONTROL' +
    ' LEFT JOIN MUAYENEISTEM ON ( MUAYENEISTEM.MUAYENESAATI = SAATKONTROL.SAAT )' +
    'WHERE 1=1 ' +
    'and (MUAYENEISTEM.MUAYENETARIHI=:PARTARIH ' +
    'AND MUAYENEISTEM.POLIKLINIKODASI=:PARPOLIKLINIK ' +
    'AND MUAYENEISTEM.TAKIPDURUMU=:PARTKP) ' +
    'or (MUAYENEISTEM.MUAYENESAATI is null)';
  dm.IBDataSet1.ParamByName('PARTARIH').AsDate := DBYapilacagitarih.Date;
  dm.IBDataSet1.ParamByName('PARPOLIKLINIK').AsSTRING := dbPOLIKLINIK.Text;
  dm.IBDataSet1.ParamByName('PARTKP').Asstring := 'RANDEVU VERİLDİ';
  dm.IBDataSet1.open;
Doğru Kod

Kod: Tümünü seç

dm.IBDataSet1.SelectSQL.Clear;
  dm.IBDataSet1.SelectSQL.Text := 'SELECT SAATKONTROL.SAAT,MUAYENEISTEM.HASTAADISOYADI FROM SAATKONTROL' +
    ' LEFT JOIN MUAYENEISTEM ON MUAYENEISTEM.MUAYENESAATI = SAATKONTROL.SAAT ' +
      'AND MUAYENEISTEM.MUAYENETARIHI=:PARTARIH ' +
    'AND MUAYENEISTEM.POLIKLINIKODASI=:PARPOLIKLINIK ' +
  'AND MUAYENEISTEM.TAKIPDURUMU=:PARTKP ' +
    'ORDER BY SAATKONTROL.SAAT';
  dm.IBDataSet1.ParamByName('PARTARIH').AsDate := DBYapilacagitarih.Date;
  dm.IBDataSet1.ParamByName('PARPOLIKLINIK').AsSTRING := dbPOLIKLINIK.Text;
 dm.IBDataSet1.ParamByName('PARTKP').Asstring := 'RANDEVU VERİLDİ';
  dm.IBDataSet1.open;

Doğru Kod:(Lost Soul'un önerisi Where ifadesi içeren)

Kod: Tümünü seç

dm.IBDataSet1.SelectSQL.Clear;
  dm.IBDataSet1.SelectSQL.Text := 'SELECT SAATKONTROL.SAAT,MUAYENEISTEM.HASTAADISOYADI FROM SAATKONTROL' +
    ' LEFT JOIN MUAYENEISTEM ON ( MUAYENEISTEM.MUAYENESAATI = SAATKONTROL.SAAT )' +
    'WHERE 1=1 ' +
    'and (MUAYENEISTEM.MUAYENETARIHI=:PARTARIH ' +
    'AND MUAYENEISTEM.POLIKLINIKODASI=:PARPOLIKLINIK ' +
    'AND MUAYENEISTEM.TAKIPDURUMU=:PARTKP) ' +
    'or (MUAYENEISTEM.MUAYENESAATI is null)';
  dm.IBDataSet1.ParamByName('PARTARIH').AsDate := DBYapilacagitarih.Date;
  dm.IBDataSet1.ParamByName('PARPOLIKLINIK').AsSTRING := dbPOLIKLINIK.Text;
  dm.IBDataSet1.ParamByName('PARTKP').Asstring := 'RANDEVU VERİLDİ';
  dm.IBDataSet1.open;
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Re: Randevu Boşluklarını DBGridde gösterebilmek

Mesaj gönderen NewMember »

Arkadşlar konuyla bağlantılı olduğu içinfarklı başlık açmak istemedim.
Şimdi saatkontrol tablosunda 10'ar dklık zama aralıkları var.Ama bazı kullanıcılar daha çok saatlik dilimlere randevu veriyor bazılarıda yarım saatlik bazıları 20 dk.Mesela şöyle bir olayı nasıl yapabiliriz.
Saatkontrol tablosundaki zaman dilimlerinden sadece 20 dk aralıklı olanlar listelensin.?Yada 40 dk mesela.
Cevapla