Ir para conteúdo
Fórum Script Brasil
  • 0

Somatório Em Consulta Por Periodo


Notax

Pergunta

Pessoal, agora to com um probleminha no meu somatório...

Tenho uma consulta por período e gostaria da mostrar o somatório total da coluna "valor" no final da consulta...

tentei colocar o código abaixo, mas ta mostrando este erro:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/padrão/a_pagar_resultado_consulta.asp, line 83

a linha 83 é:

Response.Write(objrs2.fields("valor").value)

o códi do somatório que tentei usar é:

set objrs2 = server.createobject("adodb.recordset")
strsql2 = "select SUM(valor) as tqt from a_pagar"
objrs2.open strsql2, objconn, 3, 2
Response.Writeln(objrs2.fields("valor").value)
Response.Writeln(objrs2.fields("tqt").value
o meu script que está funcionando sem funções de somatório está integral abaixo:
<%
Option Explicit
Response.Expires = 0
Dim objConn, objRs, strQuery, anoi, mesi, diai, anof, mesf, diaf, ComandoSQL, Conexao
Dim strConnection
anoi=year(Request.Form("dtInicial"))
mesi=month(Request.Form("dtInicial"))
diai=day(Request.Form("dtInicial"))
anof=year(Request.Form("dtFinal"))
mesf=month(Request.Form("dtFinal"))
diaf=day(Request.Form("dtFinal"))
Session.LCID=1033
ComandoSQL = "SELECT * FROM a_pagar WHERE DATA BETWEEN #" & DateSerial(anoi,mesi,diai) & "# and #" & DateSerial(anof,mesf,diaf) & "# ORDER BY DATA ASC"
'Set bd = Conexao.Execute(ComandoSQL)
Session.LCID=1046 
'Conectando com o banco de dados contato.mdb
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
'Seleciona da tabela contato
strQuery = "SELECT * FROM a_pagar"
Set ObjRs = objConn.Execute(ComandoSQL)
%>
<html>
<head>
<title>SJ Finance - à Pagar - consulta</title>
</head>
<body bgcolor="#FFFFFF">
<div align="center" style="width: 756; height: 119"> 
  <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif"><em><strong>Contas 
    &agrave; <font color="#FF0000">Pagar</font> (consulta)</strong></em></font></p>
  <table width="947" border="0" cellspacing="0" cellpadding="0" height="1">
    <tr>
      <td width="947" valign="top" height="136"> 
        <table border="0" cellpadding="0" cellspacing="0" width="958">
          <tr bgcolor="ffffff"> 
            <td width="958" colspan="3">
              <table width="100%" border="0" cellspacing="2" cellpadding="2">
                            </table>
              
            </td>
          </tr>
          <tr> 
            <td colspan="3"> 
              <form method="GET" action="action_excluir_a_pagar.asp">
                <table width="902" border="0" cellspacing="0" cellpadding="0" height="1">
                  <tr> 
                    <td height="1" align="center" width="952"> 
                      <table border="0" width="883" height="8" cellpadding="2">
                        <tr bgcolor="#0099FF"> 
                          <td width="96" height="1" align="center"> <font size="1" color="FFFFFF"><b><font face="Verdana">DATA</font></b></font></td>
                          <td width="318" height="1" align="center"> <font size="1" color="FFFFFF"><b></b> 
                            </font> <font size="1" color="FFFFFF"><b><font face="Verdana">HIST&Oacute;RICO</font></b> 
                            </font></td>
                          <td width="259" height="1" align="center"> <font size="1" color="FFFFFF"><b><font face="Verdana">TIPO</font></b></font></td>
                          <td width="184" height="1" align="center"><font size="1" color="FFFFFF"><b><font face="Verdana">VALOR</font></b> 
                            </font></td>
                        </tr>
                        <%While Not objRS.EOF %>
                        <tr bgcolor="#FF9900"> 
                          <td width="96" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <%Response.write objRS("data")%>
                              </font> </b></font></div></td>
                          <td height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              </font> </b></font> <font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif"> 
                              <%Response.write objRS("historico")%>
                              </font></b></font></div></td>
                          <td width="259" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif"> 
                              <%Response.write objRS("tipo")%></a>
                              </font></b></font></div></td>
                          <td width="184" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <%Response.write formatnumber(objRS("valor"),2)%>
                              </font></b></font></div></td>
                        </tr>
                        
                        <%
  'Movendo para o proximo registro
  objRS.MoveNext
  Wend
  'Fechando as conexões
  objRs.close
  objConn.close
  Set objRs = Nothing
  Set objConn = Nothing
  %>
                      </table>
                    </td>
                  </tr>
                </table>
              </form>
            </td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
</div>
</body>
</html>

desde já agradeço a força...

abração a todos

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Guest Ajudando por gostar de ajudar

Olá Notax.

È muito natural se confundir nestas somas terríveis em comandos SQL, uma verdadeira tortura aos neurônios.

Bom vamos lá a sua ajuda, na verdade o problema está na definição de sua string, o SQL não está entendendo o que você gostaria de fazer em parte, a parte que ele não está entendendo é como você quer capturar os dados para apresenta-los ao navegador.

Mas antes de mais nada vamos traduzir tudo isto e explicar melhor para você entender qual é a forma correta de usar SUM em suas strings sm SQL, vamos lá.

Tradução:

strsql2 = "select SUM(valor) as tqt from a_pagar"

Quando você usa SUM() você está definindo qual campo será calculado, quando você usa AS você está nomeando a referência de apresentação da soma, quando você utiliza From você está definindo os critérios a serem usados para validar a soma.

Exemplo prático:

SQL="SELECT Sum(Alunos) AS 2007 FROM Escola_joão_bosco Where ID='"&ID&"' and Ativa='1' and Data_cadastro Between '"&Data_inicio4&"' And '"&Data_fim&"'"

Neste caso todos os alunos da escola X será calculado e seu resultado será centralizado em Sum(Alunos), ao ser centralizado está informação deve ter um nome em especifico, neste caso usamos o AS para definir um nome em particular para o resultado centralizado em SUM(), neste caso usamos 2007.

Para apresentar o resultado que está centralizado em SUM() e nomeado com AS com o titulo de 2007 para o navegador devemos usar está string;

NOME_REFERENCIA = SET("NOME_UTILIZADO_EM_AS")

Em sua string ficaria assim:

set objrs2 = server.createobject("adodb.recordset")

strsql2 = "select SUM(valor) as tqt from a_pagar"

objrs2.open strsql2, objconn, 3, 2

valor_resultado = objrs2 ("tqt")

Response.Write("valor_resultado")

Um concelho:

Notax procure entender melhor como funciona a estrutura de o motor do banco de dados em especial seus comandos, os comandos e sua grande maioria são baseados no SQL comandos.

Antes de otimizar uma string você deve entender o que está sendo otimizado, porém otimizar em sua grande maioria das vezes é uma frescura do programador para impressionar ou valorizar seu trabalho, lembre-se o cliente não busca frescuras e sim soluções práticas e rentáveis, ou seja, frase do cliente “eu não entendo nada, porém se ficar lendo e não funcionar isto eu posso ver e irei ao procon” o que importa não é a velocidade que será feita à consulta e sim se ela realmente irá funcionar como deveria com um resultado satisfatórios as condições dos usuários do cliente, conhecer os clientes de seu cliente é a alma do negocio sobre otimização, otimizar são em casos extremos onde envolvem mais de 3 strings diferentes ou um grande número de usuários, otimização é feita depois de um determinado sucesso do web site para solucionar problemas de trafico, otimizar antes é perder trabalho futuro para um projeto de otimização para seu cliente.

Espero ter ajudado, forte abraço fica com Deus.

:rolleyes:

Link para o comentário
Compartilhar em outros sites

  • 0

Po valeu a força...

Não consegui "digerir" absolutamente tudo o que voce escreveu... mas gostei muito, até por que muitas vezes o que me falta é entender a lógica da coisa, já que os comandos eu até conheço... mas saber exatamente o que todos eles fazem eu ainda não sei... mas enfim, graças a sua ajuda bem como a de muitos outros que já me ajudaram aqui no forum estou podendo aprender cada vez mais...

No entanto, devo estar cometendo algum outro erro, pois montei meu código com as alterações sugeridas, e apesar de não ter aparecido mensagem de erro nenhuma, tb. não retornou o valor total...

meu código ficou assim: será que fiz mais alguma besteira?

<%
Option Explicit
Response.Expires = 0
Dim objConn, objRs, strQuery, anoi, mesi, diai, anof, mesf, diaf, ComandoSQL, Conexao, objrs2, strsql2, valor_resultado
Dim strConnection
anoi=year(Request.Form("dtInicial"))
mesi=month(Request.Form("dtInicial"))
diai=day(Request.Form("dtInicial"))
anof=year(Request.Form("dtFinal"))
mesf=month(Request.Form("dtFinal"))
diaf=day(Request.Form("dtFinal"))
Session.LCID=1033
ComandoSQL = "SELECT * FROM a_pagar WHERE DATA BETWEEN #" & DateSerial(anoi,mesi,diai) & "# and #" & DateSerial(anof,mesf,diaf) & "# ORDER BY DATA ASC"
'Set bd = Conexao.Execute(ComandoSQL)
Session.LCID=1046 
'Conectando com o banco de dados contato.mdb
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
'Seleciona da tabela contato
strQuery = "SELECT * FROM a_pagar"
Set ObjRs = objConn.Execute(ComandoSQL)
set objrs2 = server.createobject("adodb.recordset")
strsql2 = "select SUM(valor) as tqt from a_pagar"
objrs2.open strsql2, objconn, 3, 2
valor_resultado = objrs2 ("tqt")
Response.Write("valor_resultado")
%>
<html>
<head>
<title>SJ Finance - à Pagar - consulta</title>
</head>
<body bgcolor="#FFFFFF">
<div align="center" style="width: 756; height: 119"> 
  <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif"><em><strong>Contas 
    &agrave; <font color="#FF0000">Pagar</font> (consulta)</strong></em></font></p>
  <table width="947" border="0" cellspacing="0" cellpadding="0" height="1">
    <tr>
      <td width="947" valign="top" height="136"> 
        <table border="0" cellpadding="0" cellspacing="0" width="958">
          <tr bgcolor="ffffff"> 
            <td width="958" colspan="3">
              <table width="100%" border="0" cellspacing="2" cellpadding="2">
                            </table>
              
            </td>
          </tr>
          <tr> 
            <td colspan="3"> 
              <form method="GET" action="action_excluir_a_pagar.asp">
                <table width="902" border="0" cellspacing="0" cellpadding="0" height="1">
                  <tr> 
                    <td height="1" align="center" width="952"> 
                      <table border="0" width="883" height="8" cellpadding="2">
                        <tr bgcolor="#0099FF"> 
                          <td width="96" height="1" align="center"> <font size="1" color="FFFFFF"><b><font face="Verdana">DATA</font></b></font></td>
                          <td width="318" height="1" align="center"> <font size="1" color="FFFFFF"><b></b> 
                            </font> <font size="1" color="FFFFFF"><b><font face="Verdana">HIST&Oacute;RICO</font></b> 
                            </font></td>
                          <td width="259" height="1" align="center"> <font size="1" color="FFFFFF"><b><font face="Verdana">TIPO</font></b></font></td>
                          <td width="184" height="1" align="center"><font size="1" color="FFFFFF"><b><font face="Verdana">VALOR</font></b> 
                            </font></td>
                        </tr>
                        <%While Not objRS.EOF %>
                        <tr bgcolor="#FF9900"> 
                          <td width="96" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <%Response.write objRS("data")%>
                              </font> </b></font></div></td>
                          <td height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              </font> </b></font> <font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif"> 
                              <%Response.write objRS("historico")%>
                              </font></b></font></div></td>
                          <td width="259" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif"> 
                              <%Response.write objRS("tipo")%></a>
                              </font></b></font></div></td>
                          <td width="184" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <%Response.write formatnumber(objRS("valor"),2)%>
                              </font></b></font></div></td>
                        </tr>
                        
                        <%
  'Movendo para o proximo registro
  objRS.MoveNext
  Wend
  'Fechando as conexões
  objRs.close
  objConn.close
  Set objRs = Nothing
  Set objConn = Nothing
  %>
                      </table>
                    </td>
                  </tr>
                </table>
              </form>
            </td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
</div>
</body>
</html>

forte abraço

Editado por Notax
Link para o comentário
Compartilhar em outros sites

  • 0
Po valeu a força...

Não consegui "digerir" absolutamente tudo o que voce escreveu... mas gostei muito, até por que muitas vezes o que me falta é entender a lógica da coisa, já que os comandos eu até conheço... mas saber exatamente o que todos eles fazem eu ainda não sei...

isto torna essencial o uso do google de vez em quando para solucionar duvidas...

uma coisa que recomendo é sempre que possivel inventar alguma coisa

o que quase sempre te faz pesquisar como funciona o que faz o que, o que devo fazer... o que é melhor do que fazer somente quando existe a necessidade de tal coisa

o maior problema que vejo em muitos tópico nem sempre é relacionado a programação em si, mas esta em organizar as ideias e gerar a solução,,...

Link para o comentário
Compartilhar em outros sites

  • 0

Pois é... concordo em genero numero e grau com o que estás dizendo... realmente é uma grande dificuldade minha...

Adaptar os comandos "padrões" que os livros e apostilas ensinam às necessidades específicas... Tenho estudado e me dedicado muito, mas as vezes coisas "bobas" acontecem e eu não sei corrigi-las... como agora por exemplo, onde estou tentando desenvolver uma função que dependendo de algumas variáveis enviem para um ou outro destino... Parece barbada... mas pra mim to tomando um laço desgraçado... por que quando coloco esta função, uma outro que eu tenho para de funcionar... e antes de perguntar esta dúvida no fórum, fiz e estou fazendo diversas pesquisas pra procurar resolvê-la sem ajuda de terceiros...

Mas penso que este é o grande tesão do Fórum... este espaço democrático onde as pessoas podem perguntar o que bem entenderem... e quem bem entender pode responder o que bem quizer...

Agradeço sua atenção e toda a dedicação que o amigo tem demenstrado tanto com as minhas dúvidas como também com as dúvidas de várias pessoas...

Já disse isso pra Andreia_sp, pro Elber do fórum Access e agora pra ti... o que vocês fazem é muito nobre... procurar ajudar pessoas, sem conhecê-las a troco de nada... é muito bom isso... e espero aumentar cada vez mais meus conhecimentos para que eu possa algum dia ajudar tantas pessoas aqui no fórum como voces ajudam!

Um forte abraço...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...