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 » 13 Eyl 2006 09:01
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 » 13 Eyl 2006 10:44
hocam bu sorun neden yardım edin lütfen
rsimsek
Admin
Mesajlar: 4482 Kayıt: 10 Haz 2003 01:48
Konum: İstanbul
Mesaj
gönderen rsimsek » 13 Eyl 2006 03:08
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 » 13 Eyl 2006 03:27
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 » 13 Eyl 2006 03:29
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 » 13 Eyl 2006 05:31
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 » 14 Eyl 2006 09:51
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 » 14 Eyl 2006 10:02
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 » 14 Eyl 2006 11:28
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 » 14 Eyl 2006 12:16
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 » 14 Eyl 2006 12:48
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 » 14 Eyl 2006 02:14
hayır hocam onuda denedim
rsimsek
Admin
Mesajlar: 4482 Kayıt: 10 Haz 2003 01:48
Konum: İstanbul
Mesaj
gönderen rsimsek » 15 Eyl 2006 10:45
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 » 15 Eyl 2006 02:49
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.