Kr3w^ 0 Denunciar post Postado Novembro 22, 2012 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... 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
KhaosDoctor 242 Denunciar post Postado Novembro 23, 2012 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
Kr3w^ 0 Denunciar post Postado Novembro 23, 2012 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
KhaosDoctor 242 Denunciar post Postado Novembro 23, 2012 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
Kr3w^ 0 Denunciar post Postado Novembro 24, 2012 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? Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Novembro 25, 2012 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
Kr3w^ 0 Denunciar post Postado Novembro 26, 2012 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(); Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Novembro 26, 2012 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
Kr3w^ 0 Denunciar post Postado Novembro 26, 2012 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
KhaosDoctor 242 Denunciar post Postado Novembro 26, 2012 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
Kr3w^ 0 Denunciar post Postado Novembro 26, 2012 ah, entendi... muito obrigado irei acrescentar aqui Compartilhar este post Link para o post Compartilhar em outros sites
Kr3w^ 0 Denunciar post Postado Novembro 27, 2012 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
KhaosDoctor 242 Denunciar post Postado Novembro 27, 2012 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
Kr3w^ 0 Denunciar post Postado Novembro 27, 2012 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
KhaosDoctor 242 Denunciar post Postado Novembro 27, 2012 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
Kr3w^ 0 Denunciar post Postado Novembro 27, 2012 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
KhaosDoctor 242 Denunciar post Postado Novembro 27, 2012 Mude tudo para Double, é mais preciso para dinheiro. Compartilhar este post Link para o post Compartilhar em outros sites
Kr3w^ 0 Denunciar post Postado Novembro 27, 2012 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
KhaosDoctor 242 Denunciar post Postado Novembro 27, 2012 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
Kr3w^ 0 Denunciar post Postado Novembro 28, 2012 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