• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Edge

[Resolvido] Multibanco

6 mensagens neste tópico

Boas , venho-me inaugurar neste fórum com umas duvidas um tanto pó básicas (para vocês pelo menos , eu entrei em programação este ano lectivo  :D).

Estou a realizar um trabalho em que tenho que criar um multibanco com as seguintes funções: depósitos , levantamentos , consulta de saldo e pagamentos.

Neste momento tenho 5 forms para as operações e um module para a variavel saldo

Module Module1
    Public saldo As Double

End Module

Estou a ter problemas com o saldo , depois de ir ao form para verificar o saldo o programa memoriza o ultimo valor que mostrou:

Quando inicio o programa e verifico o saldo diz que tá a 0 , deposito algo e verifico o saldo outra vez e continua a dizer que tá a 0.

Quando inicio o programa e deposito , quando verifico o saldo ele está correcto , mas quando tento depositar outra vez e verifico o saldo ele mostra o ultimo valor.

Quando deposito , verifico e depois faço um levantamento , o programa avisa se o saldo for insuficiente e supostamente subtrai o valor ao saldo se for suficiente mas quando verifico o saldo ele continua na mesma sem ter subtraído o valor.Preciso de ajuda que não mesmo a conseguir identificar o problema  :wallbash: mas acho que está no form de verificação de saldo

verificação de saldo

    Private Sub frmsaldo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Lbsaldo.Text = Val(saldo)
    End Sub
End Class

Form de depósitos

    Private Sub Button0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button0.Click
        lbvalor.Text += "0"
    End Sub

    Private Sub cmbconfirmar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbconfirmar.Click
        Dim resposta As DialogResult

        mensagem = "Deseja depositar " & lbvalor.Text & "?"
        titulo = "Depósitos"
        botoes = MessageBoxButtons.YesNo
        icone = MessageBoxIcon.Question
        resposta = MessageBox.Show(mensagem, titulo, botoes, icone)
        If resposta = Windows.Forms.DialogResult.Yes Then
            saldo = saldo + (lbvalor.Text)
            lbvalor.ResetText()

        End If
    End Sub

Desde já obrigado e a ver como acaba este projecto  :P cumpz

EDIT: Adicionado código Geshi

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pode ser problema de conversão de strings para numéricos, maioria dos problemas.

Em vez de somares logo o valor do saldo com o texto (sim, não me enganei a escrever, o erro está aqui), somas o valor do saldo, com o valor que está representado na caixa de texto. Para este caso, podes usar a função de conversão de Strings para Double, CDbl.

Um exemplo:

If resposta = Windows.Forms.DialogResult.Yes Then
    saldo = saldo + CDbl(lbvalor.Text)
    lbvalor.ResetText()

End If

O esquema é semelhante para outras situações em que levantes/deposites saldo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se fazes isto:

lbvalor.ResetText()

nunca vai ficar com o valor :P

o que tens de fazer é:

Private Sub cmbconfirmar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbconfirmar.Click
        Dim resposta As DialogResult

        mensagem = "Deseja depositar " & lbvalor.Text & "?"
        titulo = "Depósitos"
        botoes = MessageBoxButtons.YesNo
        icone = MessageBoxIcon.Question
        resposta = MessageBox.Show(mensagem, titulo, botoes, icone)
        If resposta = Windows.Forms.DialogResult.Yes Then
            saldo = saldo + CDbl(lbvalor.Text)
            lbvalor.Text = saldo.ToString()

        End If
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se fazes isto:

lbvalor.ResetText()

nunca vai ficar com o valor :P

O que eu entendi é que o saldo vai estar numa variável global saldo (visto que não está declarada no procedimento), e que o lbvalor é apenas para indicar o novo valor que pretende depositar. Logo, faz sentido que o texto do textbox seja reposto (que penso que seja isso que a função resetText faz, nunca a usei).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado a todos pela ajuda , já descobri o problema  :P

Vejam só o que me estava a atrasar o projecto xD

Public Class Frmdepositos
    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Hide()
        frmPrincipal.Show()
    End Sub

    Private Sub Frmdepositos_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        frmPrincipal.Show()
    End Sub

Descobri quando reparei que se usasse as cruzinhas para fechar os forms em vez da picture box o programa funcionava normalmente , foi só alterar o me.hide para me.close e já tá a trabalhar  :cheesygrin:

Mais uma vez obrigado a todos.

0

Partilhar esta mensagem


Link 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