alanları guruplayarak toplama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

Kod: Tümünü seç

with DataHASTALIK.IsratistikRaporQry do 
  begin 
    Close; 
    SQL.Clear; 
    Sql.Add('SELECT HASTALIK_TURU,SUM(BIR_ONIKI_AY_ERKEK), ' 
          + 'SUM(BIR_ONIKI_AY_KADIN), SUM(BIR_YAS_ERKEK), ' 
          + 'SUM(BIR_YAS_KADIN), SUM(IKI_YAS_ERKEK), SUM(IKI_YAS_KADIN), ' 
          + 'SUM(UC_YAS_ERKEK), SUM(UC_YAS_KADIN), SUM(DORT_YAS_ERKEK), SUM(DORT_YAS_KADIN), ' 
          + 'SUM(BES_YAS_ERKEK), SUM(BES_YAS_KADIN), SUM(ALTI_YAS_ERKEK), SUM(ALTI_YAS_KADIN), ' 
          + 'SUM(YEDI_ONDORT_YAS_ERKEK), SUM(YEDI_ONDORT_YAS_KADIN), ' 
          + 'SUM(ONBES_YIRMIDORT_YAS_ERKEK), SUM(ONBES_YIRMIDORT_YAS_KADIN), ' 
          + 'SUM(YIRMIBES_OTUZDORT_YAS_ERKEK), SUM(YIRMIBES_OTUZDORT_YAS_KADIN), ' 
          + 'SUM(OTUZBES_KIRKDOKUZ_YAS_ERKEK), SUM(OTUZBES_KIRKDOKUZ_YAS_KADIN), ' 
          + 'SUM(ELLI_ELLIDOKUZ_YAS_ERKEK), SUM(ELLI_ELLIDOKUZ_YAS_KADIN), ' 
          + 'SUM(ALTMIS_ALTMISDORT_YAS_ERKEK), SUM(ALTMIS_ALTMISDORT_YAS_KADIN), ' 
          + 'SUM(ALTMISBES_USTU_ERKEK), SUM(ALTMISBES_USTU_KADIN) ' 
          + 'FROM hastalık_istatistik '); 
    Sql.Add('WHERE KAYIT_TARIHI>=:baslangic and KAYIT_TARIHI<=:bitis'); 
    Sql.Add('GROUP BY HASTALIK_TURU'); 
    ParamByName('baslangic').AsDate := MonthCalender1.Date; 
    ParamByName('bitis').AsDate := MonthCalender2.Date; 
    Perepare; 
    Open; 
  end; 
Arkadaşlar Kesinlikle Where Çalışmıyor Hatam ne acaba
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

hocam bu sorun neden yardım edin lütfen
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Hata mesajı nedir :?: Where ve ParamByName.. satırlarını kaldırınca çalışıyor mu :?:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

Evet Hocam Where ve ParamByName.. satırlarını kaldırınca çalışıyor.
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

hata mesajı Operation not applicable hocam
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

ParamByName('baslangic').AsDate := MonthCalender1.Date;
ParamByName('bitis').AsDate := MonthCalender2.Date;

bölümünü şu iki şekilde değiştirip deneyin:

1:

Kod: Tümünü seç

ParamByName('baslangic').DataType := ftDateTime;
ParamByName('bitis').DataType := ftDateTime;
ParamByName('baslangic').AsDateTime := MonthCalender1.Date;
ParamByName('bitis').AsDateTime := MonthCalender2.Date;
veya

2:

Kod: Tümünü seç

uses SqlTimSt; //ilave edilecek

ParamByName('baslangic').DataType := ftTimeStamp;
ParamByName('bitis').DataType := ftTimeStamp;
ParamByName('baslangic').AsSQLTimeStamp := DateTimeToSQLTimeStamp(MonthCalender1.Date);
ParamByName('bitis').AsSQLTimeStamp := DateTimeToSQLTimeStamp(MonthCalender2.Date);
İyi çalışmalar.
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

Hakan bey dediğiniz şekildede yaptım hata aynı Operation not applicable hatası
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

ben en iyisi bundan vazgeçip şu şekilde yapsam olurmu arkadaşlar.
sumlanmış alanları bir temp tablosuna kayıt edip whereyi başka query ile tarih arası süzeyim daha sonra işim bitince temp tablosu verilerini temizleyeyim her seferinde tekrarlamak bunu sorun çıkarırmı ve bunun için bir örnek verebilirmisiniz. teşekkürler.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Kullandığın veritabanını, kullandığın veritabanı komponentlerini (BDE, ADO, dbExpress vs.) ve KAYIT_TARIHI alanının veritabanındaki tanımını (DATE, TIMESTAMP, VARCHAR vs.) hatta mümkünse tablonun SQL olarak yapısını (CREATE TABLE ...) bildirebilir misin?

İyi çalışmalar.
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

Hakan Hocam Kullandığım veritabanı MySql Komponent olarak ADO
KAYIT_TARIHI Yapısı Date ODBC Driverı 3.51 ver.

Fakt Hocam Şöyle Birşey Farkettim sanırım sorunu buldum
ODBC 3.51 Driver Alians Tanımladığımda Bu sorun oluyor.
Bunu arama sonuçlarına yazalım lütfende aynı sorunlarla karşılaşan arkadaşlar hemen çözsün Birde MyODBC 3.51 yerine sorunsuz çalışan bir driver tavsiye edebilirmisiniz. link yazarsanız alabileceğim çok teşekkürler arkadaşlar böyle güzel bir forumun eşi yoktur herhalde
mero
Üye
Mesajlar: 109
Kayıt: 04 Mar 2005 04:54

Mesaj gönderen mero »

Kod: Tümünü seç

with DataHASTALIK.IsratistikRaporQry do 
  begin 
    Close; 
    SQL.Clear; 
    Sql.Add('SELECT HASTALIK_TURU,SUM(BIR_ONIKI_AY_ERKEK), ' 
          + 'SUM(BIR_ONIKI_AY_KADIN), SUM(BIR_YAS_ERKEK), ' 
          + 'SUM(BIR_YAS_KADIN), SUM(IKI_YAS_ERKEK), SUM(IKI_YAS_KADIN), ' 
          + 'SUM(UC_YAS_ERKEK), SUM(UC_YAS_KADIN), SUM(DORT_YAS_ERKEK), SUM(DORT_YAS_KADIN), ' 
          + 'SUM(BES_YAS_ERKEK), SUM(BES_YAS_KADIN), SUM(ALTI_YAS_ERKEK), SUM(ALTI_YAS_KADIN), ' 
          + 'SUM(YEDI_ONDORT_YAS_ERKEK), SUM(YEDI_ONDORT_YAS_KADIN), ' 
          + 'SUM(ONBES_YIRMIDORT_YAS_ERKEK), SUM(ONBES_YIRMIDORT_YAS_KADIN), ' 
          + 'SUM(YIRMIBES_OTUZDORT_YAS_ERKEK), SUM(YIRMIBES_OTUZDORT_YAS_KADIN), ' 
          + 'SUM(OTUZBES_KIRKDOKUZ_YAS_ERKEK), SUM(OTUZBES_KIRKDOKUZ_YAS_KADIN), ' 
          + 'SUM(ELLI_ELLIDOKUZ_YAS_ERKEK), SUM(ELLI_ELLIDOKUZ_YAS_KADIN), ' 
          + 'SUM(ALTMIS_ALTMISDORT_YAS_ERKEK), SUM(ALTMIS_ALTMISDORT_YAS_KADIN), ' 
          + 'SUM(ALTMISBES_USTU_ERKEK), SUM(ALTMISBES_USTU_KADIN) ' 
          + 'FROM hastalık_istatistik '); 
    Sql.Add('WHERE KAYIT_TARIHI>=:baslangic and KAYIT_TARIHI<=:bitis'); 
    Sql.Add('GROUP BY HASTALIK_TURU'); 
    ParamByName('baslangic').AsDate := MonthCalender1.Date; 
    ParamByName('bitis').AsDate := MonthCalender2.Date; 
    Perepare; 
    Open; 
  end; 

'FROM hastalık_istatistik ' burdaki hastalık kelimesinden kaynaklanıyor olabilirmi? türkçe karakterden dolayı.
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

hayır hocam onuda denedim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

yusuf yazdı:hayır hocam onuda denedim
Daha önce buradaki "ı" yı ben de görmemişim :? Bir öneri daha; tüm select içindekileri büyük harfe çevirin. Aralarda Türkçe harf olmasın :!:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Google'da "Operation not applicable MySQL" şeklinde arama yaptım. Verilen ilk linkte aynı problemden bahsediyor. Link:
http://bugs.mysql.com/bug.php?id=18084
Anladığım kadarıyla MySQL'in Date kavramı Delphi ile anlaşamıyor. MySQL'in farklı versiyonunda sorun yok vs...

Çözüm şu olabilir: Eğer MySQL'de FireBird'de olan EXTRACT fonksiyonu veya benzeri bir fonksiyon varsa o fonksiyonla tarihi sayısala çevirip karşılaştırmayı ona göre yapabilirsin. Ki ben şahsen DateTime alanları için bunun bütün veritabanlarında kesin çözüm olduğunu düşünüyorum. Örneğin şöyle bir SQL yazabilirsin:

Kod: Tümünü seç

SELECT * FROM MYTABLE WHERE EXTRACT(DATE FROM TARIH) * 10000 + EXTRACT(MONTH FROM TARIH) * 100 + EXTRACT(DAY FROM TARIH) BETWEEN 20051127 AND 20060523
gibi.
Biraz karışık gelebilir ancak basitleştirmek senin yazılım tekniğine kalmış.

İyi çalışmalar.
Cevapla