VB2005: data type para dinheiro

redshot

ElectroUser
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.
 
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
 
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?
 
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
 
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?

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.
 
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:
Back
Topo