COMO TRABALHAR NUMEROS/CASAS DECIMAIS NO TEXTBOX?
OLà COLEGAS! SOU NOVO NESSA ÃREA DE PROGRAMAÇÃO E ESTOU TENDO PROBLEMAS PARA INCLUIR VALORES DECIMAIS EM UM TEXTBOX. O VALOR ATé ENTRA, SÓ QUE NÃO SALVA NO BD E TRAVA O TEXTBOX. O QUE PODE ESTAR ACONTECENDO? VOU COLOCAR O CÓDIGO PARA VCS AVALIAREM O QUE EU POSSO ESTAR FAZENDO DE ERRADO.
Private Sub TOTAL_HORAS_EXTRASTextBox_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TOTAL_HORAS_EXTRASTextBox.GotFocus
Dim DataHoraFim As DateTime
Dim DataHoraInicio As DateTime
Dim DataHorasTrabalhadas As TimeSpan
Dim HorasTrabalhadas As Decimal
Dim HorasExtras As Decimal
Dim I As Integer
Dim V_PLACA As Object
Dim V_LOCAL As Object
Dim v_decimal As Decimal
[ô]obtem o valor da data/hora fim do condutor no controle DATA_HORA_FIMDateTimePicker
DataHoraFim = Me.DATA_HORA_FIMDateTimePicker.Value
[ô]obtem o valor da data/hora fim do condutor no controle DATA_HORA_INÃCIODateTimePicker
DataHoraInicio = Me.DATA_HORA_INÃCIODateTimePicker.Value
[ô]subtrai a data/hora de inicio do trabalho do condutor da data/hora fim.
DataHorasTrabalhadas = DataHoraFim.Subtract(DataHoraInicio)
[ô]Calcula o número de horas entre as datas
HorasTrabalhadas = DataHorasTrabalhadas.TotalHours
[ô]Calcula o número de horas extras
HorasExtras = HorasTrabalhadas - 9
[ô]Atrabui o valor das horas extras ao textbox
Me.TOTAL_HORAS_EXTRASTextBox.Text = HorasExtras
If Me.PLACATextBox.Text Is DBNull.Value.ToString Then
MessageBox.Show([Ô]O campo PLACA não pode ser nulo. Por favor, digite o nº da placa.[Ô], [Ô]ATENÇÂO!![Ô])
Me.PLACATextBox.Focus()
Else
I = 0
Do
V_PLACA = Me.VEÃCULOSDataGridView.Rows(I).Cells(0).Value
If Me.PLACATextBox.Text = V_PLACA Then
V_LOCAL = Me.VEÃCULOSDataGridView.Rows(I).Cells(4).Value
If V_LOCAL Is [Ô]BRASÃLIA[Ô] Then
Me.TOTAL_HORAS_EXTRASTextBox.Text = (HorasExtras * (22.2))
ElseIf V_LOCAL Is [Ô]RIO COMPRIDO[Ô] Then
Me.TOTAL_HORAS_EXTRASTextBox.Text = (HorasExtras * (16.65))
ElseIf V_LOCAL = [Ô]XERéM[Ô] Then
v_decimal = (HorasExtras * (16.65))
Me.TOTAL_HORAS_EXTRASTextBox.Text = v_decimal.ToString([Ô]0.00[Ô])
Exit Sub
End If
Else
I = I + 1
End If
Loop While (V_PLACA IsNot DBNull.Value Or Nothing)
End If
End Sub
AH! EU ESQUECI DE DIZER QUE ESTOU USANDO O VB 2005 EXPRESS EDITION. MAIS UMA VEZ OBRIGADO!
Private Sub TOTAL_HORAS_EXTRASTextBox_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TOTAL_HORAS_EXTRASTextBox.GotFocus
Dim DataHoraFim As DateTime
Dim DataHoraInicio As DateTime
Dim DataHorasTrabalhadas As TimeSpan
Dim HorasTrabalhadas As Decimal
Dim HorasExtras As Decimal
Dim I As Integer
Dim V_PLACA As Object
Dim V_LOCAL As Object
Dim v_decimal As Decimal
[ô]obtem o valor da data/hora fim do condutor no controle DATA_HORA_FIMDateTimePicker
DataHoraFim = Me.DATA_HORA_FIMDateTimePicker.Value
[ô]obtem o valor da data/hora fim do condutor no controle DATA_HORA_INÃCIODateTimePicker
DataHoraInicio = Me.DATA_HORA_INÃCIODateTimePicker.Value
[ô]subtrai a data/hora de inicio do trabalho do condutor da data/hora fim.
DataHorasTrabalhadas = DataHoraFim.Subtract(DataHoraInicio)
[ô]Calcula o número de horas entre as datas
HorasTrabalhadas = DataHorasTrabalhadas.TotalHours
[ô]Calcula o número de horas extras
HorasExtras = HorasTrabalhadas - 9
[ô]Atrabui o valor das horas extras ao textbox
Me.TOTAL_HORAS_EXTRASTextBox.Text = HorasExtras
If Me.PLACATextBox.Text Is DBNull.Value.ToString Then
MessageBox.Show([Ô]O campo PLACA não pode ser nulo. Por favor, digite o nº da placa.[Ô], [Ô]ATENÇÂO!![Ô])
Me.PLACATextBox.Focus()
Else
I = 0
Do
V_PLACA = Me.VEÃCULOSDataGridView.Rows(I).Cells(0).Value
If Me.PLACATextBox.Text = V_PLACA Then
V_LOCAL = Me.VEÃCULOSDataGridView.Rows(I).Cells(4).Value
If V_LOCAL Is [Ô]BRASÃLIA[Ô] Then
Me.TOTAL_HORAS_EXTRASTextBox.Text = (HorasExtras * (22.2))
ElseIf V_LOCAL Is [Ô]RIO COMPRIDO[Ô] Then
Me.TOTAL_HORAS_EXTRASTextBox.Text = (HorasExtras * (16.65))
ElseIf V_LOCAL = [Ô]XERéM[Ô] Then
v_decimal = (HorasExtras * (16.65))
Me.TOTAL_HORAS_EXTRASTextBox.Text = v_decimal.ToString([Ô]0.00[Ô])
Exit Sub
End If
Else
I = I + 1
End If
Loop While (V_PLACA IsNot DBNull.Value Or Nothing)
End If
End Sub
AH! EU ESQUECI DE DIZER QUE ESTOU USANDO O VB 2005 EXPRESS EDITION. MAIS UMA VEZ OBRIGADO!
Geralmente é formato no Banco.
Coloque o campo como Double ou Float
Coloque o campo como Double ou Float
CARO NATODS
Seu código talves possa ter outros erros quer não foi tratado pois nessa sua TEXTBOX não esta tratando informações para o SALVAR em seu banco
Utilize o [ô]DEBUGADOR[ô] do Visual Studio para saber o erro onde acontece............
Iserir um BreakPoint (F9) no seu código ou evento que gostaria de acompanha até onde ocorre o erro e passe a MENSSAGEM DE ERRO para podermos analizar
com o local correto do ERRO podemos sugerir instruções de tratamento e mudança no código...........
O TRATAMENTO BÃSICO PARA ESSE TIPO DE VARIÃVEL
Dim Valor As Double = 20.5
TextBox1.Text = String.Format([Ô]{0:N2}[Ô], Valor)
[ô]resultado 20,50
No caso trata de valores, ele tem que retornar em forma decimal, igual dinheiro, não podendo arredondar o valor;
Dim valor as Decimal
valor = Math.Round((Textbox1.Text) - 0.005, 2)
Textbox2.Text = Format(valor, [Ô]N2[Ô])
==========================================================================================
textBox.Text = string.Format([Ô]{0:N2}[Ô], variavel)
No caso apresentado Onde o numero dois (2) representa a quantidade de casas decimais.
==========================================================================================
Boa Sorte
Seu código talves possa ter outros erros quer não foi tratado pois nessa sua TEXTBOX não esta tratando informações para o SALVAR em seu banco
Utilize o [ô]DEBUGADOR[ô] do Visual Studio para saber o erro onde acontece............
Iserir um BreakPoint (F9) no seu código ou evento que gostaria de acompanha até onde ocorre o erro e passe a MENSSAGEM DE ERRO para podermos analizar
com o local correto do ERRO podemos sugerir instruções de tratamento e mudança no código...........
O TRATAMENTO BÃSICO PARA ESSE TIPO DE VARIÃVEL
Dim Valor As Double = 20.5
TextBox1.Text = String.Format([Ô]{0:N2}[Ô], Valor)
[ô]resultado 20,50
No caso trata de valores, ele tem que retornar em forma decimal, igual dinheiro, não podendo arredondar o valor;
Dim valor as Decimal
valor = Math.Round((Textbox1.Text) - 0.005, 2)
Textbox2.Text = Format(valor, [Ô]N2[Ô])
==========================================================================================
textBox.Text = string.Format([Ô]{0:N2}[Ô], variavel)
No caso apresentado Onde o numero dois (2) representa a quantidade de casas decimais.
==========================================================================================
Boa Sorte
Tópico encerrado , respostas não são mais permitidas