AccessTr.neT

Tam Versiyon: iff formülünü makroya çevirme
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2 3 4
(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
syn maytas verdiğiniz kod ELSEIF SPT(N30)>15 yazısında hata veriyor?
(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.
bende şimdi farketmiştim tam teşekkür ederim.
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.
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
Sayfalar: 1 2 3 4