Delphi Dünyası Facebook'ta

Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

Gönderen Konu: SQL de Null (boş) dönen değerlere Sıfır atama  (Okunma sayısı 2847 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı habilkader

  • Delphi 1 Level 1
  • *
  • İleti: 8
  • Rep: +0/-0
Merhabalar Delphide yazdığım Stok programında Access veri tabanı kullanıyorum. Stok Hareket tablosunda Giren miktarlar toplamı ile çıkan miktarlar toplamını bulup bakiyeyi hesaplatıyorum. Ancak Sadece GİREN değeri olan ve henüz ÇIKIŞ yapılmamış olan stoklarda ÇIKAN toplamı Null (boş) dönüyor. Bu değere SIFIR atamak için Accessda Sum(NZ(Girenmiktar;0)) deyimiyle (alan boş ise Sıfır ata) Boş alanı sıfır yapıyorum ancak bu SQL cümlesini Delphide ADO Query nesnesine yüklediğimde NZ komutunu kabul etmiyor. Bu işlemi Delphiyle nasıl çözebilirim. 1 aydır bu konu hakkında hiç kimse cevap vermedi.

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Ynt: SQL de Null (boş) dönen değerlere Sıfır atama
« Yanıtla #1 : 28 Şubat 2006 09:40:52 »
if  not (alanadi<=0) or NOT (alanadi>=0) THEN
Gibi   Şartla  anlayabilirsin
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı habilkader

  • Delphi 1 Level 1
  • *
  • İleti: 8
  • Rep: +0/-0
Ynt: SQL de Null (boş) dönen değerlere Sıfır atama
« Yanıtla #2 : 28 Şubat 2006 14:09:11 »
Fatih bey;

Benim Sql cümlem şöyle
ADOQuery1.SQL.Text:' Select Sum(Girenmiktar) AS Giren,  Sum(CikanMiktar)  AS Cikan, [Giren]-[Cikan] AS Bakiye From StokHareket Where bakiye>0"

Bu SQL i çalıştırdığımda Bazı stoklarda Giriş yapılmasına rağmen çıkış yapılmamış olduğundan bu durumda CiaknMiktar alanı ile Bakiye alanı  NULL (boş) dönüyor ve hatalı sonuç alıyorum.
Sizin örnerdiğiniz " if  not (alanadi<=0) or NOT (alanadi>=0) THEN " ifadesini bu SQL cümlesi içinde nasıl kullnıcam açıklarmısınız.

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Ynt: SQL de Null (boş) dönen değerlere Sıfır atama
« Yanıtla #3 : 28 Şubat 2006 15:36:59 »
maalesef bu söylediğim firebird içindi. ???
« Son Düzenleme: 28 Şubat 2006 15:37:33 by Fatih »
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı Speed

  • Delphi 1 Level 4
  • ****
  • İleti: 33
  • Rep: +0/-0
  • Cinsiyet: Bay
Ynt: SQL de Null (boş) dönen değerlere Sıfır atama
« Yanıtla #4 : 31 Mart 2006 01:56:44 »
Merhaba

ADOQuery1.SQL.Text:' Select Sum(Girenmiktar) AS Giren,  Sum(CikanMiktar)  AS Cikan, [Giren]-[Cikan] AS Bakiye From StokHareket Where bakiye is NULL=0"

kendim denemedim garantisi yok bir dene bizede haber ver

Çevrimdışı Gezgin

  • Delphi 1 Level 5
  • *****
  • İleti: 47
  • Rep: +0/-0
  • Cinsiyet: Bay
    • Tuncnet
Ynt: SQL de Null (boş) dönen değerlere Sıfır atama
« Yanıtla #5 : 30 Mayıs 2006 08:20:49 »
iki query koy forma ilk olarak bunu çalıştır.
update stokhareket set bakiye=0 where bakiye is null

diğerine de
Select Sum(Girenmiktar) AS Giren,  Sum(CikanMiktar)  AS Cikan, [Giren]-[Cikan] AS Bakiye From StokHareket

Çevrimdışı HAKKI34

  • Delphi 1 Level 1
  • *
  • İleti: 1
  • Rep: +0/-0
Ynt: SQL de Null (boş) dönen değerlere Sıfır atama
« Yanıtla #6 : 18 Kasım 2011 17:14:33 »
bende böyle bir sorunla karşılaşmıştım sorunu çözdüm.. yararlanmanız dileğiyle

select case when SUM(giris) IS NULL then 0 else SUM(giris) END AS giris,
case when SUM(cikis) IS NULL then 0 else SUM(cikis) END AS cikis,

Sonra girişi -Çıkış yaparak sonuca gideceksiniz.

Saygılar

Çevrimdışı selchuk

  • Delphi 6 Level 3
  • ***
  • İleti: 273
  • Rep: +0/-0
  • Cinsiyet: Bay
    • Arma Ticari Sistem
Ynt: SQL de Null (boş) dönen değerlere Sıfır atama
« Yanıtla #7 : 06 Aralık 2011 05:36:51 »
Bu sorunla bende karşılaştım iif şartı ile çözdüm. Bu şart, alan değeri Null ise sıfır değerini atar değil ise kendi değerini alır.

Access veritabanı için yazım şekli : iif(isNull(Sum(GirisMiktari)),0,Sum(GirisMiktari)) 
// Giriş miktarı Null ise sıfır değerini atar değil ise kendi değerini alır.

Örnek :
Select  StokKodu, Barkod, StokAdi,
(iif(isNull(Sum(GirisMiktari)),0,Sum(GirisMiktari)) - iif(isNull(Sum(CikisMiktari)),0,Sum(CikisMiktari))) As MevcutStok,
(iif(isNull(Sum(GirisKdvMat)),0,Sum(GirisKdvMat)) / iif(isNull(Sum(GirisMiktari)),0,Sum(GirisMiktari))) As Ortalama,
(MevcutStok * Ortalama) As Envanter From StokHareketleri Group By StokKodu, Barkod, StokAdi


Knowledge is power (Bilgi Güçtür)