Konu Araçları | Seçenekler: | Gösterim Stili
Tarih
23/05/2009 10:30
Konu Sahibi
elmariachi
Yorumlar
8
Okunma
20533
Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 0/5 - 0 oy

elmariachi

Gümüş Üye
Kullanici Avatari
Gümüş Üye
E.... K....
116
17/04/2009
6
Ankara
Ofis 2013 64 Bit
08/05/2017,04:20
Çözüldü 
Arkadaşlar raporda yaptığım bir hesaplama sonucuna göre başka bir tabodan ara değer hesaplatmak istiyorum. Şöyle ki,

Rapor1 de göreceğiniz gibi
Toplam Sayı: 5060
Sınıf: 3 Sınıf değerleri var.

Şimdi bu değerleri PID isimli tabloda orantılayacağız. 5060 değeri 5000 ve 7500 ün arasında olduğu için bu iki değer alınacak. Sınıfımızda 3 Sınıf olduğu içinde 5000 ve 7500 ün 3 Sınıf karşılığı olan 2,62 ve 2,32 sınıf değerleri alınacak ve hesaplanak. Kısaca, 5060 değerinin 3 sınıf için karşılığını bulmak istiyorum. Bu değerde raporda gösterilecek.

Rapordaki sayı değerine göre hangi aralıkta olduğunu tespit edecek, sonrada, o aralığa ait sınıf değerlerini kullanarak istenen değeri bulmak.

NOT: Verilen örnek için sonuç 2,61 dir.

Selamlar...


Ek Dosyalar
.rar   EnterpolasyonHesabi.rar (Dosya Boyutu: 12,84 KB / İndirme Sayısı: 170)
elmariachi, 17-04-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla

kadirdursun

Gümüş Üye
Kullanici Avatari
Gümüş Üye
K.... D....
1.282
12/01/2009
86
İstanbul
Ofis 2010 32 Bit
21/09/2017,12:03
Çözüldü 
2,61 değerini nasıl hesapladınız? işlemi yazar mısınız?


Cevapla

Seruz

Uzman
Kullanici Avatari
Uzman
S.... U....
1.550
7
30/10/2008
814
Tekirdağ
Ofis XP
13/09/2017,17:08
Çözüldü 
Siz sanırım, 5000 ve 7500'ün değerleri olan 2,62 ve 2,32 'nin Ağırlıklı Ortalamasını hesaplamışsınız ve 2,61 olarak bulmuşsunuz. Ama nasıl hesapladığınızın formülü yazmamışsınız.

Her 2 değeri de bulan örneği ekledim.

Alt (mesela 5000 için 2,62) ve Üst (mesela 7500 için 2,32 ) değerlerini buluyor, ortalaması olan 2,61 in nasıl hesaplanacağının formülünü de sizin yazmanız gerekiyor.

Kod:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Ayrıntı_Format(Cancel As Integer, FormatCount As Integer)
Dim Bulunan_AltDeger, Bulunan_UstDeger
    Select Case Me.SINIF
    Case "1 Sınıf"
        Bulunan_AltDeger = DLookup("[1 Sınıf]", "PID_SORGUSU_ALT", "[YYm/BM (m2)] <=" & Me.TOPSAYI)
        Bulunan_UstDeger = DLookup("[1 Sınıf]", "PID_SORGUSU_UST", "[YYm/BM (m2)] >=" & Me.TOPSAYI)
    Case "2 Sınıf"
        Bulunan_AltDeger = DLookup("[2 Sınıf]", "PID_SORGUSU_ALT", "[YYm/BM (m2)] <=" & Me.TOPSAYI)
        Bulunan_UstDeger = DLookup("[2 Sınıf]", "PID_SORGUSU_UST", "[YYm/BM (m2)] >=" & Me.TOPSAYI)
    Case "3 Sınıf"
        Bulunan_AltDeger = DLookup("[3 Sınıf]", "PID_SORGUSU_ALT", "[YYm/BM (m2)] <=" & Me.TOPSAYI)
        Bulunan_UstDeger = DLookup("[3 Sınıf]", "PID_SORGUSU_UST", "[YYm/BM (m2)] >=" & Me.TOPSAYI)
    Case "4 Sınıf"
        Bulunan_AltDeger = DLookup("[4 Sınıf]", "PID_SORGUSU_ALT", "[YYm/BM (m2)] <=" & Me.TOPSAYI)
        Bulunan_UstDeger = DLookup("[4 Sınıf]", "PID_SORGUSU_UST", "[YYm/BM (m2)] >=" & Me.TOPSAYI)
    Case "5 Sınıf"
        Bulunan_AltDeger = DLookup("[5 Sınıf]", "PID_SORGUSU_ALT", "[YYm/BM (m2)] <=" & Me.TOPSAYI)
        Bulunan_UstDeger = DLookup("[5 Sınıf]", "PID_SORGUSU_UST", "[YYm/BM (m2)] >=" & Me.TOPSAYI)
    End Select
    Me.AltDeger = Bulunan_AltDeger
    Me.UstDeger = Bulunan_UstDeger
End Sub


Ayrıca alan adlarında boşluk kullanmamanızı şiddetle tavsiye ederim.
Bu ve dikkat etmeniz gereken diğer şeyler için aşağıdaki konuyu okuyun.
Yapılmaması gereken ölümcül hatalar



Ek Dosyalar
.rar   EnterpolasyonHesabi_Seruz2.rar (Dosya Boyutu: 13,73 KB / İndirme Sayısı: 43)
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla

elmariachi

Gümüş Üye
Kullanici Avatari
Gümüş Üye
E.... K....
116
17/04/2009
6
Ankara
Ofis 2013 64 Bit
08/05/2017,04:20
Çözüldü 
Sn.seruz, hesap için 5000 ve 7500 değerlerine de ihtiyaç var. Onlarıda form üstünde 2,62 ve 2,32 gibi gösterebilirsek, formülü rakamlar üzerinden yazacağım. Biraz uğraştım ama yapamadım...

Selamlar...


elmariachi, 17-04-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla

Seruz

Uzman
Kullanici Avatari
Uzman
S.... U....
1.550
7
30/10/2008
814
Tekirdağ
Ofis XP
13/09/2017,17:08
Çözüldü 
Aslında bu kadar Dlookup yerine, ADO kullanan bir function yapsak daha güzel olacak ama şimdi vaktim yok. Siz formülü yazın, uygun olursam Pazartesi-Salı function ile çözümü gönderirim.

Yazdığım kodları aşağıdaki şekilde değiştirin.

Kod:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim Bulunan_AltM2, Bulunan_UstM2, Bulunan_AltDeger, Bulunan_UstDeger

    Select Case Me.SINIF
    Case "1 Sınıf"
        Bulunan_AltDeger = DLookup("[1 Sınıf]", "PID_SORGUSU_ALT", "[YYm/BM (m2)] <=" & Me.TOPSAYI)
        Bulunan_UstDeger = DLookup("[1 Sınıf]", "PID_SORGUSU_UST", "[YYm/BM (m2)] >=" & Me.TOPSAYI)
    Case "2 Sınıf"
        Bulunan_AltDeger = DLookup("[2 Sınıf]", "PID_SORGUSU_ALT", "[YYm/BM (m2)] <=" & Me.TOPSAYI)
        Bulunan_UstDeger = DLookup("[2 Sınıf]", "PID_SORGUSU_UST", "[YYm/BM (m2)] >=" & Me.TOPSAYI)
    Case "3 Sınıf"
        Bulunan_AltDeger = DLookup("[3 Sınıf]", "PID_SORGUSU_ALT", "[YYm/BM (m2)] <=" & Me.TOPSAYI)
        Bulunan_UstDeger = DLookup("[3 Sınıf]", "PID_SORGUSU_UST", "[YYm/BM (m2)] >=" & Me.TOPSAYI)
    Case "4 Sınıf"
        Bulunan_AltDeger = DLookup("[4 Sınıf]", "PID_SORGUSU_ALT", "[YYm/BM (m2)] <=" & Me.TOPSAYI)
        Bulunan_UstDeger = DLookup("[4 Sınıf]", "PID_SORGUSU_UST", "[YYm/BM (m2)] >=" & Me.TOPSAYI)
    Case "5 Sınıf"
        Bulunan_AltDeger = DLookup("[5 Sınıf]", "PID_SORGUSU_ALT", "[YYm/BM (m2)] <=" & Me.TOPSAYI)
        Bulunan_UstDeger = DLookup("[5 Sınıf]", "PID_SORGUSU_UST", "[YYm/BM (m2)] >=" & Me.TOPSAYI)
    End Select
    Me.AltDeger = Bulunan_AltDeger
    Me.UstDeger = Bulunan_UstDeger
    Bulunan_AltM2 = DLookup("[YYm/BM (m2)]", "PID_SORGUSU_ALT", "[YYm/BM (m2)] <=" & Me.TOPSAYI)
    Bulunan_UstM2 = DLookup("[YYm/BM (m2)]", "PID_SORGUSU_UST", "[YYm/BM (m2)] >=" & Me.TOPSAYI)
    Me.Deger = 0  'Buraya formülü yazacaksınız


Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla

elmariachi

Gümüş Üye
Kullanici Avatari
Gümüş Üye
E.... K....
116
17/04/2009
6
Ankara
Ofis 2013 64 Bit
08/05/2017,04:20
Çözüldü 
Formül, kodların en altında yazılıdır arkadaşlar. (Rapor1-Ayrıntı-Olay- Biçimlendiğinde)

Verilen örnek değerler için formül;

2,32-2,62
_________ = -0,00012

7500-5000


-0,00012 x (5060-5000) = -0,0072

-0,0072 + 2,62 = 2,61


Yardımlarında dolayı seruz üstada çok teşekkür ederim. +rep

Ama kendisinden bir isteğim daha olacak. PID tablosuna bakınca; [YYm/BM (m2)] isimli alandaki sayıların 500-80000 aralığında olduğunu görürüz. 500 den küçük sayılar için 500 ün SINIF değrlerini, 80000 den büyük sayılar içinde 80000 in SINIF değerlerini almasını istiyorum.

Selamlar...


Ek Dosyalar
.rar   EnterpolasyonHesabi.rar (Dosya Boyutu: 17,99 KB / İndirme Sayısı: 31)
elmariachi, 17-04-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla


Konuyu Okuyanlar: 1 Ziyaretçi

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Tarih Son Yorum
Çözüldü Hesaplama Hk. serkan1985 5 139 22/09/2017, 21:58 biberli33
Çözüldü Kısayol Tuşuyla Liste Kutusu Üzerinden Değer Atama mehmetb84 6 125 18/09/2017, 12:20 mehmetb84
Çözüldü Hesaplama Hatası Musti_55 6 742 01/06/2017, 00:28 ozanakkaya
Çözüldü En Büyük Sözleşme Tarihi Üzerinden Hesaplama ALTANs 2 270 28/04/2017, 17:37 ALTANs
Çözüldü Tarih Kriterine Göre En Yüksek Değer ALTANs 9 660 26/04/2017, 15:36 ALTANs

Türkçe Çeviri: MCTR, Yazılım: MyBB, © 2002-2017 MyBB Group.
Forum use Krzysztof "Supryk" Supryczynski addons.