Notax Postado Setembro 14, 2007 Denunciar Share Postado Setembro 14, 2007 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 à <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Ó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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Ajudando por gostar de ajudar Postado Setembro 14, 2007 Denunciar Share Postado Setembro 14, 2007 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, 2valor_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: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Notax Postado Setembro 14, 2007 Autor Denunciar Share Postado Setembro 14, 2007 (editado) 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 à <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Ó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 Setembro 15, 2007 por Notax Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Notax Postado Setembro 17, 2007 Autor Denunciar Share Postado Setembro 17, 2007 consegui pessoal... muito obrigado pela força...ficou assim:strsql2 = "select SUM(valor) as tvalor from a_pagar" objrs2.open strsql2, objconn, 3, 2 valor_resultado = objrs2 ("tvalor") Response.Write(objrs2.fields("tvalor").value)forte abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bareta Postado Setembro 17, 2007 Denunciar Share Postado Setembro 17, 2007 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 coisao 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 coisao 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,,... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Notax Postado Setembro 17, 2007 Autor Denunciar Share Postado Setembro 17, 2007 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... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bareta Postado Setembro 20, 2007 Denunciar Share Postado Setembro 20, 2007 hehehehehehe...com certeza agora olhe meus primeiros posts no forum e vai que noobiçe que era...kkkkkkkkkkk Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Notax
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 é:
o meu script que está funcionando sem funções de somatório está integral abaixo: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
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.