Jump to content
Ordnael

Ajuda em programa de finanças

Recommended Posts

Ordnael

Boas, preciso de ajuda com um programa que estou a fazer.

Colocando o nome de um trabalhador e o salário bruto que recebe, o programa dá-me o valor do salário líquido que ele recebe e quando desconta para o IRS e para a Segurança Social.

O código em sí, não aparenta ter nenhum erro, o problema é quando corro o programa e coloco o nome e valor do salário. Depois "crasha".

O meu código é este:

Public Class Form1

Dim ordenado, descontoirs, descontoseg, nome As Single

Dim liquido As Short

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

ordenado = txtSalarioBr.Text

descontoirs = txtDescIRS.Text

descontoseg = txtDescSeg.Text

liquido = txtSalarioLiq.Text

If ordenado >= 500 < 749 Then

descontoirs = (ordenado - 0.0425) * 100

ElseIf ordenado >= 750 < 1249 Then

descontoirs = (ordenado - 0.1234) * 100

ElseIf ordenado >= 1250 < 2499 Then

descontoirs = (ordenado - 0.22) * 100

ElseIf ordenado >= 2500 < 3499 Then

descontoirs = (ordenado - 0.27) * 100

ElseIf ordenado >= 3500 < 5000 Then

descontoirs = (ordenado - 0.35) * 100

End If

descontoseg = (ordenado - 0.135) * 100

liquido = descontoirs - descontoseg

txtSalarioLiq.Text = Str(liquido)

concatenada.Text = Str(nome & " " & "Recebe:")

End Sub

End Class

A janela é esta:

janela.jpg

O Erro é este:

erro.jpg

Alguém me pode ajudar?

Share this post


Link to post
Share on other sites
vikcch

declaraste o nome como single?

falta-te os AND's nos IF's

Edited by vikcch

Share this post


Link to post
Share on other sites
Ordnael

coloca no inicio do codigo Option Strict On e Option Explicit On

vai-te poupar algumas dores de cabeça mais tarde

ex:

Option Explicit On
Option Strict On

Public Class Form1
'....
End Class

Se coloco isto aparecem-me 16 erros. Como faço isso? (ainda nao sou muito bom nisto)

declaraste o nome como single?

falta-te os AND's nos IF's

O nome pode ser single porque é mesmo só o texto do nome não tem nada mais complexo.

Se colocar os AND acontece isto:

erros.jpg

Share this post


Link to post
Share on other sites
vikcch

single é para valores numericos, para texto usa-se string

If ordenado >= 500 < 749 Then

isto não dá o resultado que esperas... tinhas que fazer:

If ordenado >= 500 and ordenado < 749 Then

fiz este code, tenta perceber o que foi feito:

Option Explicit On
Option Strict On

Public Class Form1

   Private Function getDescontoIRS(ByVal salarioBruto As Double) As Double

    If salarioBruto < 749 Then
	    Return salarioBruto * 0.0425
    ElseIf salarioBruto < 1249 Then
	    Return salarioBruto * 0.1234
    ElseIf salarioBruto < 2499 Then
	    Return salarioBruto * 0.22
    ElseIf salarioBruto < 3499 Then
	    Return salarioBruto * 0.27
    Else
	    Return salarioBruto * 0.35
    End If

   End Function

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim salarioBruto As Double
    ' Tenta converter o valor da textbox "txtSalarioBr" para a var "salarioBruto"
    If Double.TryParse(txtSalarioBr.Text, salarioBruto) Then

	    Dim descontoIRS As Double = getDescontoIRS(salarioBruto)
	    MessageBox.Show(descontoIRS.ToString)

	    Dim descontoSeg As Double = salarioBruto * 0.135

	    Dim salarioLiquido As Double = salarioBruto - descontoIRS - descontoSeg

	    'salarioLiquido.ToString("C") -> tranforma em valor monetario
	    MessageBox.Show("Nome: " & txtNome.Text & vbNewLine & _
					    "Valor: " & salarioLiquido.ToString("C"), "Salario Liquido", MessageBoxButtons.OK, MessageBoxIcon.Information)

    Else
	    MessageBox.Show("Salario Bruto mal introduzindo!", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End If

   End Sub

End Class

Share this post


Link to post
Share on other sites
vikcch

tem lá os links para o site da microsoft no post onde disse isso...

Option Explicit On -> obriga as variaveis usadas a serem declaradas...

Option Strict On -> não permite troca de valores entre variaveis de diferentes tipos sem serem convertidas primeiro...

Share this post


Link to post
Share on other sites
Ordnael

Pois mas nao consigo meter isso, coloco isso no inicio e fica tudo a azul e dá-me erros.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.