Enterpolasyon (Ara Değer) Hesaplama
Tarih
23/05/2009 10:30
Konu Sahibi
elmariachi
Yorumlar
8
Okunma
17420
Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 0/5 - 0 oy



elmariachi

Kullanici Avatari
Aktif Üye (Özel)
E.... K....
116
17/04/2009
6
Ankara
Ofis 2013 64 Bit
01/11/2016,22:33
Çö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ı: 159)
elmariachi, 17-04-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla


kadirdursun

Kullanici Avatari
Özel Üye
K.... D....
1.228
12/01/2009
86
İstanbul
Ofis 2010 32 Bit
01/12/2016,16:48
Çö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.544
7
30/10/2008
804
Tekirdağ
Ofis XP
02/12/2016,15:18
Çö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ı: 41)
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla


elmariachi

Kullanici Avatari
Aktif Üye (Özel)
E.... K....
116
17/04/2009
6
Ankara
Ofis 2013 64 Bit
01/11/2016,22:33
Çö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.544
7
30/10/2008
804
Tekirdağ
Ofis XP
02/12/2016,15:18
Çö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

Kullanici Avatari
Aktif Üye (Özel)
E.... K....
116
17/04/2009
6
Ankara
Ofis 2013 64 Bit
01/11/2016,22:33
Çö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ı: 29)
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
  Butonlardaki Hesaplama Kodunu Güncelleme de nasıl yapabiliriz ask200075 6 178 15/11/2016, 12:08 ask200075
  Forma toplu veri ekleyerek değer getirme Serkan Çevik 27 404 31/10/2016, 23:47 ozanakkaya
  bağımsız değişken oluşturma ve bağımsız değişkene değer atama drdeliTR 4 190 09/10/2016, 18:37 atoz112
  Access Sorguda Yaş ve Yaş Grubu Hesaplama accessdelisi 4 197 31/07/2016, 19:56 ozanakkaya
  Ürün koduna göre denetimlere değer getirme IceMan7 20 805 12/07/2016, 16:46 yenginoglu


Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2016 MyBB Group.
DMCA.com Protection Status
© Desing by XSTYLED| Develops by ozanakkaya