Jump to content
Fórum Script Brasil
  • 0

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


JMRF

Question

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 to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 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 to comment
Share on other sites

  • 0

Boa noite,

Valeu Xistyle.

Agora tá dando esse outro erro:

A conversão da sequencia de caracteres',R$1,00' no tipo 'Double' não é válida

Como poderei resolver eisso?

Cada hora é um erro.

Soluciona um aparece outro.

Pode me dar uma dica?

Obrigado

JMRF

Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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

Edited by JMRF
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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)?

Edited by Xistyle
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...