Skip to main content

AccessTr.neT


iff formülünü makroya çevirme

iff formülünü makroya çevirme

Çözüldü #13
(29/03/2012, 10:46)kokotuna yazdı: arkadaşlar sorunu ifadelerdeki noktalı virgülleri(;) virgüle(,) e çevirerek çözdüm yalnız bir tek formülde sanırım iç içe iki tane iff olduğu için hata veriyor oda şu;

YASSDÜZELTMESİ: IIf([SPT(N30)]="R";"R";IIf([SPT(N30)]>15;(15+0,5*([SPT(N30)]-15));[SPT(N30)]))

bunu nasıl düzenlemem gerekir?

Dosyanıza bakamadım, ama bu formülün Vba kod olarak açılımını alttaki gibi düzenleyip deneyebilirsiniz.
IF SPT(N30)="R" THEN
YASSDÜZELTMESİ="R"
ELSEIF SPT(N30)>15
YASSDÜZELTMESİ=15+0,5*SPT(N30)-15
ELSE
YASSDÜZELTMESİ=SPT(N30)
END IF
Mesajlarımızı Türkçe yazım kurallarına uygun yazalım.
Emeğe saygı gösterelim, bir teşekkürü çok görmeyelim.
Cevapla
Çözüldü #14
syn maytas verdiğiniz kod ELSEIF SPT(N30)>15 yazısında hata veriyor?
Son Düzenleme: 29/03/2012, 11:36, Düzenleyen: kokotuna.
Cevapla
Çözüldü #15
(29/03/2012, 11:31)kokotuna yazdı: syn maytas verdiğiniz kod ELSEIF SPT(N30)>15 yazısında hata veriyor?
1
2
3
4
5
6
7 IF SPT(N30)="R" THEN
YASSDÜZELTMESİ="R"
ELSEIF SPT(N30)>15 THEN
YASSDÜZELTMESİ=15+0,5*SPT(N30)-15
ELSE
YASSDÜZELTMESİ=SPT(N30)
END IF

Not defterinde yazmıştım kodları, "THEN" unutmuşum.
Mesajlarımızı Türkçe yazım kurallarına uygun yazalım.
Emeğe saygı gösterelim, bir teşekkürü çok görmeyelim.
Cevapla
Çözüldü #16
bende şimdi farketmiştim tam teşekkür ederim.
Cevapla
Çözüldü #17
Sn kokotuna;
.mdb dosyasında dikkat etmediğiniz konular;

Tablolardaki alan adları çok kötü isimlendirilmiş. Çarpma işlemlerinde kullanılan * ( - vs karakterleri kesinlikle kullanmamanız gerekir.
örn: SPT(15) yerine SPT15,
örn: N60 = N ( CER / 60 ) x Nt x Nö x Nç yerine N60x gibi kullanılmalı.

Kesirli sayılar kullanılırken virgül ( , ) değil nokta ( . ) kullanılmalıdır. örn: 1.5

Gelelim IIF kullanımına . Neyi nasıl hesapladığınızı bilmiyorum ama yöntem örn:

Kod:
Private Sub HesapLa()


If SPT30 <> "R" And SPT45 <> "R" Then
    SPTn30 = Val(SPT30) + Val(SPT45)
End If

If YASSDÜZELTMESİ <> "R" Then
    N60x = YASSDÜZELTMESİ * 0.9
End If

If SPTn30 = "R" Then
    YASSDÜZELTMESİ = "R"
Else
    If SPTn30 > 15 Then
        YASSDÜZELTMESİ = 15 + (0.5 * (SPT30 - 15))
    Else
        YASSDÜZELTMESİ = SPT30
    End If
End If

If YASSDÜZELTMESİ <> "R" Then
    N60 = CLng(Nz(YASSDÜZELTMESİ.Value, 0)) * 0.75
End If
End Sub

Private Sub Komut25_Click()
    Call HesapLa
End Sub

Burada her hangi bir denetimin olayına Call Hesapla kullanabilirsiniz.
Saygılar, iyi çalışmalar.
*********
Kod, formül vs bilmek önemlidir ama mantığını yürütebilmek, nerede ve nasıl kullanılacağını bilmek daha önemlidir.
Cevapla
Çözüldü #18
arkadaşlar yardımlarınız sahesinde birazda kendim düzenleme yaparak istediğim sonucu ulaştım ve diğer arkadaşlara yol göstermesi için son kodu veriyorum... Hepinize çok teşekkür ederim.

Private Sub Komut25_Click()
If SPT30 <> "R" And SPT45 <> "R" Then
SPTN30 = Val(SPT30) + Val(SPT45)
Else
SPTN30 = "R"
End If
If SPTN30 = "R" Then
YASSDÜZELTMESİ = " "
ElseIf SPTN30 > 15 Then
YASSDÜZELTMESİ = 15 + 0.5 * (SPTN30 - 15)
Else
YASSDÜZELTMESİ = SPTN30
End If
If SPTN30 = "R" Then
TİJENERJİDÜZELTMESİ = " "
Else
TİJENERJİDÜZELTMESİ = YASSDÜZELTMESİ * 0.75
End If
If SPTN30 = "R" Then
TİJUZUNLUGUDÜZELTMESİ = " "
Else
TİJUZUNLUGUDÜZELTMESİ = TİJENERJİDÜZELTMESİ * 0.9
End If
End Sub
Son Düzenleme: 30/03/2012, 12:44, Düzenleyen: kokotuna.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task