stored procedure sum dan bos string dönmesi

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

stored procedure sum dan bos string dönmesi

Mesaj gönderen ikra »

selamu aleyküm...

sp ile birseyler kurcaliyorum. sum ile bir tablodaki toplami alip baska bir tabloya yazdirmak istiyorum fakat, toplamini almak istedigim tablo bos ise eger bos string geri dönüyor. ve sifir yazmasi gerekirken field i bos birakiyor.
kontrol yapmaya calistim bir variable olusturdum ve sum dan aldigim degeri variable ye atadim. daha sonra eger toplam = '' then toplam = 0 dedim fakat hala bos string yaziyor... tabloya sifir ( 0 ) yazmasi icin nasil bir kod uygulamaliyim?
kıdemsiz üye
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Eğer ms sql server kullanıyorsanız ISNULL fonksiyonu işinizi görür.
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

firebird yazmayi unutmusum :oops:
kıdemsiz üye
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

Merhaba;

Böyle bir kod işini görebilir.

Kod: Tümünü seç

SELECT
 (case when (sum(TUTAR))>0 then
   sum(TUTAR)else 0 end)as TOPLAMTUTAR
FROM TABLO
iyi günler..
onaydin

Mesaj gönderen onaydin »

Kod: Tümünü seç

COALESCE (V1, V2,..., Vn)
toplam = '' then toplam = 0
yerine

Kod: Tümünü seç

toplam is not null then toplam else 0 end
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

Allah ne muradin varsa versin :oops:
saatler dir üzerine calisiyordum...
kıdemsiz üye
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

@Onaydin'ın dediği gibi düzeltirsen daha sağlıklı olur...

Kod: Tümünü seç

SELECT
 (case when (sum(TUTAR)) is not null then
   sum(TUTAR)else 0 end)as TOPLAMTUTAR
FROM TABLO
iyi günler...
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

hocam bu sum fonksyonu neden küsüratlari yuvarlar?
Firebird - Field = Decimal - 15 hane ve 2 ondaliga ayarli.
280,56 cikmasi gereken rakam 281 cikiyor...
kıdemsiz üye
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

hic bir yuvarlama yapmadan sonucu oldugu gibi alabilmenin bir yöntemi var mi dir? site de epey bi arama yaptim fakat ya yukari yada asagi yuvarlama örnekleri verilmis. sonucu oldugu gibi almaya dair bir sey bulamadim...
kıdemsiz üye
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

Merhaba;

Veritabanımdaki alanım DOUBLE PRECISION tipte;

Aynı şekilde SUM işlemi yaptım.Sonuç tam senin istediğin gibi 280,56

Belki Çıkan Sum sonucunu, integer olarak alıyorsundur ondan olabilir...

Şu şekilde kullanımda tam sonucu alman lazım..

Kod: Tümünü seç

IBQuery1.FieldByName('Toplam').AsFloat;
iyi günler...
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

Ondalik sonuclar icin degisken hic integer tanimlanir mi. iste ben tanimlamisim :oops: dikkat etmeyince gözden neler kaciyor... herkes beceremiyor bu kadar dikkatsizligi. bu da büyük bir basari :roll:
hocam cok tesekkür ediyorum.
Allah razi olsun insaAllah...

selam ve dua ile...
ikra...
kıdemsiz üye
Cevapla