DIVIDIR TEXTBOX E FORMATAR PERCENTUAL
Boa tarde.
Galera,
Não sou programador. Sou um mero fuçador. Sou administrador e conheço um pouco de MSSQL. Crio ferramentas básicas para me auxiliar na minha profissão. Elimino diversos relatórios com o uso de Dash Boards.
Comecei com EXCEL, e depois migrei para VB.Net. Achei a linguagem fácil de compreender e com a ajuda do pessoal consegui criar duas aplicações que me ajudaram muito. Um amigo me disse que eu deveria migrar para C#, me disse se tratar de uma linguagem [Ô]melhor[Ô]. Assim o fiz. De inicio tudo começou bem mas depois fui percebendo que a linguagem é bem mais complexa que VB.
Estou com a seguinte situação:
Tenho 2 TextBox que possuem valores da soma de um GRID. E preciso dividir o valor de um pelo outro e formatar como Percentual.
txbPercent = txbSoma1 / txbSoma2
Obrigado pela ajuda e desculpe pela ignorancia.
Galera,
Não sou programador. Sou um mero fuçador. Sou administrador e conheço um pouco de MSSQL. Crio ferramentas básicas para me auxiliar na minha profissão. Elimino diversos relatórios com o uso de Dash Boards.
Comecei com EXCEL, e depois migrei para VB.Net. Achei a linguagem fácil de compreender e com a ajuda do pessoal consegui criar duas aplicações que me ajudaram muito. Um amigo me disse que eu deveria migrar para C#, me disse se tratar de uma linguagem [Ô]melhor[Ô]. Assim o fiz. De inicio tudo começou bem mas depois fui percebendo que a linguagem é bem mais complexa que VB.
Estou com a seguinte situação:
Tenho 2 TextBox que possuem valores da soma de um GRID. E preciso dividir o valor de um pelo outro e formatar como Percentual.
txbPercent = txbSoma1 / txbSoma2
Obrigado pela ajuda e desculpe pela ignorancia.
Você tem que ver que o VB converte valores sozinho, enquanto que no C# é você quem tem que converter
C# você deveria no mÃnimo fazer
txbPercent.Text = (double.Parse(txbSoma1.Text) / double.Parse(txbSoma2.Text)).ToString();
Onde estou convertendo o texto para double e depois de feita a divisão estou convertendo novamente para texto, só que ai ainda pode ocorrer erros no caso dos valores dos TextBox não serem números válidos
C# você deveria no mÃnimo fazer
txbPercent.Text = (double.Parse(txbSoma1.Text) / double.Parse(txbSoma2.Text)).ToString();
Onde estou convertendo o texto para double e depois de feita a divisão estou convertendo novamente para texto, só que ai ainda pode ocorrer erros no caso dos valores dos TextBox não serem números válidos
Deu erro.
As textbox que serão usadas vem do seguinte código:
private void Somar_Finan()
{
decimal Soma1 = 0;
decimal Soma2 = 0;
foreach (DataGridViewRow col in dgvFinan.Rows)
{
Soma1 = Soma1 + Convert.ToDecimal(col.Cells[1].Value);
Soma2 = Soma2 + Convert.ToDecimal(col.Cells[2].Value);
}
txbSoma3.Text = Convert.ToString(Soma1);
txbSoma3.Text = Convert.ToDouble(txbSoma3.Text).ToString([Ô]C[Ô]);
txbSoma4.Text = Convert.ToString(Soma2);
txbSoma4.Text = Convert.ToDouble(txbSoma4.Text).ToString([Ô]C[Ô]);
}
As textbox que serão usadas vem do seguinte código:
private void Somar_Finan()
{
decimal Soma1 = 0;
decimal Soma2 = 0;
foreach (DataGridViewRow col in dgvFinan.Rows)
{
Soma1 = Soma1 + Convert.ToDecimal(col.Cells[1].Value);
Soma2 = Soma2 + Convert.ToDecimal(col.Cells[2].Value);
}
txbSoma3.Text = Convert.ToString(Soma1);
txbSoma3.Text = Convert.ToDouble(txbSoma3.Text).ToString([Ô]C[Ô]);
txbSoma4.Text = Convert.ToString(Soma2);
txbSoma4.Text = Convert.ToDouble(txbSoma4.Text).ToString([Ô]C[Ô]);
}
Alguem?
Esse seu método atende sua necessidade. Porém o uso do DataGridView é apenas para ser de visualização, e não como manipulação de dados... Mas sem problemas...
O erro deve estar ocorrendo ao tentar localizar o valor da célula no DataGridView.
Provavelmente o sistema não deve estar localizando o valor de col.Cells[2].Value.
Uma dica é ao invés de usar o Index, use o nome da coluna. col.Cells[[Ô]Column2[Ô]].Value
Dessa forma fica muito mais legÃvel e confiável.
Obs.: Caso não seja esse o problema, nos passe mais detalhes do erro para que possamos te ajudar.
Outra dica, dê uma olhada neste artigo: UTILIZANDO OPERADORES DE ATRIBUICAO COMPOSTA
O erro deve estar ocorrendo ao tentar localizar o valor da célula no DataGridView.
Provavelmente o sistema não deve estar localizando o valor de col.Cells[2].Value.
Uma dica é ao invés de usar o Index, use o nome da coluna. col.Cells[[Ô]Column2[Ô]].Value
Dessa forma fica muito mais legÃvel e confiável.
private void Somar_Finan()
{
decimal Soma1 = 0;
decimal Soma2 = 0;
foreach (DataGridViewRow col in dgvFinan.Rows)
{
Soma1 = Soma1 + Convert.ToDecimal(col.Cells[[Ô]NOMEDACOLUNA1[Ô]].Value);
Soma2 = Soma2 + Convert.ToDecimal(col.Cells[[Ô]NOMEDACOLUNA2[Ô]].Value);
}
txbSoma3.Text = Convert.ToString(Soma1);
txbSoma3.Text = Convert.ToDouble(txbSoma3.Text).ToString([Ô]C[Ô]);
txbSoma4.Text = Convert.ToString(Soma2);
txbSoma4.Text = Convert.ToDouble(txbSoma4.Text).ToString([Ô]C[Ô]);
}
Obs.: Caso não seja esse o problema, nos passe mais detalhes do erro para que possamos te ajudar.
Outra dica, dê uma olhada neste artigo: UTILIZANDO OPERADORES DE ATRIBUICAO COMPOSTA
Vou ler o artigo, o erro persistiu. Envio a imagem do erro.
O erro ocorre porque você está tentando calcular duas strings.
Informe o valor percentual dentro do método utilizando os valores decimais.
Informe o valor percentual dentro do método utilizando os valores decimais.
private void button1_Click(object sender, EventArgs e)
{
Somar_Finan();
}
private void Somar_Finan()
{
decimal Soma1 = 0;
decimal Soma2 = 0;
foreach (DataGridViewRow col in dgvFinan.Rows)
{
Soma1 = Soma1 + Convert.ToDecimal(col.Cells[[Ô]Column2[Ô]].Value);
Soma2 = Soma2 + Convert.ToDecimal(col.Cells[[Ô]Column1[Ô]].Value);
}
txbSoma3.Text = Convert.ToString(Soma1);
txbSoma3.Text = Convert.ToDouble(txbSoma3.Text).ToString([Ô]C[Ô]);
txbSoma4.Text = Convert.ToString(Soma2);
txbSoma4.Text = Convert.ToDouble(txbSoma4.Text).ToString([Ô]C[Ô]);
tbxPercent.Text = (Soma1 + Soma2).ToString([Ô]C[Ô]);
}
Tópico encerrado , respostas não são mais permitidas