Ir para conteúdo
Fórum Script Brasil
  • 0

Mensagem de erro - A conversão da seqüência de caracteres '' n


JMRF

Pergunta

Boa noite,

Me indicaram os códigos abaixo:

Private Sub txtValor_materiais_produtos_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtValor_materiais_produtos.TextChanged
txtValor_materiais_produtos.Text = FormatCurrency(txtValor_materiais_produtos.Text, 2)
End Sub


Private Sub txtValor_unitario_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtValor_unitario.TextChanged
txtValor_unitario.Text = FormatCurrency(txtValor_unitario.Text, 2)
End Sub


Private Sub txtValor_estoque_atual_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtValor_estoque_atual.TextChanged
txtValor_estoque_atual.Text = FormatCurrency(txtValor_estoque_atual.Text, 2)
End Sub

isso para que nos campos:

- Valor mercadorias produtos

- Valor unitário e

- Valor estoque atual ficasse configurado para Moeda

R$1.025,32, por exemplo.

Realmente funciona, só que quando eu tento incluir um novo cadastro me dá a seguinte mensagem:

A conversão da seqüência de caracteres '' no tipo 'Double' não é válida.

Creio que é porque quando clico no botão incluir todos os campos do Form ficam vazios, para receberem os novos dados, e então já dá de cara o erro, porque os campos estão vazios:

-Valor materiais produtos

-Valor unitário

-Valor estoque atual

Como poderei resolver esse problema.

Podem me ajudar.

Muito obrigado

JMRF

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

Exatamente... o erro está relacionado ao não preenchimento dos valores. Você deve tratar isso, de duas formas:

1. Carregando 0,00 para os campos quando iniciar o Form;

2. Quando for Salvar:

a. Informar o usuário que ele deve preencher os dados, não concluindo a gravação no banco;

b. Substituir os campos não digitados por zero para que possa ser inserido no banco.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite,

xistyle,

coloquei no meu projeto o seguinte código:

Private

Sub txtValor_unitario_saidas_Leave(ByVal sender AsObject, ByVal e As System.EventArgs) Handles txtValor_unitario_saidas.Leave

If txtValor_unitario_saidas.Text = String.Empty Then

txtValor_unitario_saidas.Text = 0

Else

txtValor_unitario_saidas.Text = FormatCurrency(txtValor_unitario_saidas.Text, 2, TriState.True, TriState.True, _

TriState.True).Replace(

"R$", "").Trim

EndIf

Ele retira o "R$" dos valores ficando somente os valores. Tipo: 3.025,30 ao invés de R$3.025,30.

Só que acontece que quando clico em outra linha do DBGrid e volto a selecionar a linha onde inseri o novo cadastro ele aparece assim;

3.025,3 se eu cadastrar 3,025,00 aparece só 3.025 mas no BD Access está gravado R$3.025,30.

Ajuda a resolver esse problema, por favor.

Estou batalhando desde dezembro pra tentar resolver, e tudo que acho em pesquisas e mais pesquisas na net nada resolve. Pra quem sabe é mole, mas para mim, veja bem desde dezembro e ninguém me dá uma dica para resolver, estou postando em 4 foruns e nada de solução. O que poderá estar acontecendo.

Dá pra dar uma luz?

Se eu deixo incluir o R$, (ou seja não insiro o código acima) quando vou inserir um novo cadastro dá uma mensagem:

Por exemplo:

Mensagem:

A conversão da seqüência de caracteres '' no tipo 'Double' não é válida

ou seja após verificação conclui que não posso deixar no Textbox o R$ deverá ficar somente o valor numérico. Se eu deixo no Textbox R$3.025,30 o valor fica maravilha, mas não consigo inserir um novo cadastro. Esse R$3.025,30 inseri direto no BD para teste não usei o programa que estou desenvolvendo.

Usando o Incluir, tão logo digito o valor no Textbox já aparece o R$ e automáticamente dá a mensagem:

A conversão da seqüência de caracteres '' no tipo 'Double' não é válida

Uso o VB .net 2008 e BD Access.

Obrigado

JMRF

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, você vai ter duas soluções, pelo que entendi seu problema:

a. Mudar o campo do seu banco de numérico para string;

b. Formatar as casas decimais da sua grid.

Quando você substitui o R$ por nada, esse valor é salvo no banco? Como você carrega sua grid? Pois pelo que tu explicou, a grid está carregando os dados do TextBox, aparentemente. Vamos focar na solução que lhe passei, formatando os dados.

Esse problema de carregar e exibir 1234,5 ao invés de 1234,50 é relacionado à formatação de casas decimais.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde,

Xistyle,

Quandovocê diz:

a. Mudar o campo do seu banco de numérico para string;

Você quer dizer que no BD Access eu deverei mudar de Moeda para texto? É isswo? (Desculpa-me mas sou bem inexperiente no Assunto, apesar de tentar muito e pesquisar na internet)

b. Formatar as casas decimais da sua grid.

Quando você substitui o R$ por nada, esse valor é salvo no banco? Como você carrega sua grid? Pois pelo que tu explicou, a grid está carregando os dados do TextBox, aparentemente. Vamos focar na solução que lhe passei, formatando os dados.

Esse problema de carregar e exibir 1234,5 ao invés de 1234,50 é relacionado à formatação de casas decimais.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde,

Xistyle,

Quando você diz:

a. Mudar o campo do seu banco de numérico para string;

Você quer dizer que no BD Access eu deverei mudar de Moeda para texto? É isswo? (Desculpa-me mas sou bem inexperiente no Assunto, apesar de tentar muito e pesquisar na internet)

b. Formatar as casas decimais da sua grid.

Quanto à Grid, já estão formatadas as colunas que contêm valor para C2 (ou seja Moeda com duas casas decimais)

Quado substituo o R$ por nada no BD Access fica gravado certíssiomo: R$1.232,20, R$255,00 etc.

Se entendi sua pergunta, a minha grid é carregada assim:

Private Sub carrega_saidas_Estoque()

Dim cs As String = My.Settings.EstoqueConnectionString

Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = cs

conect.Open()

Dim selcom As New OleDb.OleDbCommand

selcom.Connection = conect

selcom.CommandText = " SELECT * FROM tb_estoque ORDER BY materiais_produtos"

Dim vleitor As OleDb.OleDbDataReader

vleitor = selcom.ExecuteReader()

Dim c As Integer = 0

dgvestoque.Rows.Clear()

Do While vleitor.Read

c = c + 1

ReDim Preserve acod_ordem©

ReDim Preserve acod_materiais_produtos©

ReDim Preserve amateriais_produtos©

ReDim Preserve aunidade©

ReDim Preserve arequisicoes©

ReDim Preserve adata_de_saida©

ReDim Preserve asaidas©

ReDim Preserve avalor_unitario_saidas©

ReDim Preserve adepartamento_requisitante©

ReDim Preserve asupervisao_requisitante©

ReDim Preserve avalor_materiais_produtos_saidas©

ReDim Preserve aestoque_minimo©

ReDim Preserve aestoque_atual©

ReDim Preserve avalor_estoque_atual©

acod_ordem© = vleitor("cod_ordem")

acod_materiais_produtos© = vleitor("cod_materiais_produtos")

amateriais_produtos© = vleitor("materiais_produtos")

aunidade© = vleitor("unidade")

arequisicoes© = vleitor("requisicoes")

adata_de_saida© = vleitor("data_de_saida")

asaidas© = vleitor("saidas")

avalor_unitario_saidas© = vleitor("valor_unitario_saidas")

adepartamento_requisitante© = vleitor("departamento_requisitante")

asupervisao_requisitante© = vleitor("supervisao_requisitante")

avalor_materiais_produtos_saidas© = vleitor("valor_materiais_produtos_saidas")

aestoque_minimo© = vleitor("estoque_minimo")

If IsDBNull(vleitor("estoque_minimo")) Then

aestoque_minimo© = 0

Else

aestoque_minimo© = vleitor("estoque_minimo")

End If

If IsDBNull(vleitor("estoque_atual")) Then

aestoque_atual© = 0

Else

aestoque_atual© = vleitor("estoque_atual")

End If

If IsDBNull(vleitor("valor_estoque_atual")) Then

avalor_estoque_atual© = 0

Else

avalor_estoque_atual© = vleitor("valor_estoque_atual")

End If

dgvestoque.Rows.Add(acod_ordem©, acod_materiais_produtos©, amateriais_produtos©, aunidade©, arequisicoes©, adata_de_saida©, asaidas©, avalor_unitario_saidas©, adepartamento_requisitante©, asupervisao_requisitante©, avalor_materiais_produtos_saidas©, aestoque_minimo©, aestoque_atual©, avalor_estoque_atual©)

Loop

conect.Close()

End Sub

Obrigado

JMRF

Editado por JMRF
Link para o comentário
Compartilhar em outros sites

  • 0

No item A, significa mudar o tipo de dados do seu campo. Mudando seu valor pra texto, quando você inserir 1234,50, vai aparecer 1234,50. Ao contrário do numérico/moeda, quando você tem 1234,50 ele formata automaticamente para 1234,5.

Mas isso não é uma boa prática de programação.

Normalmente para esses casos são feitas as formatações necessárias, que seria o item B.

Link para o comentário
Compartilhar em outros sites

  • 0

Xistyle, o que pode então estar acontecendo? Porque eu preciso depois desses resultados parsa multiplicar.

Exemplo: 10 lapis x R$1,25 = R$12,50 ou seja tem que possibilitar esse tipo de operação. Também se eu wquiser somar os valores das requisições dos materiais e totalizar temho que ter essa possibilidade e como texto acredito que não tem como.

Obrigado

JMRF

Link para o comentário
Compartilhar em outros sites

  • 0

Agora que vi seu código editado no post anterior. Então, seu código carrega os valores provenientes do SELECT. Mas a grid não está fazendo a formatação do valor, com duas casas decimais.

Supondo que o valor que você queira formatar esteja nessa linha:

avalor_unitario_saidas© = vleitor("valor_unitario_saidas")

Se você aplicar aquele FormatCurrency (sem o Replace) nessa linha não funcionaria o carregamento (levando em consideração que a gravação está correta)?

Editado por Xistyle
Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite,

Xistyle,

Não funcionou não, a dica que você me sugeriu.

Tomei a liberdade de colocar o código completo do meu Form :

Saídas de Estoque

Quem sabe você analise e descobre algo.

Public Class Saidas_Estoque

Dim acod_ordem(1) As String

Dim acod_materiais_produtos(1) As Integer

Dim avalor_unitario_saidas(1) As String

Dim amateriais_produtos(1) As String

Dim aunidade(1) As String

Dim arequisicoes(1) As String

Dim adata_de_saida(1) As String

Dim asaidas(1) As Integer

Dim adepartamento_requisitante(1) As String

Dim asupervisao_requisitante(1) As String

Dim aestoque_minimo(1) As Integer

Dim aestoque_atual(1) As Integer

Dim VEA_int As Integer

Dim VEN_int As Integer

Dim vEA As String

Dim vEM As String

Dim vmodo As String = "X"

Private Sub carrega_saidas_Estoque()

Dim cs As String = My.Settings.EstoqueConnectionString

Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = cs

conect.Open()

Dim selcom As New OleDb.OleDbCommand

selcom.Connection = conect

selcom.CommandText = " SELECT * FROM tb_estoque ORDER BY materiais_produtos"

Dim vleitor As OleDb.OleDbDataReader

vleitor = selcom.ExecuteReader()

Dim c As Integer = 0

dgvestoque.Rows.Clear()

Do While vleitor.Read

c = c + 1

ReDim Preserve acod_ordem©

ReDim Preserve acod_materiais_produtos©

ReDim Preserve avalor_unitario_saidas©

ReDim Preserve amateriais_produtos©

ReDim Preserve aunidade©

ReDim Preserve arequisicoes©

ReDim Preserve adata_de_saida©

ReDim Preserve asaidas©

ReDim Preserve adepartamento_requisitante©

ReDim Preserve asupervisao_requisitante©

ReDim Preserve aestoque_minimo©

ReDim Preserve aestoque_atual©

acod_ordem© = vleitor("cod_ordem")

acod_materiais_produtos© = vleitor("cod_materiais_produtos")

avalor_unitario_saidas© = vleitor("valor_unitario_saidas")

amateriais_produtos© = vleitor("materiais_produtos")

aunidade© = vleitor("unidade")

arequisicoes© = vleitor("requisicoes")

adata_de_saida© = vleitor("data_de_saida")

asaidas© = vleitor("saidas")

adepartamento_requisitante© = vleitor("departamento_requisitante")

asupervisao_requisitante© = vleitor("supervisao_requisitante")

aestoque_minimo© = vleitor("estoque_minimo")

If IsDBNull(vleitor("estoque_minimo")) Then

aestoque_minimo© = 0

Else

aestoque_minimo© = vleitor("estoque_minimo")

End If

If IsDBNull(vleitor("estoque_atual")) Then

aestoque_atual© = 0

Else

aestoque_atual© = vleitor("estoque_atual")

End If

dgvestoque.Rows.Add(acod_ordem©, acod_materiais_produtos©, avalor_unitario_saidas©, amateriais_produtos©, aunidade©, arequisicoes©, adata_de_saida©, asaidas©, adepartamento_requisitante©, asupervisao_requisitante©, aestoque_minimo©, aestoque_atual©)

Loop

conect.Close()

End Sub

Private Sub carrega_campos()

Dim ind As Integer = dgvestoque.CurrentRow.Index + 1

txtCod_ordem.Text = acod_ordem(ind)

txtCod_materiais_produtos.Text = acod_materiais_produtos(ind)

txtValor_unitario_saidas.Text = avalor_unitario_saidas(ind)

txtMateriais_produtos.Text = amateriais_produtos(ind)

txtUnidade.Text = aunidade(ind)

txtRequisicoes.Text = arequisicoes(ind)

MaskedData_de_saida.Text = adata_de_saida(ind)

txtsaidas.Text = asaidas(ind)

txtDepartamento_requisitante.Text = adepartamento_requisitante(ind)

txtSupervisao_requisitante.Text = asupervisao_requisitante(ind)

txtEstoque_minimo.Text = aestoque_minimo(ind)

txtEstoque_atual.Text = aestoque_atual(ind)

End Sub

Private Sub DgvEstoque_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dgvestoque.SelectionChanged

carrega_campos()

End Sub

Private Sub btnAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAlterar.Click

vmodo = "A"

hab_campos()

End Sub

Private Sub hab_campos()

btnIncluir.Enabled = False

btnAlterar.Enabled = False

btnExcluir.Enabled = False

btnCancelar.Enabled = True

btnConfirmar.Enabled = True

txtCod_materiais_produtos.Enabled = True

txtValor_unitario_saidas.Enabled = True

txtMateriais_produtos.Enabled = False

txtUnidade.Enabled = False

txtRequisicoes.Enabled = True

MaskedData_de_saida.Enabled = True

txtsaidas.Enabled = True

txtDepartamento_requisitante.Enabled = True

txtSupervisao_requisitante.Enabled = True

txtEstoque_minimo.Enabled = True

txtEstoque_atual.Enabled = False

End Sub

Private Sub desab_campos()

btnIncluir.Enabled = True

btnAlterar.Enabled = True

btnExcluir.Enabled = True

btnCancelar.Enabled = False

btnConfirmar.Enabled = False

txtCod_materiais_produtos.Enabled = False

txtValor_unitario_saidas.Enabled = False

txtMateriais_produtos.Enabled = False

txtUnidade.Enabled = False

txtRequisicoes.Enabled = False

MaskedData_de_saida.Enabled = False

txtsaidas.Enabled = False

txtDepartamento_requisitante.Enabled = False

txtSupervisao_requisitante.Enabled = False

txtEstoque_minimo.Enabled = False

txtEstoque_atual.Enabled = False

End Sub

Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click

desab_campos()

carrega_campos()

lblMateriais_produtos.Text = ""

End Sub

Private Sub btnConfirmar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConfirmar.Click

If vmodo = "A" Then

Dim cs As String = My.Settings.EstoqueConnectionString

Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = cs

Try

conect.Open()

Dim selcom As New OleDb.OleDbCommand

selcom.Connection = conect

lblMateriais_produtos.Text = ""

selcom.CommandText = "UPDATE tb_Estoque SET cod_materiais_produtos= " & txtCod_materiais_produtos.Text & ", valor_unitario_saidas='" & txtValor_unitario_saidas.Text & "', materiais_produtos='" & txtMateriais_produtos.Text _

& "', unidade='" & txtUnidade.Text & "', requisicoes=" & txtRequisicoes.Text _

& "', data_de_saida='" & MaskedData_de_saida.Text _

& "', saidas='" & txtsaidas.Text & "', departamento_requisitante='" & txtDepartamento_requisitante.Text _

& "', supervisao_requisitante='" & txtSupervisao_requisitante.Text _

& "', estoque_minimo=" & txtEstoque_minimo.Text & ", estoque_atual='" & txtEstoque_atual.Text & "' " _

& "WHERE cod_ordem = " & acod_ordem(dgvestoque.CurrentRow.Index + 1)

selcom.ExecuteNonQuery()

conect.Close()

Catch ex As Exception

MessageBox.Show("Erro de gravação de dados" & vbCrLf & ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error)

End Try

desab_campos()

carrega_Saidas_Estoque()

End If

If vmodo = "I" Then

Dim cs As String = My.Settings.EstoqueConnectionString

Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = cs

Try

conect.Open()

Dim selcom As New OleDb.OleDbCommand

selcom.Connection = conect

selcom.CommandText = "INSERT INTO tb_Estoque ( cod_materiais_produtos, valor_unitario_saidas, materiais_produtos, unidade, requisicoes, data_de_saida, saidas, departamento_requisitante, supervisao_requisitante, estoque_minimo)" & _

"VALUES (" & txtCod_materiais_produtos.Text & ", '" & txtValor_unitario_saidas.Text & "', '" & (txtMateriais_produtos.Text & Space(120)).Substring(0, 120) & "','" & txtUnidade.Text & "', " & txtRequisicoes.Text & " ,'" & MaskedData_de_saida.Text & "', " & txtsaidas.Text & ", '" & txtDepartamento_requisitante.Text & "', '" & txtSupervisao_requisitante.Text & "', " & txtEstoque_minimo.Text & " )"

If selcom.ExecuteNonQuery() Then

MsgBox("Ítem baixado com sucesso")

Else

MsgBox("Erro Ítem não incluído")

End If

conect.Close()

Catch ex As Exception

MessageBox.Show("Erro de gravação de dados" & vbCrLf & ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error)

End Try

desab_campos()

carrega_saidas_Estoque()

End If

If vmodo = "E" Then

Dim cs As String = My.Settings.EstoqueConnectionString

Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = cs

Try

conect.Open()

Dim selcom As New OleDb.OleDbCommand

selcom.Connection = conect

selcom.CommandText = " DELETE FROM tb_Estoque WHERE cod_ordem = " & acod_ordem(dgvestoque.CurrentRow.Index + 1)

If selcom.ExecuteNonQuery() Then

MsgBox("Ítem excluído com sucesso")

Else

MsgBox("Erro Ítem não excluído")

End If

conect.Close()

Catch ex As Exception

MessageBox.Show("Erro de gravação de dados" & vbCrLf & ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

desab_campos()

carrega_saidas_Estoque()

End If

End Sub

Private Sub txtsaidas_LostFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtsaidas.LostFocus

Dim cs As String = My.Settings.EstoqueConnectionString

Dim conect As New OleDb.OleDbConnection

Dim vEM_int, vEA_int As Integer

conect.ConnectionString = cs

Try

conect.Open()

Dim selcom As New OleDb.OleDbCommand

selcom.Connection = conect

selcom.CommandText = "SELECT estoque_atual FROM tb_estoque WHERE cod_materiais_produtos=" & txtCod_materiais_produtos.Text

Dim vEA As String = selcom.ExecuteScalar

Try

vEA_int = Convert.ToInt32(vEA)

Catch

vEA_int = 0

End Try

If vEA_int <> 0 Then

lblEstoque_atual.Text = vEA

lblEstoque_atual.ForeColor = Color.Black

txtEstoque_atual.Text = lblEstoque_atual.Text

End If

selcom.Connection = conect

selcom.CommandText = "SELECT estoque_minimo FROM tb_estoque WHERE cod_materiais_produtos=" & txtCod_materiais_produtos.Text

Dim vEM As String = selcom.ExecuteScalar

Try

vEM_int = Convert.ToInt32(vEM)

Catch

vEM_int = 0

End Try

If vEM_int <> 0 Then

lblEstoque_minimo.Text = vEM

lblEstoque_minimo.ForeColor = Color.Black

txtEstoque_minimo.Text = lblEstoque_minimo.Text

End If

If vEA_int <= vEM_int Then

lblAlerta_estoque.Text = ("Repor Estoque")

Else

lblAlerta_estoque.Text = ""

lblEstoque_atual.Refresh()

End If

conect.Close()

Catch ex As Exception

conect.Close()

End Try

End Sub

Private Sub btnIncluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIncluir.Click

hab_campos()

vmodo = "I"

txtCod_materiais_produtos.Text = ""

txtValor_unitario_saidas.Text = ""

txtMateriais_produtos.Text = ""

txtUnidade.Text = ""

txtRequisicoes.Text = ""

MaskedData_de_saida.Text = ""

txtsaidas.Text = ""

txtDepartamento_requisitante.Text = ""

txtSupervisao_requisitante.Text = ""

txtEstoque_minimo.Text = ""

txtEstoque_atual.Text = ""

txtCod_materiais_produtos.Focus()

End Sub

Private Sub txtMateriais_produtos_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtMateriais_produtos.TextChanged

If txtMateriais_produtos.Text.Length > 120 Then

MessageBox.Show("Digite no máximo 120 caracteres", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End If

End Sub

Private Sub btnExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcluir.Click

MsgBox("Para excluir o Usuário, clique em confirmar")

hab_campos()

vmodo = "E"

End Sub

Private Sub txtCod_materiais_produtos_GotFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCod_materiais_produtos.LostFocus

Dim cs As String = My.Settings.EstoqueConnectionString

Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = cs

Try

conect.Open()

Dim selcom As New OleDb.OleDbCommand

selcom.Connection = conect

selcom.CommandText = "SELECT materiais_produtos FROM tb_estoque WHERE cod_materiais_produtos=" & txtCod_materiais_produtos.Text

Dim vprod As String = selcom.ExecuteScalar

If vprod <> "" Then

lblMateriais_produtos.Text = vprod

lblMateriais_produtos.ForeColor = Color.Black

txtMateriais_produtos.Text = lblMateriais_produtos.Text

End If

conect.Close()

Catch ex As Exception

'MessageBox.Show("Código já cadastrado, digite outro código" & vbCrLf & ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

End Sub

Private Sub txt_materiais_produtos_GotFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCod_materiais_produtos.LostFocus

Dim cs As String = My.Settings.EstoqueConnectionString

Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = cs

Try

conect.Open()

Dim selcom As New OleDb.OleDbCommand

selcom.Connection = conect

selcom.CommandText = "SELECT unidade FROM tb_estoque WHERE Cod_materiais_produtos=" & txtCod_materiais_produtos.Text

Dim vprod As String = selcom.ExecuteScalar

If vprod <> "" Then

lblUnidade.Text = vprod

lblUnidade.ForeColor = Color.White

txtUnidade.Text = lblUnidade.Text

End If

conect.Close()

Catch ex As Exception

'MessageBox.Show("Código já cadastrado, digite outro código" & vbCrLf & ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

End Sub

Private Sub txtValor_unitario_saidas_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtValor_unitario_saidas.Leave

If txtValor_unitario_saidas.Text = String.Empty Then

txtValor_unitario_saidas.Text = 0

Else

txtValor_unitario_saidas.Text = FormatCurrency(txtValor_unitario_saidas.Text, 2, TriState.True, TriState.True, _

TriState.True).Replace("R$", "").Trim

End If

End Sub

End Class

OBS:

a - BD Access

b - No BD a formatação para os textbox onde tem valor está para Moeda - 2 casas decimais.

c - Na coluna do DBGrid onde tem valor está formatado para Currency - 2 casas decimais

d - O textbox está formatado no DataBindings para Currency - 2 casas decimais.

Se faltar alguma informação, peça que te envio.

Vê se dá pra dar uma solução, por favor.

Te agradeço imensamente, a ajuda que tem me dado, não tem mais ninguém conseguindo me ajurar. Minhas esperanças da solução está em você.

Obrigado

JMRF

Link para o comentário
Compartilhar em outros sites

  • 0

Só de analisar o código parece normal, levando em conta suas observações quanto às configurações. Qualquer coisa faça o seguinte: disponibilize esse form com um banco de dados com os valores alterados em um site de armazenamento e me passe o link por mensagem. Eu baixo esse form com o banco (pode ser apenas a tabela com os valores modificados) e executo por aqui, fazendo uma série de testes, tentando entender melhor o funcionamento.

OBS: verifique a tipagem da sua variável. Pelo que entendi, a variável que apresenta o problema de conversão é a "avalor_unitario_saidas©". Essa variável está declarada como String. Faça a declaração dele como Double ou Currency (ou até mesmo Decimal, mas prefiro o uso de Double pois é mais preciso).

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite,

Xistyle,

É o seguinte:

Declarei

Dim avalor_unitario_saidas(1) As Double

E caminhamos mais um pouco. Agora no DBGrid os valores aparecem tudo assim: R$252,34, R$255,00 ou seja perfeito.

Quanto ao textbox valor_unitario_saidas aí o bicho pega - Só entra uma casa decimal tipo: 152,3 ou 455 ou seja se os centavos forem "00" nada aparece depois da vírgula se os centavos for "50" aparece depois da vírgula só o "5". Mas tenho esperança de chegarmos lá, porque no DBGrid que aparecia sem os centavos quando tinha "0" agora está beleza.

O pior é que tenho tentado de tudo na formatação do textbox mas não dá certo de jeito nenhum. Tel alguma coisa a indicar para continuar tentando.

Obrigado

JMRF

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...