Jump to content

Recommended Posts

Olá, sou novo no VB

 

Estou desenvolvendo um programa de atendimento médico onde tem vários textboxs e um deles é de Valor (R$).

 

O meu problema é o seguinte...

No meu banco de dados o campo valor é do tipo moeda e o banco é em access

No meu programa no dataset configurei ele para double e por código consegui colocar automaticamente ponto e virgula.

Até ai acho que tudo bem...

Só que quando eu clico para salvar ele automaticamente esquece do ponto e virgula e salva no datagridview o valor sem ponto e virgula, e dai quando eu seleciono o registro ele esquece dos centavos

 

Ex.:

Eu digito na text box: R$ 1.250,00

E quando eu salvo aparece na datagridview: 1250

Quando seleciono o mesmo registro ele fica assim na textbox: R$ 12,50

Só se os centavos não forem zerados ele salva mais se forem 00 ele não salva

 

Por favor! me ajudem.

 

Segue o código da formula para colocar os ponto e virgula para vocês darem uma olhada e ver se tem erros...

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Public Shared Sub Moeda(ByRef txt As TextBox)
        Dim n As String = String.Empty
        Dim v As Double = 0
        Try
            n = txt.Text.Replace(",", "").Replace(".", "")
            If n.Equals("") Then n = ""
            n = n.PadLeft(3, "0")
            If n.Length > 3 And n.Substring(0, 1) = "0" Then n = n.Substring(1, n.Length - 1)
            v = Convert.ToString(n) / 100
            txt.Text = String.Format("{0:C2}", v)
            txt.SelectionStart = txt.Text.Length
        Catch ex As Exception

        End Try
    End Sub

    Private Sub valortxt_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles valortxt.KeyPress
        Select Case (valortxt.TextLength)

            Case 4
                valortxt.SelectionStart = 5
        End Select
    End Sub

    Private Sub valortxt_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles valortxt.TextChanged
        Atendimentos.Moeda(valortxt)
    End Sub

------------------------------------------------------------------------------------------------------------------------------------------------------------

Edited by quintelab
Adicionado BBCode

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By rl28
      Bom dia,
       
      Estou querendo ler todos arquivos que meu sistema gerou na minha máquina no formato .txt e carregar os mesmos em uma gridview, assim deixando apenas uma tela de consulta dos dados salvos nos arquivos txt, porém, meu código não está conseguindo consultar os arquivos, podem me ajudar?
       
      Obs.: Quando utilizo o nome fixo do arquivo, funciona.
       
      Código abaixo:

       
      Public Class formListaTransacao Private Sub formListaTransacao_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim dt As New DataTable dt.Columns.Add("Código") dt.Columns.Add("Descrição") dt.Columns.Add("Ação") Dim Arquivo As New System.IO.StreamReader("C:\Users\rl\Desktop\" & Me.Text & ".txt", System.Text.Encoding.Default) While Arquivo.Peek() <> -1 dt.Rows.Add(Arquivo.ReadLine()) End While DataGridView2.DataSource = dt End Sub  
      Tela do gridview:

       
      Informação que consta no txt e que deve carregar no gridview:
       
      Primeiro arquivo

       
      Segundo arquivo:

    • By eduardohaag
      Olá,
      Mais uma vez aqui estou eu com uma duvida que não estou conseguindo resolver.
      Estou desenvolvendo um ERP para a grafica da minha esposa. Nesse sistema existe um modulo que registra o tempo trabalhado.
      Para fazer isso existe um botão no formulário principal, que quando é clicado salva a hora na variável entrada, e quando clicado novamente ele registra no banco de dados o intervalo entre a entrada e saida.
      Até ai tudo ok. Porém as vezes a pessoa sai e esquece de clicar para registrar a saida.
       
      Então gostaria de fazer com que a cada 5 minutos fosse verificado se teve alteração na posição do ponteiro do mouse, porém permitindo que o usuário possa usar o programa.
       
      Procurando na internet descobri que para isso o melhor seria usar uma thread para fazer essa verificação da posição do mouse em segundo plano já que seria executado a cada 5 minutos e dessa forma travaria a execução do form principal.
       
      O problema está que quando ele detecta que mouse ficou parado por mais de 5 minutos e executa o codigo que salvo o intervalo no banco de dados acontece esse erro quando chega na linha "btEntrada.Text = "Registrar Entrada"" : "System.InvalidOperationException: 'Operação entre threads inválida: controle 'ToolStrip1' acessado de um thread que não é aquele no qual foi criado.'
       
      Li que tenho que usar algo como invoke e delegate, mas mesmo estudando não consegui entender como implementar.
      meu codigo é o seguinte:
       
      Imports System.ComponentModel Public Class Principal_content Dim saida As DateTime Dim tempo As TimeSpan Dim entrada As DateTime Dim ponteiro As Point Sub GerPonto() Do Threading.Thread.Sleep(5000) If ponteiro = Cursor.Position Then Call registraponto() End If ponteiro = Cursor.Position Loop End Sub Private Sub btEntrada_Click(sender As Object, e As EventArgs) Handles btEntrada.Click Call registraponto End Sub Sub registraponto() Dim trd = New Threading.Thread(AddressOf GerPonto) If btEntrada.Text = "Registrar Entrada" Then entrada = FormatDateTime(Now) btEntrada.Text = "Registrar Saida" btEntrada.ToolTipText = "Registrar Saida" btEntrada.Image = My.Resources.appointment_new_Ativo btEntrada.ForeColor = Color.Lime trd.Start() Else trd.Abort() saida = Now tempo = saida.Subtract(entrada) sql = "INSERT INTO ponto (Data, Entrada, Saida, Segundos) VALUES (#" & Format(entrada, "MM/dd/yyyy") & "#, #" & Format(entrada, "hh:mm:ss") & "#, #" & Format(saida, "hh:mm:ss") & "#, " & Replace(FormatNumber(tempo.TotalSeconds, 0, TriState.False, TriState.False, TriState.False), ",", ".") & ")" btEntrada.Text = "Registrar Entrada" btEntrada.Text = "Registrar Entrada" btEntrada.Image = My.Resources.appointment_new_desativo btEntrada.ForeColor = Color.Red AcessoDB.ExecutarComando(sql, CommandType.Text, Nothing, AcessoDB.TipoDeComando.ExecuteNonQuey) End If End Sub End Class  
    • By drapn
      Boa tarde pessoal
      Estou com um projeto em Vb.Net que consiste em importar dados de uma planilha de Excel para um Datagridview.
      O projeto esta funcionando tudo ok porem notei que quando vou movendo as barras laterais e inferiores o formulário apresenta grande lentidão para mover as colunas etc...
      Fiz o teste criando um projeto novo com somente 1 Form, 1 Datagrid e 1Botão e os códigos para fazer a importação e quando eu "populo" o datagridview com o conteudo ele apresenta esses legs.
       
      Alguem a ja passou por isso?
      Será que é configuração da máquina? (Não é uma máquina tão fraca)
      O Vb.NET é a versão 2015
       
       
      Os arquivos de Excel variam de 80 Linhas por 5 Colunas á 400 linhas e 5 colunas
       
      O código é esse:
       
      Sub ImportaEstoque()         Dim Local         Local = EndArquivo()         If String.IsNullOrWhiteSpace(Local) Then             MessageBox.Show("Nenhum arquivo foi selecionado.", "Informação.", MessageBoxButtons.OK, MessageBoxIcon.Information)             Return         End If         '------------------------------         Dim caminhoArquivoExcel As String = Local         Dim nomePlanilhaExcel As String = "ESTQ" & "$"         Dim conexaoOleDb As OleDbConnection = Nothing         Dim ds As DataSet         Dim cmd As OleDbDataAdapter         '------------------------------         Try             'conexaoOleDb = New OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Local & ";Extended Properties=Excel 8.0;")             conexaoOleDb = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & Local & ";Extended Properties='Excel 8.0;HDR=Yes'")             'cmd = New OleDbDataAdapter("Select * from [" & nomePlanilhaExcel & "]", conexaoOleDb)             cmd = New OleDbDataAdapter("Select * from [" & nomePlanilhaExcel & "]  Where UM Like '%" & "PC" & "%'", conexaoOleDb)             cmd.TableMappings.Add("Table", "tabelaExcel")             ds = New DataSet             cmd.Fill(ds)             dgvDados.DataSource = ds.Tables(0)         Catch ex As Exception             MessageBox.Show(ex.ToString, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)         Finally             conexaoOleDb.Close()         End Try         sbQtdItens.Text = "Encontrados " & dgvDados.RowCount.ToString & " itens."     End Sub  
       
       
      Pessoal desde já muito obrigado pela força!
    • By eduardohaag
      Olá estou criando um sistema onde preciso calcular a previsão de envio do pedido em dias uteis, para isso estou usando um webservice gratuito que retorna um xml, porém estou tendo o erroSystem.XML.XmlException: 'Dados no nível raiz inválidos. Linha 1, posição 1.'
       
      Meu código é 
      Sub Preenchedata() Dim sql = "SELECT PrazoPadraoProducao FROM Configuracoes" Dim dr As DataTable = AcessoDB.ExecutarComando(sql, CommandType.Text, Nothing, AcessoDB.TipoDeComando.ExecuteDataTable) Dim ds As New DataSet Dim xml As String = "https://elekto.com.br/api/Calendars/br-BC/Add?initialDate=" & Now.Year & "-" & Now.Month & "-" & Now.Day & "&days=" & dr.Rows(0).Item(0) & "&type=work" ds.ReadXml(xml)  
      e o xml retornado é 
       
      <dateTime xmlns="http://schemas.microsoft.com/2003/10/Serialization/">2019-05-03T00:00:00Z</dateTime>  
      Alguém tem alguma ideia de como posso eliminar o erro?
    • By lindomar55
      ola amigos preciso de uma ajudinha, estou montando uma aplicaçao usando vb.net windows forms. nela tenho um botao onde chamo uma url no chrome com o seguinte comando.
      Private Sub Btn_abrir_site_Click(sender As Object, e As EventArgs) Handles Btn_abrir_site.Click
              Dim url As String = “https://www.rico.com.você/dashboard/tesouro-direto/“
              Process.Start(url)
          End Sub
      no google entao eu acesso com meu logim manualmente(prefiro assim). e em realizo uma serie de operaçoes, chega um determinado momento que preciso passar passar os dados que o site me apresenta entao(apos as operaçoes) para o aplicativo. ai é que esta o problema. neste ponto estou boiando.
      no codigo abaixo por exemplo: precisava obter os valores 12,36 e 8806,84 de forma automatica e colocar em textbox.
      vi exemplos na net que mostram com webbrowser porem eu prefiro que seja com o chrome. e nesses exemplos ele abre a pagina e ja obtem os dados. eu preciso trabalhar na pagina muiiiito e so depois baixar os dados programaticamente.
      qualquer ajuda sera bem vinda....
       

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.