Ir para conteúdo
Kr3w^

[Resolvido] Sistema de Orçamento em c#

Recommended Posts

eu usei esse if de um outro jeito porque esse ai não resolveu,

no caso eu preciso criar uma função para que alinhe cada coluna na sua respectiva coluna!

exemplo

 

Codigo tem que ficar em baixo do codigo , os produtos que eu adicionar tem que ficar em baixo da coluna Produtos e assim por diante...

 

QQAAAL6N_EG4TSviVRH2jlCw82uIgxl7lS05RAMkz3sLV5EOHwhVrUM3V3-Fnxlh12rbGkIjtC0o7Ywh8W7Gvl06zu6qyjUc9vvDdXJ3XPotnDGKAJtU9VCU8yPTWFpQ4KKG-bYAAhJ4MgkQAQ.jpg

 

adicionei 4 produtos para exemplo, repare que Produto1, Produto2, Pneu, Pirelli não estao na mesma reta que a coluna do nome dele ou seja a coluna Produtos, os demais estao com os mesmos problemas...

 

que tipo de função eu faria isso , ou melhor, onde eu posso visualizar algum exemplo dessa função para que eu faça aqui, ai não fico atrapalhando muito por aqui :D

 

obg até mais!! ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, essa parte é bem mais complexa, você vai ter que contar a quantidade de espaços para um texto modelo de 1 carácter, por exemplo, "a". A cada letra a mais, você reduz um espaço na linha e assim por diante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim sim já saberia que teria que fazer algo assim...

você sabe algum artigo onde eu possa pesquisar sobre isso ??

 

e se puder tirar minha duvida que é o seguinte

 

como voce pode ter visto, existe uma coluna de quantidades e coluna de preço

 

eu preciso de um for para fazer com que no VALOR R$, faça Quantidade * preço?? exemplo

 

Quantidade, Preço, Valor R$

2, 120,00, 240,00

 

sera necessario o uso de um for? porque no caso, a coluna quantidade é a [0, 3] e a coluna do preço é [0, 4]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça isso antes de adicionar, crie outra variável antes do for e dentro de cada final de linha você adiciona na ultima coluna o valor já multiplicado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu não estou em casa, então não vou conseguir testar no programa, mais tentei fazer meio que de cabeça aqui, vai ficar dessa forma mais ou menos?

 

-frmOrçamento

 

            decimal valor1 = 0, valor2 = 0, valortotal = 0;
           int col = 0;
           Cabecalho();

           for (int lin = 0; lin < ClassArrayProdutos.numRegProd; lin++)
           {
               for (col = 0; col < 5; col++)
               {
                   valor1 = Convert.ToDecimal(col = 3);
                   valor2 = Convert.ToDecimal(col = 4);
                   valortotal = valor1 * valor2;
                   txtBoxImprimir.Text = txtBoxImprimir.Text + ClassArrayProdutos.vetorprodutos[lin, col] + valortotal.ToString();
                   EspacoProdutos();
               }

               if (col == 5)
               {
                   col = 0;
                   NovaLinha();
               }
               else
               {
                   col++;
               }
           }

 

funciona assim?

Editado por Kr3w^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, porque você não pegou os valores corretos:

 

 

for (int lin = 0; lin < ClassArrayProdutos.numRegProd; lin++)
           {
               for (col = 0; col < 5; col++)
               {
                   valor1 = Convert.ToDecimal(ClassArrayProdutos.vetorprodutos[lin, <numerodacoluna>].ToString());
                   valor2 = Convert.ToDecimal(ClassArrayProdutos.vetorprodutos[lin, <numerodacoluna>].ToString());
                   valortotal = valor1 * valor2;
                   txtBoxImprimir.Text = txtBoxImprimir.Text + ClassArrayProdutos.vetorprodutos[lin, col] + valortotal.ToString();
                   EspacoProdutos();
               }

               if (col == 5)
               {
                   col = 0;
                   NovaLinha();
               }
               else
               {
                   col++;
               }
           }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi eu esqueci de atribuir os valores das colunas certas do array

 

então como voce sabe eu tenho 2 tipos de orçamento, produtos e serviços, os dois iram sair no frmOrcamento

 

eu ja fiz o valor da multiplicação dos 2 pra sair, exemplo

 

Produto tal - 15,00 quantidade: 2 = 30,00 ( a variavel dessa multiplicação é: totalproduto )

Serviço tal - 30,00 quantidade: 3 = 90,00 ( a variavel dessa multiplicação é: totalservico )

 

se eu adicionar só um produto e um serviço eu consigo fazer o TOTAL GERAL DE TODOS ITENS DO MEU ORÇAMENTO, nesse caso seria

totalgeral = totalproduto + totalserviço;

 

só tem um detalhe, se eu adiciono 2 produtos e 2 serviços, ele pega os valores do ultimo produto e serviço adicionado e não o valor de todos...

 

to usando essa estrutura, esta correta?

 

            totalgeral = totalproduto + totalservico;
           totalespaco();
           txtBoxImprimir.Text = txtBoxImprimir.Text + totalgeral.ToString();

Editado por Kr3w^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara, se você quer o total geral, você tem que somar todos os subtotais, você pode ou fazer isso fora deste for e criar outro laço apenas para somar todos, ou então a cada produto, para isto você adiciona os valores dos subtotais dos itens que o for está passando a uma variável de contagem fora da estrutura.

 

Em suma, você pode somar tudo de uma vez já dentro do for ou separar as tarefas, se somar tudo de uma vez você precisa, antes de terminar o laço da linha, somar o ultimo campo de cada linha e jogar todos os valores em uma variável, então imagine que você tem uma variável que começa com 0 e a cada for ele adiciona o valor da ultima linha(subtotal) do item selecionado pelo laço à essa variável já somando o valor que a variável possui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, no caso eu farei assim entao:

 

crio uma variavel que irá receber os subtotal.

 

eu crio um for fazendo com que essa variavel sempre some os ultimos subtotais adicinado para reservar eles todos em uma variavel certo?

 

o for ficaria assim??

 

for (int subtotal = 0; subtotal = totalprodutos; subtotal++)
{
} 

 

desculpe estar colocando a estrutura aqui sem eu testar, é porque meu pen drive esta emprestado e só pego hoje a noite... ai não tenho como testar minha estrutura, por isso tento colocar aqui qual estrutura eu devo usar..

 

ficaria assim essa estrutura?

obg pela ajuda!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O subtotal do seu for é na verdade a posição de cada item, ele tem que ser menor que a quantidade de itens carregados na pagina, fora deste for você precisa montar uma variável de contagem com valor inicial = 0, e depois ir acrescentando: soma = soma + valor

Compartilhar este post


Link para o post
Compartilhar em outros sites

me confundi agora D: to usando a estrutura errada pelo jeito veja ai ...

 

            for (int lin = 0; lin < ClassArrayProdutos.numRegProd; lin++)
           {
               for (col = 0; col < 5; col++)
               {
                   valor1 = Convert.ToDecimal(ClassArrayProdutos.vetorprodutos[lin, 3].ToString());
                   valor2 = Convert.ToDecimal(ClassArrayProdutos.vetorprodutos[lin, 4].ToString());
                   totalproduto = valor1 * valor2;
                   txtBoxImprimir.Text = txtBoxImprimir.Text + ClassArrayProdutos.vetorprodutos[lin, col];
                   EspacoProdutos();

                   for (int soma = 0; soma < 20; soma++)
                   {
                       decimal contador1 = Convert.ToDecimal(ClassArrayProdutos.vetorprodutos[lin, 3].ToString());
                       decimal contador2 = Convert.ToDecimal(ClassArrayProdutos.vetorprodutos[lin, 4].ToString());
                       decimal somar = 0;
                       somar = contador1 + contador2;
                       totalgeral = totalgeral + soma;
                   }

               }

               if (col == 5)
               {
                   txtBoxImprimir.Text = txtBoxImprimir.Text + totalproduto.ToString();
               }

               if (col == 5)
               {
                   col = 0;
                   NovaLinha();
               }
               else
               {
                   col++;
               }
           }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você for fazer em outro for você vai ter que fazer fora desse laço, não vai dar certo assim.

 

Para você não se confundir, eu acho mais fácil você fazer tudo no mesmo laço, ou seja, todos no for da linha ou da coluna.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, mais então esta certo a soma que eu faço?

 

                        decimal contador1 = Convert.ToDecimal(ClassArrayProdutos.vetorprodutos[lin, 3].ToString());
                       decimal contador2 = Convert.ToDecimal(ClassArrayProdutos.vetorprodutos[lin, 4].ToString());

 

ou tipo, eu tenho que fazer um contador da variavel totalproduto?

e como faria um contador disso

 

desculpa cara é que nunca trabalhei com Array , eu aprendi isso completamente agora, mais ainda sim me perco quando é preciso algo assim de somar colunas, linhas e etc... mais o bom é que a cada coisa que me passa aqui eu vejo e entendo o que ta acontecendo e assim eu já aprendo mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não cara, você precisa criar o contador antes do for, e é apenas um contador:

 

Double geral = 0;

 

Depois você declara acima do for:

 

Double geral = 0;

for (int lin = 0; lin < ClassArrayProdutos.numRegProd; lin++)
           {


	    valor1 = Convert.ToDecimal(ClassArrayProdutos.vetorprodutos[lin, 3].ToString());
                   valor2 = Convert.ToDecimal(ClassArrayProdutos.vetorprodutos[lin, 4].ToString());
                   totalproduto = valor1 * valor2;
	    //Aqui soma
           geral = geral + totalproduto;

	//Setando o numero de colunas para <6
               for (col = 0; col < 6; col++)
               {

	    //A coluna nunca vai chegar a 5 porque ela é <5 e não <=, logo você tem que setar para 6
               if (col < 5) {
	txtBoxImprimir.Text = txtBoxImprimir.Text + ClassArrayProdutos.vetorprodutos[lin, col];
                   EspacoProdutos();
	}

   		Elseif (col == 5)
               {
                   txtBoxImprimir.Text = txtBoxImprimir.Text + totalproduto.ToString();
	    col = 0;
                   NovaLinha();
               }

		else {
			col++;
		}


               }		

           }

 

 

 

Lembre-se de resetar o geral depois de acabar de imprimir.

 

Dei uma limpada no seu código também, havia muitos códigos redundantes lá, veja se funciona, provavelmente terá erros, porque não executei no VS, fiz de cabeça mesmo, então melhor checar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah entendi, uma variavel só vai ser como contador e vai somando os total produtos e toda a linha, agora clariou a mente KKKKK

entendi, vou tentar aqui, acho que vai haver alguns erros pois como a variavel totalprodutos é do tipo decimal

 

 

quando eu criar a variavel geral do tipo 'double' vai ficar geral = geral + totalprodutos; e vai dar error de conversão pois uma variavel é double a a outra decimal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mude tudo para Double, é mais preciso para dinheiro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim eu fiz isso

 

agora uma coisa ta estranha

o codigo ta assim:

 

            for (int lin = 0; lin < ClassArrayProdutos.numRegProd; lin++)
           {
               for (col = 0; col < 6; col++)
               {
                   valor1 = double.Parse(ClassArrayProdutos.vetorprodutos[lin, 3].ToString());
                   valor2 = double.Parse(ClassArrayProdutos.vetorprodutos[lin, 4].ToString());
                   totalprodutos = valor1 * valor2;
                   //SOMANDO OS VALORES
                   geraltotal = geraltotal + totalprodutos;
                   txtBoxImprimir.Text = txtBoxImprimir.Text + ClassArrayProdutos.vetorprodutos[lin, col];
                   EspacoProdutos();
               }

               if (col == 6)
               {
                   txtBoxImprimir.Text = txtBoxImprimir.Text + totalprodutos.ToString("#,##0.00");
                   col = 0;
                   NovaLinha();
               }
               else
               {
                   col++;
               }
           }

 

ai eu coloquei la em baixo:

 

            txtBoxImprimir.Text = txtBoxImprimir.Text + geraltotal.ToString("#,##0.00");

 

então eu testei, coloquei 1 produto

 

no valor de 100 reais, com 2 quantidades = 200,00

 

e resultado do:

            txtBoxImprimir.Text = txtBoxImprimir.Text + geraltotal.ToString("#,##0.00");

 

me deu um valor de 1.200,00?? D:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você colocou "#,##0.00", isso significa que se os 3 primeiros forem 0 ele vai ignorar, mas como no caso não é, é o numero 2 (200) ele vai colocar o valor na segunda "#" devido ao numero de casas e vai suplantas o que falta com o numero 1.

 

Não é necessário fazer essa formatação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa sintaxe eu coloquei só pra ficar tipo 1.000,00

 

mesmo sem isso ainda o preço ficaria: 1200

 

se eu deixar

txtBoxImprimir.Text = txtBoxImprimir.Text + geraltotal.ToString();

ainda continuara com valor diferente, ficaria 1200

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.