Fórum Formato #2858

17/02/2009

0

Amigos,     Como faço para trabalhar com formato de números no VB.net     Tenho uma aplicação  que realiza uma conta com numeros decimais,   por exemplo:  50000 * 1.5  = 750   quero que na TEXTBOX que recebe este valor  apareça  "750,00"      Quais os parametros? em pesquisa cheguei a opção de string.Format, mas não estou obtendo sucesso,     Gostaria de saber como posso utilizar este também com uma MASKEDIT com este formato Decimal,     Poderaim me dizer alguns exemplos?     Agradeço  
Fernando Reis

Fernando Reis

Responder

Posts

17/02/2009

Fabio Mans

Olá segue alguns exemplos.string a = String.Format("{0:c}", SUA VARIAVEL DE VALOR);

String.Format("{0:0.00}", 123.4567);  // "123.46"
String.Format("{0:0.00}", 123.4);        // "123.40"
String.Format("{0:0.00}", 123.0);        // "123.00"Para o MaskEdit você pode utilizar o Ajax.
http://www.asp.net/ajax/ajaxcontroltoolkit/samples/maskededit/maskededit.aspxOu uma máscara decimal, segue um exemplo, é o que mais utilizo.Campo decimal

<asp:textbox 
onkeypress="return(currencyFormat(this,'',',',event));" 
id="Doc_Entrada_Vlr_Tot_IPI"
onkeydown="teclaEnter(event)" 
onblur="return SaiCampo(this);" 
onfocus="return EntraCampo(this);" runat="server" CssClass="textbox">0,00</asp:textbox>




function currencyFormat(fld, milSep, decSep, e) {
  var sep = 0;
  var key = '';
  var i = j = 0;
  var len = len2 = 0;
  var strCheck = '0123456789';
  var aux = aux2 = '';
  var whichCode = (window.Event) ? e.which : e.keyCode;

  if (whichCode == 13) return true; // Enter
  if (whichCode == 8) return true; // Delete
  key = String.fromCharCode(whichCode); // Get key value from key code
  if (strCheck.indexOf(key) == -1) return false; // Not a valid key
  len = fld.value.length;
  for(i = 0; i < len; i++)
  if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
  aux = '';
  for(; i < len; i++)
  if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
  aux += key;
  len = aux.length;
  if (len == 0) fld.value = '';
  if (len == 1) fld.value = '0'+ decSep + '0' + aux;
  if (len == 2) fld.value = '0'+ decSep + aux;
  if (len > 2) {
  aux2 = '';
  for (j = 0, i = len - 3; i >= 0; i--) {
  if (j == 3) {
  aux2 += milSep;
  j = 0;
  }
  aux2 += aux.charAt(i);
  j++;
  }
  fld.value = '';
  len2 = aux2.length;
  for (i = len2 - 1; i >= 0; i--)
  fld.value += aux2.charAt(i);
  fld.value += decSep + aux.substr(len - 2, len);
  }
  return false;
}


function teclaEnter(event)
{  
 var tecla = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; 
 if(tecla==13){  
  event.keyCode=9;
  event.which=9;
  event.charCode=9;
 }
}


function EntraCampo(valor){
   
  var Vvalor = valor.value;
  if(Vvalor != '0,0'){
  valor.value = Vvalor;
  }else{  
  valor.value = '';
  } 
  return valor;
  }
   
  function SaiCampo(valor){
  var Vvalor = valor.value;
   
  if(Vvalor == '' || Vvalor == '0,0'){
  valor.value = '0,0';
  }else{  
  valor.value = Vvalor;
  } 
  return valor;
  }Espero ter ajudado.



Responder

Gostei + 0

17/02/2009

Fernando Reis

Fabio,     desculpe,   esta duvida esta voltada para desenvolvimento DESKTOP e não WEB,    Desculpe ,  erro meu,   bom,  aproveitado   tentei usar alguns exemplos que passou  mas não consegui por exemplo o   String.Format("{0:0.00}", 123.4);  ele ainda retorna um valor  sem os dois dígitos decimais,     posso modificar o Chamado para  desenvolvimento.net  ou pode me ajudar por aqui mesmo??     veja meu código:       Private Sub btnCriar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCriar.Click 'Cria o DataTable com o atributo de nome Dim dt As New Data.DataTable("tabelaCusto") Dim dr As DataRow 'Instancia as variaveis de Impostos Dim sngVendaBruta As Single = CSng(txtValor.Text) Dim sngIR As Single = 1.5 Dim sngIRRF As Single = 4.8 Dim sngCSocial As Single = 2.88 Dim sngISS As Single = 5 Dim sngPISCOFINS As Single = 3.65 Dim sngTotalImposto As Single = sngIR + sngIRRF + sngCSocial + sngISS + sngPISCOFINS Dim sngVendaLiquida As Single = sngVendaBruta - (sngVendaBruta * (sngTotalImposto / 100)) 'Cria as DataColumns Dim dcTitulo As New DataColumn Dim dcDescricao As New DataColumn Dim dcPorcentagem As New DataColumn Dim dcValor As New DataColumn 'Atribui as propriedades de cada DataColumn With dcTitulo .DataType = System.Type.GetType("System.String") .ColumnName = "Tipo" .ReadOnly = True .Unique = False End With With dcDescricao .DataType = System.Type.GetType("System.String") .ColumnName = "Descricao" .ReadOnly = True .Unique = True .Caption = "Descri‡Æo" End With With dcPorcentagem .DataType = System.Type.GetType("System.Single") .ColumnName = "Porcentagem" .ReadOnly = True .Unique = False .Caption = "Porcentagem(%)" End With With dcValor .DataType = System.Type.GetType("System.Single") .ColumnName = "Valor" .ReadOnly = False .Unique = False End With 'Coluna com identifica‡Æo prim ria - NECESSµRIO Dim PrimaryKeyColumns(0) As DataColumn 'Primeira Coluna ‚ PriamryKey PrimaryKeyColumns(0) = dt.Columns("dcDescricao") 'DataTable recebe a PRIMARYKEY dt.PrimaryKey = PrimaryKeyColumns   'Acrescenta as colunas no Datatable dt.Columns.Add(dcTitulo) dt.Columns.Add(dcDescricao) dt.Columns.Add(dcPorcentagem) dt.Columns.Add(dcValor)   'Acrescenta as linhas de Impostos dr = dt.NewRow() dr("tipo") = "Impostos" dt.Rows.Add(dr) 'Inclui os Impostos 'IR dr = dt.NewRow() dr("descricao") = "IR" dr("porcentagem") = sngIR ####################################################################### dr("valor") = String.Format("{0:0.00}", (sngVendaBruta * (sngIR / 100)))     'é aqui que ele ainda me retorna um valor sem formato   #######################################################################   dt.Rows.Add(dr)          
Responder

Gostei + 0

17/02/2009

Fabio Mans

Tentadr("valor") = String.Format("{0:c}", (sngVendaBruta * (sngIR / 100)))
Responder

Gostei + 0

18/02/2009

Fernando Reis

Grato,  Resolvido
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar