Enterpolasyon (Ara Değer) Hesaplama

1 2
25/05/2009, 21:20

Seruz

Rica ederim, sn. elmariachi,

Son isteğinizi bir If - ElseIf kontrolü ekleyerek yapabilirsiniz.

Kod:
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
    
    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)
    
    If Bulunan_UstM2 <= 500 Then
        Me.Deger = Bulunan_UstDeger
        Bulunan_AltDeger = Bulunan_UstDeger
        Bulunan_AltM2 = Bulunan_UstM2
    ElseIf Bulunan_AltM2 >= 80000 Then
        Me.Deger = Bulunan_AltDeger
        Bulunan_UstDeger = Bulunan_AltDeger
        Bulunan_UstM2 = Bulunan_AltM2
    Else
        Me.Deger = ((Bulunan_UstDeger - Bulunan_AltDeger) / (Bulunan_UstM2 - Bulunan_AltM2)) * (Me.TOPSAYI - Bulunan_AltM2) + Bulunan_AltDeger
    End If
    
    Me.AltDeger = Bulunan_AltDeger
    Me.UstDeger = Bulunan_UstDeger
    Me.AltM2 = Bulunan_AltM2
    Me.UstM2 = Bulunan_UstM2
02/06/2009, 00:54

elmariachi

Merhaba arkadaşlar,

Seruz üstadın daha önce yardımcı olduğu bu konuda hiç hesaplamadığım bir sorunla karşılaştım. Şimdiye kadar sorunsuzca çalışıyordu ama ne zaman tamsayı yerine ondalık sayı kullanılması gerekti, rapor hata vermeye başladı.

Kod kısmında Integer tipi veri kullanılmış, sanırım sorun bundan kaynaklanıyor. Single tipi ile denedim ama sorun çözülmedi. Kod bilgim zayıf olduğu içinde maalesef çözemedim.

Bundan önceki mesajdaki dosyayı indirip, Sayılar isimli tablodaki Sayı1 veya Sayı2 alanlarındaki herhangi bir veriyi ondalık sayı ile değiştirip deneyebilirsiniz.

Selamlar...
24/01/2012, 12:33

24ak1989

tsklrrr
1 2