| ikra | 07.08.2005 - 06:08:40 |
| degerli hocalarim... büyük bir azim ile basladim bu isi ögrenmeye. hatalar ile karsilastikca azmimi yitiriyor gibiyim. iki sey geliyor aklima. herkes programci olmak zorunda degil. zorlama bosuna kendini.... ikincisi ise hata ne kadar cok olursa o kadar fazla ögrenirsin... sizce hangisini dinlemeliyim?
yine karsilastigim sorunlardan biri firebird de sql ile bir arama islemi yapmaya calisiyorum. iki adet sorgulama yapmam gerekiyor. ikisi de tarih ile. birinde gün var digerinde yok. söyle ki gün ay yil olmak üzere üc adet edit im var ve ikinci bölümde ise ay ve yil olmak üzere iki edit im. daha önceleri mysql kullaniyordum, orada yazdigim sekilde yaziyorum ama banamisin demiyor... kod aynen su sekilde: IBDataSet1.SelectSQL.Add('SELECT * FROM ERECHNUNG WHERE RGVON LIKE ''%-%'+ay.Text+'%-%'+yil.Text+'%'' ORDER BY FAELLIG ASC');
her biri tek tirnak. cift tirnak yok... burada yalnizca ay'a veri girdigimde ariyor... yil girdigimde ise sonuc vermiyor... tirnaklari falan kaydirdim parametre ile denedim ama bir sonuc alamadim... degerli fikirlerinizi benimle paylasirsaniz minnettar kalacagim... selam ve dua ile... | |
| rsimsek | 07.08.2005 - 14:06:44 |
| Aşağıdaki kodla yılı, ayı, günü tarih alanından ayırabilirsin..
select tarih, extract(YEAR from tarih) as yil, extract(MONTH from tarih) as ay,
extract(DAY from tarih) as gun from tablo Bil-cümlesi de burda http://firebird.sourceforge.net/index.php?op=useful&id=ostenried_1 http://www.interbase-world.com/en/articles/505.php | |
| ikra | 07.08.2005 - 18:52:26 |
| hocam sanirim yanlis anlattim. yada siz anlattiniz ben anlamadim...
like komutu ile yalnizca ay'i veya yil'i yada gün'ü vererek aratmak istiyorum ve bunun icin LIKE kisminda "%" isaretlerini kullandim... yani maksadim gün ay veya yil'i ayirmak degil, kriterlere uygun olanlari listelemek... | |
| ikra | 07.08.2005 - 19:01:17 |
| hocam gösterdiginiz yöntem den yola cikarak su sekilde yaptim... aslinda like komutu ile cok daha farkli olmaliydi extract komutunu kullanmamak gerekiyordu. biraz uzun oldu ama sonucunda calisiyor... kodlarimi oldukca kisa tutmak istememdeki sebep, programin daha performansli calismasi... kodlari asagida veriyorum... umarim hata yapmamisim dir...
IBDataSet1.SelectSQL.Add('SELECT * FROM ERECHNUNG WHERE Extract(MONTH from TARIH) LIKE ''%'+ay.text+'%'' AND Extract(YEAR from TARIH) LIKE ''%'+yil.text+'%''');
yorumlarinizi bekliyorum... | |
| miskin | 08.08.2005 - 03:42:54 |
| cikis noktan yanlis gibime geliyor. Önce neyi niye yapmak istiyorsun. Like la iki kelimeyi karsilastirabilirsin, tarih rutinleri ise sayilardir. yani 2005 agustostan önce yada sonradir. yapmak istedigin islemde yürüttügüm tahminler yanlis olabilir. Yapmak istedigini biraz daha acarsan. Sadece Agustos aylarini cikarmak istiyorsan Like yine gerek yok.
Annamadim gitti, | |
| doganzorlu | 10.08.2005 - 00:10:47 |
| Selam,
DB de aylar var... Siz içinde 1 geçenler yada 1 le başlayanlar yada 1 le bitenleri arıyorsunuz diyelim. Like string alanlarda mantıklı iken, üstte verdiğim tür bir durum için mantıksızdır. Elinizde ay gün varsa, once bunu tarihe çevirir, sonra between ile kontrol edersiniz... Örneğin 03/2005 var. Hemen 01/03/2005 ve 31/03/2005 iki tarih üretir, sql içinde where ..... date between ilktarih and sontarih şeklinde çalışırsınız. Böylece hem mantığı düzeltmiş olursunuz hem de performansuı dramatik bir biçimde artırmış olursunuz. | |