Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

jscoralick

Sistema dá sempre a mesma mensagem

Mensagens Recomendadas

jscoralick

Bom-dia!

Para fins de treinamento, montei um form contendo uma planilha de notas acadêmicas, cfe. códigos abaixo:

Public Class Form1

    Private Sub Textbox24_LostFocus(sender As Object, e As System.EventArgs) Handles TextBox24.LostFocus

        Dim mda As Double
        mda = (Val(TextBox1.Text) + Val(TextBox16.Text) + Val(TextBox24.Text)) / 3

        If mda >= 7 Then

            Button1.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        Else

            Button1.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        End If

    End Sub

    Private Sub TextBox23_LostFocus(sender As Object, e As System.EventArgs) Handles TextBox23.LostFocus

        Dim mda As Double
        mda = (Val(TextBox2.Text) + Val(TextBox15.Text) + Val(TextBox23.Text)) / 3

        If mda >= 7 Then

            Button2.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        Else

            Button2.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        End If

    End Sub

    Private Sub TextBox22_LostFocus(sender As Object, e As System.EventArgs) Handles TextBox22.LostFocus

        Dim mda As Double
        mda = (Val(TextBox3.Text) + Val(TextBox14.Text) + Val(TextBox22.Text)) / 3

        If mda >= 7 Then

            Button3.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        Else

            Button3.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        End If

    End Sub

    Private Sub TextBox21_LostFocus(sender As Object, e As System.EventArgs) Handles TextBox21.LostFocus

        Dim mda As Double
        mda = (Val(TextBox4.Text) + Val(TextBox13.Text) + Val(TextBox21.Text)) / 3

        If mda >= 7 Then

            Button4.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        Else

            Button4.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        End If

    End Sub

    Private Sub TextBox20_LostFocus(sender As Object, e As System.EventArgs) Handles TextBox20.LostFocus

        Dim mda As Double
        mda = (Val(TextBox5.Text) + Val(TextBox12.Text) + Val(TextBox20.Text)) / 3

        If mda >= 7 Then

            Button5.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        Else

            Button5.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        End If

    End Sub

    Private Sub TextBox19_LostFocus(sender As Object, e As System.EventArgs) Handles TextBox19.LostFocus

        Dim mda As Double
        mda = (Val(TextBox6.Text) + Val(TextBox11.Text) + Val(TextBox19.Text)) / 3

        If mda >= 7 Then

            Button6.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        Else

            Button6.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        End If

    End Sub

    Private Sub TextBox18_LostFocus(sender As Object, e As System.EventArgs) Handles TextBox18.LostFocus

        Dim mda As Double
        mda = (Val(TextBox7.Text) + Val(TextBox10.Text) + Val(TextBox18.Text)) / 3

        If mda >= 7 Then

            Button7.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        Else

            Button7.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        End If

    End Sub

    Private Sub TextBox17_LostFocus(sender As Object, e As System.EventArgs) Handles TextBox17.LostFocus

        Dim mda As Double
        mda = (Val(TextBox8.Text) + Val(TextBox9.Text) + Val(TextBox17.Text)) / 3

        If mda >= 7 Then

            Button8.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        Else

            Button8.Text = "Média " & Convert.ToString(Math.Round(mda, 2))

        End If

    End Sub

    Private Sub Button8_LostFocus(sender As Object, e As System.EventArgs) Handles Button8.LostFocus

        Dim mda As Double
        mda = (Val(Button1.Text) + Val(Button2.Text) + Val(Button3.Text) + Val(Button4.Text) + Val(Button5.Text) + Val(Button6.Text) + Val(Button7.Text) + Val(Button8.Text)) / 8

        If mda >= 7 Then

            Button9.Text = "Aprovado"

        Else

            Button9.Text = "Reprovado"

        End If

    End Sub

End Class

O sistema calcula corretamente todas as médias iniciais. Mas, quando ele executa o último grupo de códigos, retorna sempre a palavra "Reprovado", mesmo se a média final for maior ou igual a 7 (o que deveria retornar "Aprovado").

Se alguém puder me ajudar, agradeço desde já.

João Claudio Scoralick

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caça

O teu ultimo sub é disparado LostFocus do botão e nos restantes é no evento LostFocus das TextBoxs, não te enganaste?


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Andrepereira9

O teu ultimo sub é disparado LostFocus do botão e nos restantes é no evento LostFocus das TextBoxs, não te enganaste?

Acho que o problema, é porque está a ir buscar o valor ao texto dos buttons. e como não tem só o valor da média, também tem "média" escrito, ele assume o valor como 0.

Porque é que não vais guardando os valores numa variável, à medida que vais fazendo as médias? E depois no fim, quando verificas se está "Aprovado" ou "Reprovado", é que divides o valor dessa variável por 8.


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jscoralick

Olá! Pedro e André.

Vou tentar fazer o que vcs sugeriram. Depois, retorno dizendo o que ocorreu.

Obrigado a vcs e um abraço.

João Claudio Scoralick

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jscoralick

Deu certo! Criei as variáveis necessárias, cfe códigos abaixo:

Public Class Form1

    Dim media1 As Double
    Dim media2 As Double
    Dim media3 As Double
    Dim media4 As Double
    Dim media5 As Double
    Dim media6 As Double
    Dim media7 As Double
    Dim media8 As Double
    Dim total As Double

    Private Sub Textbox24_LostFocus(sender As Object, e As System.EventArgs) Handles TextBox24.LostFocus

        media1 = (Val(TextBox1.Text) + Val(TextBox16.Text) + Val(TextBox24.Text)) / 3

        If media1 >= 7 Then

            TextBoxBase.Text = "Média " & Convert.ToString(Math.Round(media1, 2))

        Else

            TextBoxBase.Text = "Média " & Convert.ToString(Math.Round(media1, 2))

        End If

    End Sub
          '
          '
          '

Private Sub TextBoxFinal8_LostFocus(sender As Object, e As System.EventArgs) Handles TextBoxFinal8.LostFocus

        total = (media1 + media2 + media3 + media4 + media5 + media6 + media7 + media8) / 8

        If total >= 7 Then

            ForeColor = Color.Blue
            TextBox26.Text = "Média Final:  " + Convert.ToString(Math.Round(total, 2)) + "  ( Aprovado )"

        Else

            ForeColor = Color.Red
            TextBox26.Text = "Média Final:  " + Convert.ToString(Math.Round(total, 2)) + "  ( Reprovado )"

        End If

    End Sub

End Class

A vocês, Pedro e André, o meu muito obrigado.

João Claudio Scoralick

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.