Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

para formatı sorunu

Konu, 'Visual Basic .Net' kısmında Black_trouble tarafından paylaşıldı.

  1. Black_trouble

    Black_trouble Üye

    Kayıt:
    5 Mayıs 2012
    Mesajlar:
    185
    Beğenilen Mesajlar:
    0
    Meslek:
    MUHASEBE
    Şehir:
    İSTANBUL
    Yaptığım programda daha önceden nasıl olduysa çalışıyordu şimdi ise decimal hatası vermeye başladı. KDV hariç aldığımda hiçbir sorun yok fakat dahil aldığımda birleştirme yapıyor ve normal olarakta decimal hatası veriyor. Resim aşağıda bu para formatına kesin bir çözüm varmı para formatımızda TL olmadan çok araştırdım fakat bulamadım.
    kodlar

    Kod:
     Private Sub hesapla()
            Dim toplam As Decimal = msktoplam.Text
            Dim kdv As Decimal = mskkdv.Text
            Dim matrah As Decimal = mskmasraf.Text
            If CheckBox1.Checked = True Then
                toplam = matrah
                kdv = (toplam * CInt(cmdkdv.Text)) / (100 + cmdkdv.Text)
                matrah = toplam - kdv
            ElseIf CheckBox1.Checked = False Then
                mskkdv.Text = (CDec(mskmasraf.Text) * cmdkdv.Text) / 100
                msktoplam.Text = CDec(mskmasraf.Text) + CDec(mskkdv.Text)
            End If
    format()
        End Sub
    Private Sub format()
            On Error Resume Next
            mskkdv.Text = String.Format("{0:N2}", CDbl(mskkdv.Text))
            mskmasraf.Text = String.Format("{0:N2}", CDbl(mskmasraf.Text))
            msktoplam.Text = String.Format("{0:N2}", CDbl(msktoplam.Text))
        End Sub
    
    
     Private Sub mskkdv_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles mskkdv.Validating
            para(mskkdv, sender, e)
        End Sub
    
    
        Private Sub msktoplam_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles msktoplam.Validating
            para(msktoplam, sender, e)
        End Sub
    
    
        Private Sub mskmasraf_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles mskmasraf.Validating
            para(mskmasraf, sender, e)
        End Sub
    
    
    Public Sub para(ByVal kutu As Object, ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs)
            Try
                Dim est As Decimal
                If kutu.Text.Length = 0 Then Exit Sub '' optional
                If Not Decimal.TryParse(kutu.Text.Trim, est) Then
                    MessageBox.ShowMessage("Rakam Giriniz", baslik, MessageBoxIcon.Information, MessageBoxButtons.OK)
                    e.Cancel = True
                    kutu.SelectAll()
                Else
                    kutu.Text = est.ToString("N2")
                End If
            Catch ex As Exception
                MessageBox.ShowMessage(ex.Message, baslik, MessageBoxIcon.Error, MessageBoxButtons.OK)
            End Try
        End Sub
    
    
    
    
    
    


    Eki Görüntüle 11589
     
  2. Cihan Yakar

    Cihan Yakar Daimi Üye

    Kayıt:
    8 Temmuz 2003
    Mesajlar:
    5,888
    Beğenilen Mesajlar:
    1
    Şehir:
    Ankara
    msktoplam.Text in içinde
    neden iki tane , var?
    Ayrıca decimal alana string atamaya çalışıyorsunuz.
     
  3. Black_trouble

    Black_trouble Üye

    Kayıt:
    5 Mayıs 2012
    Mesajlar:
    185
    Beğenilen Mesajlar:
    0
    Meslek:
    MUHASEBE
    Şehir:
    İSTANBUL
    msktoplam içinde ikitane olmasının nedeni matrah ve kdv yi topluyo olması

    O string atamayı nerede yapıyorum. sonuçta hata string hatası birleştirma yapıyo
     
  4. Cihan Yakar

    Cihan Yakar Daimi Üye

    Kayıt:
    8 Temmuz 2003
    Mesajlar:
    5,888
    Beğenilen Mesajlar:
    1
    Şehir:
    Ankara
    iki string'e + operatörünü uygularsanız yan yana birleştirir. Öncesinde sayıya çevirmeniz gerekir. Değişkenler ve tür dönüşümleri ile ilgili konuları gözden geçiriniz.

    t= Decimal.Parse(x) + Decimal.Parse(y)

    gibi...