Skip to main content

AccessTr.neT


Sorgu Sonucunda Eksi (-) Değerlerin Görünmesi

Sorgu Sonucunda Eksi (-) Değerlerin Görünmesi

Çözüldü #1
Merhaba,

Ekteki örnekte 2 adet form var.
Bunlardan bir tanesi "birim_fiyat_artisi_takip_formu" Bu form, geçmiş yıl ile bu yıl yapılan alışverişlerin birim fiyatlarını oranlayıp, belirlediğim değerden büyük olanları gösteriyor.
Bu formda hiç sorun yok.

Bir de aynı üstteki form gibi "son_ay_birim_fiyat_artisi_takip_formu" adında son ay yapılan alışveriş ile bu yıl yapılan alışverişlerin birim fiyatlarını oranlayıp, belirlediğim değerden büyük olanları göstermesini istediğim formum var ama burada bir kaç sorun var.

1-) Kriter olarak birler basamağını alıyor. Örneğin %8'den büyük olanları göster diyorum ama %20 olmasına rağmen göstermiyor. %2'den büyük olanları göster dediğim zaman gösteriyor.
2-) Birler basamağına göre veri getirdiği için oran sonucu eksi bile olsa,  sorgu sonucunda gösteriyor.
3-) Ondalık basamağında virgülden sonraki değer "0" ile başlıyorsa göstermiyor. (Virgülden sonraki değer 2 basamaklı bile olsa göstermiyor. Örneğin 20.03'ü 20. diye gösteriyor.)
.rar aylik_rapor.rar (Dosya Boyutu: 101,16 KB | İndirme Sayısı: 4)
Cevapla
#2
yuzdesel_artis_sorgusu_son_aya_gore isimli sorgunun Sql kodunu aşağıdaki ile değiştirerek deneyiniz.

SELECT son_aya_ait_veriler.malzeme_adi AS [Malzeme Adı], bu_yila_ait_veriler.bu_yil_ortalama AS [Bu Yıl], son_aya_ait_veriler.bu_ay_ortalama AS [Son Ay], Format((([bu_ay_ortalama]-[bu_yil_ortalama])/[bu_yil_ortalama])*100,"Standard") AS Oran, son_aya_ait_veriler.grup
FROM son_aya_ait_veriler INNER JOIN bu_yila_ait_veriler ON son_aya_ait_veriler.malzeme_adi = bu_yila_ait_veriler.malzeme_adi
WHERE ((((([bu_ay_ortalama]-[bu_yil_ortalama])/[bu_yil_ortalama])*100)>=[Formlar].[son_ay_birim_fiyat_artisi_takip_formu].[txoran]));
Cevapla
#3
(16/11/2018, 13:44)ozanakkaya yazdı: yuzdesel_artis_sorgusu_son_aya_gore isimli sorgunun Sql kodunu aşağıdaki ile değiştirerek deneyiniz.

SELECT son_aya_ait_veriler.malzeme_adi AS [Malzeme Adı], bu_yila_ait_veriler.bu_yil_ortalama AS [Bu Yıl], son_aya_ait_veriler.bu_ay_ortalama AS [Son Ay], Format((([bu_ay_ortalama]-[bu_yil_ortalama])/[bu_yil_ortalama])*100,"Standard") AS Oran, son_aya_ait_veriler.grup
FROM son_aya_ait_veriler INNER JOIN bu_yila_ait_veriler ON son_aya_ait_veriler.malzeme_adi = bu_yila_ait_veriler.malzeme_adi
WHERE ((((([bu_ay_ortalama]-[bu_yil_ortalama])/[bu_yil_ortalama])*100)>=[Formlar].[son_ay_birim_fiyat_artisi_takip_formu].[txoran]));

Ozan Hocam,

Verdiğiniz kodu kullanınca, istediğimin bir kısmı oldu. 

1. sorun örnekteki dosyada %20.03 oranında artış olan 1 tane kayıt var. Metin kutusuna 20 yazınca bunu bulmuyor oysaki kodda ">=" ifadesi mevcut. 19.9 yazınca buluyor. 
2. sorun Formatı "Standart" olarak belirlediğimiz için sanırım 20.03 yerine küsuratı yuvarlıyor. Gerçek değer neyse onu iki basamaklı göstermesini sağlayabilir miyiz? (Olmazsa da çok sorun değil)
Cevapla
#4
Merhaba, tablodaki ilgili alanlar para birimi olduğu için hesaplama sorunu var. 

"yuzdesel_artis_sorgusu_son_aya_gore" isimli sorgunun Sql kodunu aşağıdaki ile değiştirerek deneyiniz.

SELECT son_aya_ait_veriler.malzeme_adi AS [Malzeme Adı], bu_yila_ait_veriler.bu_yil_ortalama AS [Bu Yıl], son_aya_ait_veriler.bu_ay_ortalama AS [Son Ay], Round(Format(([bu_ay_ortalama])-([bu_yil_ortalama]),"Standard")/Format(([bu_yil_ortalama]),"Standard")*100,4) AS Oran, son_aya_ait_veriler.grup
FROM son_aya_ait_veriler INNER JOIN bu_yila_ait_veriler ON son_aya_ait_veriler.malzeme_adi = bu_yila_ait_veriler.malzeme_adi
WHERE (((Round(Format(([bu_ay_ortalama])-([bu_yil_ortalama]),"Standard")/Format(([bu_yil_ortalama]),"Standard")*100,4))>=[Forms].[son_ay_birim_fiyat_artisi_takip_formu].[txoran]));
Cevapla
#5
(16/11/2018, 16:45)ozanakkaya yazdı: Merhaba, tablodaki ilgili alanlar para birimi olduğu için hesaplama sorunu var. 

"yuzdesel_artis_sorgusu_son_aya_gore" isimli sorgunun Sql kodunu aşağıdaki ile değiştirerek deneyiniz.

SELECT son_aya_ait_veriler.malzeme_adi AS [Malzeme Adı], bu_yila_ait_veriler.bu_yil_ortalama AS [Bu Yıl], son_aya_ait_veriler.bu_ay_ortalama AS [Son Ay], Round(Format(([bu_ay_ortalama])-([bu_yil_ortalama]),"Standard")/Format(([bu_yil_ortalama]),"Standard")*100,4) AS Oran, son_aya_ait_veriler.grup
FROM son_aya_ait_veriler INNER JOIN bu_yila_ait_veriler ON son_aya_ait_veriler.malzeme_adi = bu_yila_ait_veriler.malzeme_adi
WHERE (((Round(Format(([bu_ay_ortalama])-([bu_yil_ortalama]),"Standard")/Format(([bu_yil_ortalama]),"Standard")*100,4))>=[Forms].[son_ay_birim_fiyat_artisi_takip_formu].[txoran]));

Çok sağolun, şimdi sorunsuz çalışıyor...
Konu taşınabilir...
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da