Form üzerinde Hesaplama

1 2
16/12/2015, 15:53

fascioğlu

Sayın Hocalarımi

Ekteki çalışmamda hesaplama sorununu çözemedim,
Şöyleki F_SERVİSHESABI formunda yer alan mtn_Toplam alanı ile F_TEKNİKSERVİS formunda bulunan mtn_servistutarı alanındaki verileri F_TEKNİKSERVİS formunda bulunan mtn_hesaptoplamı alanında toplayabiliyorum buraya kadar sıkıntı yok,
Ancak F_SERVİSHESABI na veri girmeden servistutarını mtn_hesaptoplamı alanına getiremiyorum kısacası illede F_SERVİSHESABI na veri girmem gerekiyor burada yapmak istediğim ister bağımsız ister birlikte veri girildiğinde hesaptoplamını alabileyim,
ikinci sorun ise F_SERVİSHESABI formunda  seç sil yaptığımda hesaptoplamından silinen tutarı düşüyor ancak kalan kısmından düşmüyor.
Bu her iki sıkıntının giderilmesi konusunda yardımcı olabilirseniz sevinirim.
Saygılarımla
İyi çalışmalar.
16/12/2015, 17:13

atoz112

Sayın fascioglu,

1)       
Alıntı:...yapmak istediğim ister bağımsız ister birlikte veri girildiğinde hesaptoplamını alabileyim...

ifadenize yönelik olarak;

F_TEKNİKSERVİS adlı formun Geçerli Olduğunda olay yordamındaki End If ifadesinden hemen sonra
Kod:
Me.mtn_hesaptoplami = Nz(Me.mtn_servistutari + DSum("[TUTARİ]", "T_SERVİSHESABİ", "[İSLEMNO] = " & Me.İSLEMNO), 0)
Me.Kal = Me.mtn_hesaptoplami - Me.ODEMETOPLAMİ
Me.Refresh

kod satırlarını dahil ediniz.

2)       
Alıntı:...F_SERVİSHESABI formunda  seç sil yaptığımda hesaptoplamından silinen tutarı düşüyor ancak kalan kısmından düşmüyor...

ifadenize yönelik olarak;

F_SERVİSHESABİ adlı formun üzerindeki SEÇ SİL ifadesi ile tanımlı butonun Tıklandığında olay yordamındaki kodları
Kod:
On Error Resume Next
Dim degisenTutar As Integer
DoCmd.SetWarnings False
If MsgBox("Girilen Tutarı Silmek İstediğinizden Eminmisiniz..?", vbCritical + vbYesNo) = vbYes Then
 
DoCmd.RunSQL "DELETE İSLEMNO FROM T_SERVİSHESABİ WHERE MUSID = " & Me.MUSID & ";"
 
DoCmd.SetWarnings True
Me.Requery
 
If Me.mtn_toplam = "" Or IsNull(Me.mtn_toplam) Then
degisenTutar = 0
Else
degisenTutar = Me.mtn_toplam
End If
 
Forms![F_TEKNİKSERVİS]![mtn_hesaptoplami] = degisenTutar
Forms![F_TEKNİKSERVİS]![Kal] = Forms![F_TEKNİKSERVİS]![mtn_hesaptoplami] - Me.mtn_toplam
'Forms![F_TEKNİKSRVİS].Requery
Forms![F_TEKNİKSERVİS].Requery
 
Else
Exit Sub
End If

ile değiştiriniz.Bu kodlar içerisinde yeri gelmişken fark edilen bir hususu da belirtmekte fayda var kansındayım.

Hem formlar üzerinde veya tablolarda eğer alan adları veya denetim adlarında herhangi bir olası değişiklik veya yeniden tanımlama söz konusu ise bunu akabinde kodlarda da kontrol ederek düzeltmeye özen gösteriniz hem de alışkanlık edinmek üzere lütfen kod sayfasında üst menüden DEBUG-COMPILE yapmak sureti ile kodlardaki kontrolleri incelemekle birlikte olası düzenlemeleri de gerçekleştirmeye özen gösteriniz.

ÖRNEĞİN;yukarıdaki en son eklenen kodlar içerisinde
Kod:
Forms![F_TEKNİKSRVİS].Requery
kod satırında form adı tanımlaması hatalı olduğu için istenen işlemi sağlayamayacaktır.bilginize…iyi çalışmalar,saygılar.
16/12/2015, 17:51

fascioğlu

Sayın Atoz hocam,
Önerileriniz doğrultusunda yapmış olduğum uygulamada;
F_SERVİSHESABI'na 1 adet anakart,1 adet işlemci girişi yaptım =512 TL,servis ücreti 40 tl.olamk üzere 552 tl.Şimdi burada dikkatinizi çekmek istediğim konu şu iŞLEMCİDEN VAZGEÇİP sildiğimizde
Hesaptoplamı 268 tl yerine 228 tl yani servistutarını hesaba katmıyor,ve kalan kısmında veri 0 olarak gözüküyor.
Test etme imkanınız varsa bir deneyin isterseniz.
Saygılarımla.
17/12/2015, 11:51

atoz112

sayın fascioglu,

hitabınız nezdinde cevap hakkı mahiyetinde açıklamanızı yanıtlamak maksadı ile;
2.mesajda yer alan anlatımların yer aldığı ve hazırlanmış örnek uygulama EK'te bulunmaktadır.

denemeler nezdinde,
bahsettiğiniz sonuçlar değil,aksine açıklamalarda bulunan olumlu sonuçlar ile geçerli olduğu görülecektir.inceleyebilirsiniz.

bilginize...iyi çalışmalar,saygılar.


17/12/2015, 14:28

fascioğlu

Muhterem Atoz112 hocam,
Eklediğiniz Resimde de görüleceği üzere,Servishesabı bölümünde yer alan  verileri seç-sil yaparak servishesabı bölümünü sıfırlayın ve hesaptoplamı alanında servis ücreti tutarı olan 40 tl yi göremeyeceksiniz.Yeniden 40 tlyi yazmak isteseniz dahi hesap alanına aktarmayacaktır.
Saygılarımla.
İyi çalışmalar.
17/12/2015, 14:43

ozanakkaya

Buton kodunu aşağıdaki ile değiştiriniz.

Private Sub SIL_Click()

'On Error Resume Next
If MsgBox("Girilen Tutarı Silmek İstediğinizden Eminmisiniz..?", vbCritical + vbYesNo) = vbYes Then

DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE İSLEMNO FROM T_SERVİSHESABİ WHERE MUSID = " & Me.MUSID & ";"
DoCmd.SetWarnings True
Me.Requery

Forms![F_TEKNİKSERVİS]![mtn_hesaptoplami] = Forms![F_TEKNİKSERVİS]![mtn_servistutari] + Nz(DSum("[TUTARİ]", "T_SERVİSHESABİ", "[İSLEMNO] = " & Nz(Me.İSLEMNO, 0)), 0)
Forms![F_TEKNİKSERVİS]![Kal] = Forms![F_TEKNİKSERVİS]![mtn_hesaptoplami] - Forms![F_TEKNİKSERVİS]![ODEMETOPLAMİ]

Else
Exit Sub
End If
End Sub
1 2