BTW berekenen d.m.v. twee textboxes

Status
Niet open voor verdere reacties.

HandyMan

Gebruiker
Lid geworden
12 mei 2008
Berichten
170
Hallo allemaal,

Ik ben bezig met een applicatie waarmee ik facturen kan aanmaken, en ik zou graag de 21% BTW automatisch laten berekenen.

Ik heb twee textboxes als volgt:

Prijs | |
BTW | |

En nu zou ik graag willen dat als ik bij Prijs 100 invul, er bij BTW 21 komt te staan.

Ik heb al meerdere dingen geprobeerd maar het wilt niet echt lukken.

Kan iemand mij hierbij helpen?
 
Standaard berekening toch?
BTW = Prijs * 0.21

De simpelste manier en zonder enige extra controle is dan het volgende op het Leave event van de Prijs textbox:
Code:
Private Sub txtPrijs_Leave(sender As Object, e As System.EventArgs) Handles txtPrijs.Leave
    If txtPrijs.Text <> vbNullString Then
        txtBTW.Text = txtPrijs.Text * 0.21
    End If
End Sub

(Visual Studio 2010)
 
Laatst bewerkt:
Hoe simpel kan het zijn...

Heeft u misschien ook enig idee hoe ik de uitkomst kan afronden op 2 decimalen, en hoe er standaard een euro-teken voor het getal komt te staan in zowel de Prijs als de BTW textbox?
 
Dit bijvoorbeeld:
Code:
txtBTW.Text = "€ " & Format(txtPrijs.Text * 0.21, "##,##0.00")

Dit maakt het afhankelijk van de landinstelling in Windows door automatisch het juiste valuta teken te gebruiken en . en , (duizend en decimaal scheiding) op de juiste posities. De afronding is 2 posities na de komma:
Code:
txtBTW.Text = Format(txtPrijs.Text * 0.21, "c")

De c staat hier voor het Currency formaat.
Dit kun je dan ook toepassen op de Prijs textbox.

En zeg maar jij hoor ;)
 
Laatst bewerkt:
In het de BTW textbox wordt er inderdaad afgerond op 2 decimalen en verschijnt het euro-teken.

Echter krijg ik dit niet voor elkaar in de prijs textbox... Waar moet ik de code plaatsen om dat te krijgen?
 
Zo bijvoorbeeld:
Code:
Private Sub txtPrijs_Leave(sender As Object, e As System.EventArgs) Handles txtPrijs.Leave
    If txtPrijs.Text <> vbNullString Then
        txtBTW.Text = Format(txtPrijs.Text * 0.21, "c")
        txtPrijs.Text = Format(txtPrijs.Text * 1, "c")
    End If
End Sub
 
Graag gedaan :)
 
1 vreemd ding: Als ik de "factuur" opsla, dan komt het in een column in een datagridview. Echter wordt de BTW kolom automatisch naar boven afgerond? Dus als in de BTW textbox €51,56 staat, da, wordt dat €52.

Iemand enig idee hoe dit kan?
 
Het lijkt erop dat er ergens een Integer van wordt gemaakt en dat is altijd een naar boven afgerond geheel getal.
Probeer het eens met mijn andere voorbeeld, dan is het in ieder geval tekst:
Code:
txtBTW.Text = "€ " & Format(txtPrijs.Text * 0.21, "##,##0.00")
 
Ook met dat voorbeeld wordt er in de datagridview afgerond naar boven.

Het vreemde is dat hij het bij deze code ook doet:

Code:
Private Sub calctotaal_Click(sender As System.Object, e As System.EventArgs) Handles calctotaal.Click

        Dim omzettotaal As Single
        Dim btwtotaal As Single
        For Each dgvRow As DataGridViewRow In FacturenDataGridView.Rows
            If Not dgvRow.IsNewRow Then
                omzettotaal += CInt(dgvRow.Cells(4).Value)
                btwtotaal += CInt(dgvRow.Cells(5).Value)
            End If
        Next
        Me.LabelTotaal.Text = "€" & Format((omzettotaal), "##,##0.00")
        Me.LabelBTW.Text = "€" & Format((btwtotaal), "##,##0.00")
    End Sub

De Labels worden ook afgerond naar boven.

Dus de BTW column in de datagrid, en de labels worden afgerond naar boven...
 
Laatst bewerkt:
Logisch, omdat je er zelf een integer van maakt met bijvoorbeeld omzettotaal += CInt(dgvRow.Cells(4).Value)
 
Stom. Nu veranderd in CDec en hij geeft gewoon weer de decimale uitkomsten.

Nu alleen nog het probleem van de BTW column in de datagridview, want die wordt alsnog afgerond naar boven...
 
Als je al je variabelen als decimal declareert, zul je geen last hebben van die afrondingen.

Zoiets:

[cpp]Dim x As Decimal = 100 * 0.21
Console.WriteLine(x.ToString("C"))[/cpp]
 
Laatst bewerkt:
En hoe krijg ik die code in mijn project? Waar moet ik hem plaatsen etc?
 
Waarom wijzig je die andere Cint niet ook in Cdec?
 
Die had ik al gewijzigd in CDec, maar ook zonder resultaat. Kan het misschien een kolom instelling zijn binnen de datagridview?
 
Wat is de code die je nu hebt dan?
 
Ik heb de database opnieuw aangemaakt, en de datagrid er dus ook opnieuw opgezet en nu doet hij het gewoon...

Misschien een foutje van mij geweest toen ik de database de eerste keer aanmaakte?

Iedereen hartelijk bedankt in ieder geval!
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan