Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ricardo coelho designer

Soma linha por linha

Recommended Posts

Boa tarde, estou precisando somar linhas, (a soma por coluna é tranquilo) ex.

1 + 1 + 2 + 2 = 6

2 + 2 + 2 + 2 = 8

1 + 1 + 1 + 1 = 4

 

Bom meu código está assim

 

While Not Rsi.EOF
Response.Write totalpedidos*Rsi("medida")
Rsi.MoveNext
Preciso da lógica de soma dessa linha Response.Write totalpedidos*Rsi("medida")

Compartilhar este post


Link para o post
Compartilhar em outros sites

você terá que criar duas variáveis uma acumuladora e outra para ser totalizadora no final do loop faça as contas... deixa eu me adiantar VC quer de todas as colunas certo!? Vc terá que vetorizar as colunas ... se eu não estivesse no tablet eu faria praVC mas não é difícil não...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar a função SUM do SQL e fazer direto na string SQL, A função SUM () retorna a soma total de uma coluna numérica.

 

SELECT SUM(nome_coluna) as total FROM table_name

 

fica mais fácil ainda

Compartilhar este post


Link para o post
Compartilhar em outros sites

xanburzum, bom dia.
A ideia foi boa mas em parte do código reduziu um pouco a linhas, mas vou postar o codigo que estou usando para que entenda o que acontece,

 

<%Set RSsi = Server.CreateObject("ADODB.Recordset")
                                              RSsi.CursorType = 0
                                              RSsi.CursorLocation = 3
                                              RSsi.LockType = 3
                                              SQLStmt = "SELECT cod_aplica, aplicacao FROM planta_comodo_aplicacao where cod_pc = '"&Rmap("cod_pc")&"' and cod_produto like '%"&Rp("cod_produto")&"%'"
                                              RSsi.Open SQLstmt,Conn
                                              if RSsi.recordcount = 0 then
                                              response.write "No info available!"
                                              else

                                                   For b=1 to RSsi.recordcount  %>
                                                        
                                                                <%'Pega total de pedidos com contrato fechado%>
                                                                <%Set Rp1 = Server.CreateObject("ADODB.Recordset")
                                                                Rp1.CursorType = 0
                                                                Rp1.CursorLocation = 3
                                                                Rp1.LockType = 3
                                                                SQLStmt2 = "SELECT * FROM pedidos WHERE user_id in ("&cod_plantanext&") and cod_aplica = '"&RSsi("cod_aplica")&"' and cod_produto = '"&Rp("cod_produto")&"'"
                                                                Rp1.Open SQLstmt2,DSNtest %>
                                                                <%totalpedidos = Rp1.recordcount%>
                                                                <%Rp1.close %>

                                                                        <%'Multiplica total de produtos pela medida%>
                                                                        <%Set Rsi = Server.CreateObject("ADODB.Recordset")
                                                                        SQLStmt = "SELECT SUM("&totalpedidos&"*medida) as total FROM planta_comodo_produto where cod_pc_aplica = '"&RSsi("cod_aplica")&"' and cod_produto = '"&Rp("cod_produto")&";'"
                                                                        Rsi.Open SQLstmt,Conn
                                                                        If Rsi.Eof Then
                                                                           Response.Write "<font color=""#FF0000"">Não tem</font>"
                                                                        else
                                                                        While Not Rsi.EOF %>
                                                                             <%totpeds = Rsi("total")%>
                                                                        <%Rsi.MoveNext
                                                                        Wend
                                                                        Rsi.close %>
                                                                        <%End If%>

                                                   <%RSsi.MoveNext%>
                                                   <%next%>
                                                 <%totalpeds = totalpeds + totpeds
                                                  Response.Write totalpeds%>
                                              <%end if%>
                                              <%RSsi.close %>

Então preciso que ele imprima da seguinte forma

9 + 1 + 1 = 11

2 + 2 + 2 = 6

 

Mas ele imprime assim

9 + 1 + 1 = 11

2 + 2 + 2 = "17" (ou seja a partir da segunda linha ele soma a linha anterior nesse ex é 11 + 6 = 17 quando nessa linha deveria ser somente 6)

 

Acho que deu para entender meu problema...

Compartilhar este post


Link para o post
Compartilhar em outros sites

para somar as colunas é somente agrupar somando as mesmas ...

vc pode somar na sql ou no loop do código...

 

na sql é fazendo uma expressão flutuante ... (campo calculado)

 

sql = "select campo1,campo2,campo3, (campo1+campo2+campo3) as somadeCampos from tabela where campox = ???"

 

ao executar esse sql terá os campos campo1,campo2,campo3,somadeCampos

 

o campo somadeCampos já será os campos somados!!

 

com o loop no código não muda muito vou pegar a soma feita na sql e fazer no recordset

 

while not rs.eof

 

somadeCampos = cdbl(rs("campo1")) + cdbl(rs("campo2")) + cdbl(rs("campo3"))

 

response.write somadeCampos & "<br>"

 

rs.movenext

wend

 

qualquer dúvida é só postar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara acho que não consegui explicar direito, pois os cálculos é de um único campo que se multiplica ao identificar os registros.

 

A parte do código que preciso dessa soma é essa abaixo.

 

                                     <%totpeds = Rsi("total")%>
                                <%Rsi.MoveNext
                                Wend
                                Rsi.close %>
                                <%End If%>

           <%RSsi.MoveNext%>
           <%next%>
         <%totalpeds = totalpeds + totpeds
           Response.Write totalpeds%>

E a impressão é na última linha do código, mas soma a coluna inteira sendo que preciso que a soma seja nas linhas individuais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

atribua variáveis separadas para cada linha, crie uma session um uma variável temporária e pegue os valores daí é uma adição simples. Você pode até jogar em um txt também

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, mas vc tem algum exemplo para me me mostrar em baseado no código que postei.



Uma alternativa que fiz foi a seguinte

 

If Rsi.Eof Then
Response.Write "<font color=""#FF0000"">Não tem</font>"
else
While Not Rsi.EOF %>
<%If b = 1 Then
total1 = Rsi("total")%>
<%End If%>
                                                                              
<%If b = 2 Then
total2 = Rsi("total")%>
<%End If%>
                                                                              

<%If b = 3 Then
total3 = Rsi("total")%>
<%End If%>

<%If b = 4 Then
total4 = Rsi("total")%>
<%End If%>
                                                                              
<%Rsi.MoveNext
Wend
Rsi.close %>
<%End If%>

e na hora de imprimir os dados fiz assim

                        <%
                        If aplicacaototal = 1 Then
                           Response.Write total1
                        elseif aplicacaototal = 2 Then
                           Response.Write Total1&"<br>"
                           Response.Write Total2&"<br><hr><hr>"
                           Response.Write total1 + total2
                        elseif aplicacaototal = 3 Then
                           Response.Write Total1&"<br>"
                           Response.Write Total2&"<br>"
                           Response.Write Total3&"<br><hr><hr>"
                           Response.Write total1 + total2 + total3
                        elseif aplicacaototal = 4 Then
                           Response.Write Total1&"<br>"
                           Response.Write Total2&"<br>"
                           Response.Write Total3&"<br>"
                           Response.Write Total4&"<br><hr><hr>"
                           Response.Write total1 + total2 + total3 + total4
                        elseif aplicacaototal = 5 Then
                           Response.Write Total1&"<br>"
                           Response.Write Total2&"<br>"
                           Response.Write Total3&"<br>"
                           Response.Write Total4&"<br>"
                           Response.Write Total5&"<br><hr><hr>"
                           Response.Write total1 + total2 + total3 + total4 + total5
                        end if
                        %>

Se alguém tiver alguma forma mais simples é válido, bom de qualquer forma consegui fazer o que eu queria, com o código acima, se alguém precisar fique a vontade para usa-lo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma solução mais agradável seria utilizar uma classe de GridView

Compartilhar este post


Link para o post
Compartilhar em outros sites

ridardo vendo seu post 13 você tem uma expressão em um campo? campo1 = "1+1"

 

É isso mesmo? Qual banco de dados está usando? Pra ficar mais fácil tem ajeitar isso na SQL... mas tem saber qual o banco...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar jquery para isso também apenas alimentando os dados e depois o próprio js calcula pra vc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ricardo, relendo seu post 13 dá para fazer isso no recordset mesmo é mais ou menos assim!!

 

vamos supor que seu campo1 tenha o valor = "1 + 1"

 

então

 

valor1 = Cint(split(rs("Campo1"),"+")(0)) ' aqui eu defini o sinal de + como separador e atribui como numérico só para tirar os espaços

valor2 = Cint(split(rs("Campo1"),"+")(2)) ' a mesma coisa sendo que capturei o próximo índice do split...

 

ai fica fácil

 

valorSoma = Cint(valor1) + Cint(valor2)

 

qualquer dúvida é só postar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc pode fazer isso direto no SQL também

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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