Jump to content


Photo

Soma De Valores Ao Final De Uma Consulta....


  • Faça o login para participar
6 replies to this topic

#1 Maxwell

Maxwell

    Turista

  • Usuários
  • 33 posts
  • Sexo:Masculino
  • Localidade:Guarulhos/SP

Posted 04/11/2009, 23:26

Amigos estou montando um sistema de consulta no banco de dados mas estou tendo dificuldades em realizar a soma no final do codigo.

O que tenho no codigo é:

PRODUTO | QUANTIDADE | VALOR
Casa | 1 peça | 1,00
Moto | 2 peças | 5,00

Essa disposição acima o meu codigo faz, mas não consigo fazer a soma no final do codigo, que nesse exemplo acima seria 6,00 (1,00+5,00). Podem me ajudar a acrescentar no codigo abaixo?:


<%@LANGUAGE="VBSCRIPT"%>

<%
response.buffer = "true"
Set Conexao = Server.CreateObject("ADODB.Connection")
dbPath = "DBQ=" & Server.Mappath("../../../dados/sistema.mdb")
Conexao.Open "DRIVER={Microsoft Access Driver (*.mdb)};" & dbPath
Set Recordset1 = Server.CreateObject("ADODB.RecordSet")
Recordset1.Open "SELECT * FROM fluxo_caixa WHERE data_venda LIKE '%"& request.form("date1") &"%' AND loja LIKE '%"& request.form("loja") &"%' order by id_fluxo_caixa" , Conexao, 1, 3
%>

<center>
<font size=3 face=verdana color=000000><b>Movimentação Caixa</b></font><br><br>
<button type="button" value="imprimir" onclick="window.print();" >Imprimir</button><hr>
</center>

<%
Dim Repeat1__numRows
Repeat1__numRows = -1
Dim Repeat1__index
Repeat1__index = 0
Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
if Recordset1.eof then
response.write "<p> <p><center><font face='Verdana, Arial, Helvetica, sans-serif' size='3'><b>Nenhuma venda nessa data</b></font></center>"
else
%>

<table width="100%" border="0" cellspacing="5" cellpadding="2" align="center">
<tr bgcolor=#404040>
<td align=left><font size=2 color=ffffff face=verdana><b></td>
<td align=left width=10%><font size=2 color=ffffff face=verdana><b>N. venda</td>
<td align=left><font size=2 color=ffffff face=verdana><b>Cod.:</td>
<td align=left width=50%><font size=2 color=ffffff face=verdana><b>Produto</td>
<td align=left width=5%><font size=2 color=ffffff face=verdana><b>Qtd.</td>
<td align=left width=10%><font size=2 color=ffffff face=verdana><b>R$ Un.</td>
<td align=left width=10%><font size=2 color=ffffff face=verdana><b>R$ Total</td>
<td align=left width=15%><font size=2 color=ffffff face=verdana><b>Vendedor</td>
<td align=left width=10%><font size=2 color=ffffff face=verdana><b>Data</td
</tr>

<% 
While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF)) 
%>

<tr>
<td bgcolor=#E1E1E1 align=left><font size=2 color=000000 face=verdana><b><%=Recordset1("id_venda")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><%=Recordset1("id_produto")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana> <%=Recordset1("produto")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><%=Recordset1("quantidade")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><b> <%=Recordset1("valor_venda")%> ,00</td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><b>  <%=Recordset1("quantidade")* Recordset1("valor_venda")%> ,00 </td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><%=Recordset1("funcionario_venda")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><%=Recordset1("data_venda")%></td>
</tr><TR><TD BGCOLOR=000000 COLSPAN=9></TD></TR>



<% 
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  Recordset1.MoveNext()
Wend
%>
</table>

<!!!!!!!!!!!!!!!!!!!!!!!!!! SERIA NESSE ESPAÇO QUE EU QUERO POR A QUANTIDADE TOTAL DO VALOR VENDA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!>

<%end if %>

<%
Recordset1.Close()
%>


Obs.: Em outro topico fiz a mesma solicitação e obtive resposta positiva, mas naquele caso o codigo era diferente e usava "request", sendo que esse acima não usa, e como sou iniciante não sei fazer a modificação.

#2 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 05/11/2009, 08:45

Vamos pensar, você já lista cada um dos valores necessários para o somatório final.
E você tem um loop que percorre cara um dos registros que possuem direferentes valores (nome, qtd peças e valor).
Então ao final é só incuir uma variavel para agregar os valores de cada um dos valores impressos.

Exemplo:
Dim valorTotalAux : valorTotalAux = 0while (condição)%>	<tr>		<td><%=rs("nome")%></td>		<td><%=rs("quantidade") * rs("preco")%></td>	</tr><%	valorTotalAux = valorTotalAux + (rs("quantidade") * rs("preco"))wendresponse.write(valorTotalAux &",00")

Edição feita por: Renan L. Queiroz, 05/11/2009, 08:57.

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image


#3 Maxwell

Maxwell

    Turista

  • Usuários
  • 33 posts
  • Sexo:Masculino
  • Localidade:Guarulhos/SP

Posted 05/11/2009, 15:58

Vamos pensar, você já lista cada um dos valores necessários para o somatório final.
E você tem um loop que percorre cara um dos registros que possuem direferentes valores (nome, qtd peças e valor).
Então ao final é só incuir uma variavel para agregar os valores de cada um dos valores impressos.

Exemplo:

Dim valorTotalAux : valorTotalAux = 0while (condição)%>	<tr>		<td><%=rs("nome")%></td>		<td><%=rs("quantidade") * rs("preco")%></td>	</tr><%	valorTotalAux = valorTotalAux + (rs("quantidade") * rs("preco"))wendresponse.write(valorTotalAux &",00")


Nao sei no que estou errando mas tentei incluir sua sugestao no codigo mas retorna "pagina nao exibida"

<% 
Dim valorTotalAux : valorTotalAux = 0
while (condição)

While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF)) 
%>

<tr><form action="venda_finaliza.asp" method="post">
<td bgcolor=#E1E1E1 align=left>
<input type="hidden" name="funcionario_venda" value="<%=Recordset1("funcionario_venda")%>">
<input type="hidden" name="dados" value="<%=Recordset1("id_venda")%>">
<input type="submit" value="I" name="B1">
</td></form>
<td bgcolor=#E1E1E1 align=left><font size=2 color=000000 face=verdana><b><%=Recordset1("id_venda")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><%=Recordset1("id_produto")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana> <%=Recordset1("produto")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><%=Recordset1("quantidade")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><b> <%=Recordset1("valor_venda")%> ,00</td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><b>  <%=Recordset1("quantidade")* Recordset1("valor_venda")%> ,00 </td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><%=Recordset1("funcionario_venda")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><%=Recordset1("data_venda")%></td>
</tr><TR><TD BGCOLOR=000000 COLSPAN=9></TD></TR>



<% 



  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  Recordset1.MoveNext()
Wend

%>
</table>

<%
valorTotalAux = valorTotalAux + (rs("quantidade") * rs("valor_venda"))
response.write(valorTotalAux &",00")
%>


#4 Renato Maia

Renato Maia

    Turista

  • Usuários
  • 39 posts
  • Sexo:Masculino
  • Localidade:Ribeirão Preto
  • Interesses:Desenvolvimento e tecnologia.

Posted 05/11/2009, 21:10

Bom dia Maxwell.

O que você solicitou foi realizar a soma ao termino de um loop, e a dica informada pelo Renan esta correta.
Para analizar o erro que esta ocorrendo em sua página, remova os erros amigaveis que o seu navegador apresenta.
O firefox por padrao ja vem sem esta configuracao, no IE vc deve ir em Ferramentas > Opções de internet > Avançadas > Desmarque a opção "Mostrar mensagens de erro http amigaveis".

Em relação a sugestão de nosso amigo Renan, utilize a função formatcurrency do asp. ele formata os valores na moeda corrente do IIS.

Ex: <%=formatcurrency (Recordset1("quantidade")* Recordset1("valor_venda"))%>

Após a remoção do erro amigavel, nos informe o que a página esta relatando, para que possamos lhe dar um melhor suporte.

Espero ter ajudado.
Renato Maia
Microsoft Certified Prrofessional | MCP .NET
RenatoMaia.Net.br tudo sobre desenvolvimento .Net e Tecnologias.

#5 Maxwell

Maxwell

    Turista

  • Usuários
  • 33 posts
  • Sexo:Masculino
  • Localidade:Guarulhos/SP

Posted 05/11/2009, 22:31

Bom dia Maxwell.

O que você solicitou foi realizar a soma ao termino de um loop, e a dica informada pelo Renan esta correta.
Para analizar o erro que esta ocorrendo em sua página, remova os erros amigaveis que o seu navegador apresenta.
O firefox por padrao ja vem sem esta configuracao, no IE vc deve ir em Ferramentas > Opções de internet > Avançadas > Desmarque a opção "Mostrar mensagens de erro http amigaveis".

Em relação a sugestão de nosso amigo Renan, utilize a função formatcurrency do asp. ele formata os valores na moeda corrente do IIS.

Ex: <%=formatcurrency (Recordset1("quantidade")* Recordset1("valor_venda"))%>

Após a remoção do erro amigavel, nos informe o que a página esta relatando, para que possamos lhe dar um melhor suporte.

Espero ter ajudado.


Pessoal desculpe a minha ignorançia, mas eu nao sei nem onde por essas sugestoes que vcs estao me dando, o que faço é "colar" as sugestoes no codigo que tenho. Sei que pode parecer estranho e vcs podem se perguntar: "O que esse cara quer com ASP?". Mas o que faço é algo simples e depois de pronto não mexo mais (no caso seria uma simples consulta que no final me mostra-se o valor total)

o erro que deu na pagina foi:

error '80020009'
/sistema/loja1/fechamento_2.asp, line 74

Isso para o seguinte codigo:

<%@LANGUAGE="VBSCRIPT"%>

<%
response.buffer = "true"
Set Conexao = Server.CreateObject("ADODB.Connection")
dbPath = "DBQ=" & Server.Mappath("../../../dados/sistema.mdb")
Conexao.Open "DRIVER={Microsoft Access Driver (*.mdb)};" & dbPath
Set Recordset1 = Server.CreateObject("ADODB.RecordSet")
Recordset1.Open "SELECT * FROM fluxo_caixa WHERE data_venda LIKE '%"& request.form("date1") &"%' AND loja LIKE '%"& request.form("loja") &"%' order by id_fluxo_caixa" , Conexao, 1, 3
%>

<center>
<font size=3 face=verdana color=000000><b>Movimentação Caixa</b></font><br><br>
<button type="button" value="imprimir" onclick="window.print();" >Imprimir</button><hr>
</center>

<%
Dim Repeat1__numRows
Repeat1__numRows = -1
Dim Repeat1__index
Repeat1__index = 0
Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
if Recordset1.eof then
response.write "<p>&nbsp;<p><center><font face='Verdana, Arial, Helvetica, sans-serif' size='3'><b>Nenhuma venda nessa data</b></font></center>"
else
%>

<table width="100%" border="0" cellspacing="5" cellpadding="2" align="center">
<tr bgcolor=#404040>
<td align=left><font size=2 color=ffffff face=verdana><b></td>
<td align=left width=10%><font size=2 color=ffffff face=verdana><b>N. venda</td>
<td align=left><font size=2 color=ffffff face=verdana><b>Cod.:</td>
<td align=left width=50%><font size=2 color=ffffff face=verdana><b>Produto</td>
<td align=left width=5%><font size=2 color=ffffff face=verdana><b>Qtd.</td>
<td align=left width=10%><font size=2 color=ffffff face=verdana><b>R$ Un.</td>
<td align=left width=10%><font size=2 color=ffffff face=verdana><b>R$ Total</td>
<td align=left width=15%><font size=2 color=ffffff face=verdana><b>Vendedor</td>
<td align=left width=10%><font size=2 color=ffffff face=verdana><b>Data</td
</tr>

<% 
While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF)) 

%>

<tr><form action="venda_finaliza.asp" method="post">
<td bgcolor=#E1E1E1 align=left>
<input type="hidden" name="funcionario_venda" value="<%=Recordset1("funcionario_venda")%>">
<input type="hidden" name="dados" value="<%=Recordset1("id_venda")%>">
<input type="submit" value="I" name="B1">
</td></form>
<td bgcolor=#E1E1E1 align=left><font size=2 color=000000 face=verdana><b><%=Recordset1("id_venda")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><%=Recordset1("id_produto")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana> <%=Recordset1("produto")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><%=Recordset1("quantidade")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><b> <%=Recordset1("valor_venda")%> ,00</td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><b>  <%=Recordset1("quantidade")* Recordset1("valor_venda")%> ,00 </td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><%=Recordset1("funcionario_venda")%></td>
<td bgcolor=#E1E1E1 align=left><font size=1 color=000000 face=verdana><%=Recordset1("data_venda")%></td>
</tr><TR><TD BGCOLOR=000000 COLSPAN=9></TD></TR>

<% 
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  Recordset1.MoveNext()
Wend
%>
</table>

<%=formatcurrency (Recordset1("quantidade")* Recordset1("valor_venda"))%>

<%end if %>

<%
Recordset1.Close()
%>


#6 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 06/11/2009, 10:09

Maxwell de uma olhada no "local" onde eu estou agregando o valor da variável de total.
Para ter um total dos valores você precisa adicionar a variável auxiliar os valores de cada um dos registros,
sendo assim esta adição precisa estar dentro do loop (While)!!

Veja comando a comando que você vai perceber aonde encaixar!!
Eu até poderia colocar a solução pronta aqui mas acredito que lhe passando as dicas o resultado será melhor,
pois você irá fixar e assim futuramente, identificará com maior facilidade esse caso para novas funcionalidades!

Renato Maia, muito bem lembrado, a tempos não utilizo a formatcurrency, e para nosso colega Maxwell
caso queira dar uma olhada no que o VBScript disponibiliza vale a pena olhar este link: VBScript Functions (ver Format Functions)!

Valeu pela colaboração Renato! ;-)

Edição feita por: Renan L. Queiroz, 06/11/2009, 10:10.

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image


#7 Maxwell

Maxwell

    Turista

  • Usuários
  • 33 posts
  • Sexo:Masculino
  • Localidade:Guarulhos/SP

Posted 06/11/2009, 14:37

Maxwell de uma olhada no "local" onde eu estou agregando o valor da variável de total.
Para ter um total dos valores você precisa adicionar a variável auxiliar os valores de cada um dos registros,
sendo assim esta adição precisa estar dentro do loop (While)!!

Veja comando a comando que você vai perceber aonde encaixar!!
Eu até poderia colocar a solução pronta aqui mas acredito que lhe passando as dicas o resultado será melhor,
pois você irá fixar e assim futuramente, identificará com maior facilidade esse caso para novas funcionalidades!

Renato Maia, muito bem lembrado, a tempos não utilizo a formatcurrency, e para nosso colega Maxwell
caso queira dar uma olhada no que o VBScript disponibiliza vale a pena olhar este link: VBScript Functions (ver Format Functions)!

Valeu pela colaboração Renato! ;-)


Ok. desisto! ja tentei de tudo o que posso mexer... obrigado pelas dicas.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq