1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

VB2005: data type para dinheiro

Discussão em 'Programação' iniciada por redshot, 3 de Maio de 2008. (Respostas: 6; Visualizações: 1783)

  1. redshot

    redshot Electromoderator
    Staff Member

    Boas.

    Estou a fazer um programa de gestão de stocks, e tenho alguns problemas com a base de dados SQL.

    Quando quero definir os campos do género "preço", que tipo de data ponho? Já experimentei com real, float mas não funcionou.

    Esses valores são introduzidos por uma textbox, e parece-me que está nas vírgulas e pontos finais.

    Agradecia que me ajudassem, pois o meu prazo de entrega termina a 14 de Maio.
     
  2. jpaulino

    jpaulino Power Member

    Mas onde no SQL ou no programa ?

    No SQL usas o tipo "Money"
    No programa usas "Decimal"
     
  3. alfinete

    alfinete Power Member

    eu fiz uma cena dessa a dias mas não tenho neste pc, é como a outra resposta diz , mas se conseguires faz uma expressão regular para passares o valor da caixa de texto no metodo que chama a expressão atraves de um boll, se for true guardas na bd.

    eu na 2ª dou-te isso

    se não me esquecer


    espero que tenha ajudado
     
  4. redshot

    redshot Electromoderator
    Staff Member

    O que eu tenho é uma textbox para introduzir o preço, e depois o código fica deste género:

    Código:
    manipularegistos("INSERT INTO produtos (cod_produto, preco) values (" & textbox_cod.text & ", '" & textbox_preco.text & "')
     
    (em que manipularegistos é o sub que faz ligação à BD, inserindo-lhe o SQL que vem dentro)
    E como é que faço para definir os valores da textbox do preço para decimais?
     
  5. alfinete

    alfinete Power Member

    um exemplo


    namespaces a utilizar



    Código:
    using System.Text.RegularExpressions;
    using System.IO;
    
    

    Código:
    
     protected void btnteste_Click(object sender, EventArgs e)
            {
                if (validamoeda(tbteste.Text) == true)
                { 
                   
                    grava_registo();
       
                    lblerro.Text =""; 
                }
                else
                    lblerro.Text = "*"; 
    
            }
    
        // formatação da moeda 000,000,00
            private bool validamoeda(string str)
            {
               //validação da formatação da moeda (xxx,yy)
                Regex Data = new Regex(@"^([0-9]{1,3}){1,},[0-9]{2}$");
                return Data.IsMatch(str);
    
            }
    
          private void grava_registo()
          {
            Dados d = new Dados();
            string[] dados = new string[1];
    
            // guarda o valor da caixa de texto
            string moeda = tbteste.Text.Trim (); 
    
            // substitui "," por "." para poder guardar na bd
            string moedabd = moeda.Trim().Replace(",", ".");  
    
            dados[0] =moedabd;
           
            d.grava_moeda(dados);
          }
    
    
    
    do falta o metodo grava moeda que chama uma store com o insertintro , mas de resto basta adaptares aao teu .

    espero que ajude

    depois amnha te envio a regex mais actualizada pois n a tenho aqui
     
  6. jpaulino

    jpaulino Power Member

    A melhor maneira, e mais simples, é usares parameters. Podes ver um exemplo aqui:

    VB.NET: Gestão de Dados em SQL Server - Parte I
    http://vbtuga.blogspot.com/2008/04/vbnet-gesto-de-dados-em-sql-server.html


    Depois só tens de escolher o tipo SqlDbType.Money e indicares a tua textbox.
     
  7. redshot

    redshot Electromoderator
    Staff Member

    Boas.

    Obrigado pelas respostas, mas acho que já consegui pôr isto mais ou menos.

    Defini, na tabela, os campos tipo preço para decimal, e depois foi só usar uma textbox normal, e uma string que converte vírgulas para pontos finais ao guardar na BD.

    Código:
     [SIZE=2]txt_precocompra.Text = Replace(txt_precocompra.Text, [/SIZE][COLOR=black][COLOR=white][SIZE=2][SIZE=2]","[/SIZE][/SIZE][SIZE=2], [/SIZE][SIZE=2][SIZE=2]"."[/SIZE][/SIZE][SIZE=2])
    [/SIZE][/COLOR][/COLOR]
     
    Última edição: 5 de Maio de 2008

Partilhar esta Página