Ir para conteúdo

POWERED BY:

Arquivado

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

acfelipesilva

Nível Expert - Dificuldade 5 - Paginação

Recommended Posts

Saudação Senhores,

 

Peço a ajuda de vcs novamente para mais essa dificil missão, trata-se de uma consulta-relatório onde rola paginação de dados (ASP + SQL SERVER), toda vez que o resultado dá mais de uma página, quando clico no px aparece o erro:

Microsoft OLE DB Provider for SQL Server error '80040e14'

 

Line 1: Incorrect syntax near ','.

 

/PortalJuridico/Mostra_Relatorio.asp, line 30

Li aqui no Imasters e em outros grandes foruns (SuperAsp e Msdn-br), mas ninguém conseguiu matar essa charada, uns alegam supõem que seja a falta de passagem de parametros na parte de próximo e anterior (isso na parte final do código)... Tentei mexer na questão de cursosres , alterando a linha 30 para obRS2.Open sql, objCmm, 3, 3 // LINHA 30, aí deu outro erro já na linha 138... Bom, resultado dessa brincadeira, NINGUÉM até hoje consegu resolver isso, acho que vou até postar como desafio... Quem poder me ajduar nesse caso, eu agradeço MUITO, pois esse problema tá muito dificil de resolver...

 

Obrigado a todos que poderem ajudar...

 

Augusto Silva - Belém - Pa

 

<% @ LANGUAGE="VBSCRIPT" %><%Session.LCID = 1046%><%Dim varAdvogado, varGereg, varDireg, varAgencia, varOrigem, sqlvarAdvogado = Request("Adv")	'("sel_numrel")varDireg	= Request("dirger")	'("sel_numrel")varGereg	= Request("gereg")	'("sel_gereg")varAgencia	= Request("agencia")'("sel_agenc")varOrigem	= Request("origem")	'("sel_advg")if varOrigem = "0" or varOrigem = "" then	varOrigem = ""end if'Abrimos a Conexão com o BancoSET objCmm  = CreateObject("ADODB.Connection")'Selecionamos todos os Produtos da TabelaSET obRS2 = server.CreateObject("ADODB.Recordset")obRS2.CursorLocation = 3'obRS2.CursorType = 0'obRS2.LockType = 1objCmm.Open Application("strConn")sql = " exec sp_RelatorioContratos_SIMPLIFICADO " & varAdvogado & " ," & varDireg & "," & varGereg & ",'" & varOrigem & "'," & varAgencia   [b]obRS2.Open sql, objCmm[/b] // LINHA 30'Definimos o Numero de Paginas com a propriedade "PageSize" do objeto RecordsetobRS2.PageSize = 4TotalRegistros = obRS2.RecordCount'Criamos as Validaçõesif obRS2.eof then  Response.Write ("Nenhum Registro Encontrado!")  Response.End else  'Definimos em qual pagina o visitante está  if Request.QueryString("pagina")="" then    intpagina = 1  else   if cint(Request.QueryString("pagina"))<1 thenintpagina = 1   elseif cint(Request.QueryString("pagina"))>obRS2.PageCount then   intpagina = obRS2.PageCount	 else  intpagina = Request.QueryString("pagina")end if   end if     end if  	end if%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Relatório</title><style>.texto_pagina{font-family: Tahoma, Verdana, Arial;font-size: 11px;color: dimgray;}.TProdutos{border: 1px solid #666666;margin: 2px 0px 2px 0px;background: #FFFFFF;border-collapse:collapse;width: 100%;}.TProdutos td {border: 0px solid #666666;border-collapse:collapse;}.TProdutos td#Titulo {border: 0px solid #666666;font: 7pt Verdana, Arial, Helvetica;height: 17px;background: #063d97;color:#FFFFFF;}.TProdutos td#Dados {border: 1px solid #CCCCCC;font: 7pt Verdana, Arial, Helvetica;height: 18px;background: #EAEFFF;color: #666666;}</style><link href="estilos/impressao.css" rel="stylesheet" type="text/css" media="print"></head><body><table width="100%" border="0" cellspacing="0" cellpadding="0" class="texto_pagina">  <tr>	<td width="66%"><img src="images/logo_basa.GIF" alt="" width="212" height="50"></td>	<td width="13%"> </td>	<td width="21%"> </td>  </tr>  <tr>	<td>Portal Jurídico v1.0 </td>	<td> </td>	<td>Data de Emissão:<%=date%></td>  </tr>  <tr>	<td>Relatório de Contratos Terceirizados </td>	<td> </td>	<td>Página:<%=intpagina%></td>  </tr>  <tr>	<td></td>	<td> </td>	<td>Total de registros: <%=TotalRegistros%></td>  </tr></table><table border="0" align="center" class="TProdutos"> <tr>  <td align="center" id="Titulo">Gerência</td>  <td align="center" id="Titulo">Origem</td>  <td align="center" id="Titulo">Contrato</td>  <td align="center" id="Titulo">Advogado</td>  <td align="center" id="Titulo">Objeto</td>  <td align="center" id="Titulo">Jurisdição</td>  <td align="center" id="Titulo">Data Inicial</td>  <td align="center" id="Titulo">Data Final</td>  <td align="center" id="Titulo">Status</td> </tr> <%  'Iniciamos o Loop[b]  obRS2.AbsolutePage = intpagina[/b]//LINHA 138  intrec = 0  While intrec < obRS2.PageSize and not obRS2.eof  %> <tr>  <td align="center" id="Dados"><%=obRS2("ger_den")%></td>  <td align="center" id="Dados"><%=obRS2("vchAdv_OriCon")%></td>  <td align="center" id="Dados"><%=obRS2("numAdv_contrato")%></td>  <td align="center" id="Dados"><%=obRS2("At_NOME")%></td>  <td align="center" id="Dados"><%=obRS2("vchAdv_Obj")%></td>  <td align="center" id="Dados"><%=obRS2("vchAdv_Jurisdicao")%></td>  <td align="center" id="Dados"><%=obRS2("vchAdv_DatIni")%></td>  <td align="center" id="Dados"><%=obRS2("vchAdv_DatFim")%></td>    <td align="center" id="Dados"><%=obRS2("statusctr")%></td> </tr> <%  obRS2.MoveNext  intrec = intrec + 1  if obRS2.eof then 	response.write " "   end if    Wend  %> <tr>  <td colspan="3" align="left" id="Dados"></td>  <td align="center" id="Dados">  <%   'Criamos as Validações para a navegação "Anterior" e "Próximo"   if intpagina > 1 then   %>   <a href="Mostra_Relatorio.asp?pagina=<%=intpagina - 1%>">Anterior</a>   <%   end if  if StrComp(intpagina,obRS2.PageCount)<>0 then   %>  <a href="Mostra_Relatorio.asp?pagina=<%=intpagina + 1%>">Próximo</a>   <%  end if  obRS2.close  Set obRS2 = Nothing  %>  </td> </tr> </table></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

possivelmente seja porque no link da paginação você não está passando os parametros para a stored procedure, está assim

<a href="Mostra_Relatorio.asp?pagina=<%=intpagina + 1%>">Próximo</a>
e ficaria algo tipo isso

<a href="Mostra_Relatorio.asp?pagina=<%=intpagina + 1%>&Adv="<%=varAdvogado%>"&dirger="<%=varDireg%>"&gereg="<%=varGereg%>"&agencia="<%=varAgencia%>"&origem="<%=varorigem%>"">Próximo</a>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro jonathan,Ainda persiste o erro abaixo, vouexplicar a idéia da funcionalidade para que talvez consigamos achar a raiz do problema, estou disponibilizando para o usuário um formulário composto de 05 combobox por onde ele pode montar o seu relatório, sendo que os campos podem ou não ser preenchidos pelo usuário, se ele não preencher nada a consulta traz o banco todo, caso ele preencha só uma combobox a consulta traz o dados pertinetes aquela combobox, se ele preencher duas a consulta traz o resultados cruzados das combobox, e por aí vai...Vou postar minha stored procedure, talvez possa ter algum erro nela e quem sbae vcs possam modificar, né!?!?!?Obriagado por toda ajuda, pois estou precisando e muito (rs), só falta essa parte para que possa entregar o sistema aqui na Empresa, daí a minha agonia(rs).

Microsoft OLE DB Provider for SQL Server error '80040e14' Line 1: Incorrect syntax near ','. /PortalJuridico/Mostra_Relatorio.asp, line 25

STORED-PROCEDURE
SET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GOALTER		  PROCEDURE sp_RelatorioContratos_SIMPLIFICADO    @NUMADV_CODIGO INT = 0  ,@VCHADV_GESDIR INT = 0  ,@VCHADV_GESGER INT = 0  ,@VCHADV_ORICON VARCHAR(50) = ''  ,@VCHADV_GESAG INT = 0    AS	set nocount on	DECLARE @PARAMETRO NVARCHAR(2000), @SQL nvarchaR(4000)IF @NUMADV_CODIGO<>0 	SET @PARAMETRO= 'NUMADV_CODIGO =' + CAST(@NUMADV_CODIGO AS VARCHAR(10))ELSEBEGIN	SET @PARAMETRO= ''ENDIF @VCHADV_GESDIR<>0 BEGIN	IF @PARAMETRO<>'' 	BEGIN		SET @PARAMETRO= @PARAMETRO + ' AND VCHADV_GESDIR =' + CAST(@VCHADV_GESDIR AS VARCHAR(10))	END	ELSE	BEGIN		SET @PARAMETRO= 'VCHADV_GESDIR =' +  CAST(@VCHADV_GESDIR AS VARCHAR(10))	ENDENDIF @VCHADV_GESGER<>0 BEGIN	IF @PARAMETRO<>'' 		SET @PARAMETRO=  @PARAMETRO + ' AND VCHADV_GESGER ='+   CAST(@VCHADV_GESGER AS VARCHAR(10)) 	ELSE		SET @PARAMETRO= 'VCHADV_GESGER =' +   CAST(@VCHADV_GESGER AS VARCHAR(10)) ENDIF @VCHADV_GESAG<>0 BEGIN	IF @PARAMETRO<>'' 	BEGIN		SET @PARAMETRO=  @PARAMETRO + ' AND VCHADV_GESAG =' +  CAST(@VCHADV_GESAG AS VARCHAR(10))  	END	ELSE	BEGIN		SET @PARAMETRO= ' VCHADV_GESAG = ' +  CAST(@VCHADV_GESAG AS VARCHAR(10))	ENDENDIF @VCHADV_ORICON<>'' BEGIN	IF @PARAMETRO<>'' 	BEGIN		SET @PARAMETRO=  @PARAMETRO + ' AND VCHADV_ORICON =''' +  @VCHADV_ORICON + ''''	END	ELSE	BEGIN		SET @PARAMETRO= 'VCHADV_ORICON = ' +  @VCHADV_ORICON	ENDENDSET @SQL= 'SELECT ADV.numAdv_codigo, ADV.numAdv_contrato, ADV.vchAdv_OriCon,ADV.vchAdv_GesDir,ADV.vchAdv_GesGer, ADV.vchAdv_GesAg,ADV.vchAdv_Jurisdicao, ADV.vchAdv_DatIni, ADV.vchAdv_DatFim,ADV.vchAdv_Obj,ADV.statusctr,ADVS.At_NOME, ADVS.At_END,ADVS.At_CID, ADVS.At_UF, ADVS.At_TEL_FAX, DIREG.vchDg_Des,GERE.ger_den,AGEN.UNI_DEN FROM tbAdvogado ADV INNER JOIN tbAdvogados ADVS ON (ADVS.Ai_CODIGO = ADV.numAdv_codigo) INNER JOIN tbAuxDiGer DIREG ON (DIREG.numDg_Cod = ADV.vchAdv_GesDir)INNER JOIN tbAuxGereg GERE ON (GERE.RUN_COD = ADV.vchAdv_GesGer)INNER JOIN AGENCIASNOVA AGEN ON (AGEN.AGE = ADV.vchAdv_GesAg) WHERE ' +@PARAMETRO+ 'ORDER BY VCHADV_GESGER ASC'exec sp_executesql  @SQL GOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade não alegam que falte a passagem de parâmetros nos links "Anterior" e "Próximo", é que falta mesmo!

 

Essas variáveis/parâmetros (abaixo) devem ser passadas

varAdvogado = Request("Adv")
varDireg = Request("dirger")
varGereg = Request("gereg")
varAgencia = Request("agencia")
varOrigem = Request("origem")

Assim como o Jonathan postou ali acima, só sobrou uma aspa a mais no final do link.

 

Cole aqui como estão os links já no html processado para verificarmos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande Salgado,Meu irmão, fiz as modficações como sugeridas... Notei que o que está ocorrendo é que quando clico em próximo a sql novamente é executada, daí dei um responde.write na sql e veio os dados abaixo, ou seja, quando ela é novmanete excutada (no ato de clicar em px) por algum motivo os parametros desaparecem...Bom, eu pensei mas não sie implementar, solicito a ajdua de vcs para isso, vi que tem um programa chamado dataform2 e vi como ele faz a paginação da consulta (entendi + ou - ), bom, a idéia é que lá a consulta é executada apenas uma vez, e o resultado fica gravado na memória (acho que é isso), e quando usuário clica em próximo ou anterior ele descarrega o que já tem guardado anteriormente, agora como é que faz isso? Eu não sei (rs).... Mas acho que a solução para o meu caso é esse, "bolar" de algum jeito que a consulta fique com dados guardados de uma só vez, e sãod escarregados parte a parte conforme o usuário for clicando para avançar ou retroceder as páginas...Postei abaixo o retorno da sql na segunda vez que é executada, e o erro quando clico em px pela 1º vez...Agradeço a todos que poderem ajudar, de uma maneira ou outra!Pesquisei bastante sobre esse tema, e encontrei que ninguém resolve essa "bronca", assim sendo, seria um bom exemplo para os assim como eu, não conseguem dar vazão aos seus trabalhos devido a falta de uma maior experiência com programação avançada!!!

exec sp_RelatorioContratos_SIMPLIFICADO ,,,' ',

Microsoft OLE DB Provider for SQL Server error '80040e14' Line 1: Incorrect syntax near ','. /PortalJuridico/Mostra_Relatorio_Completo.asp, line 26 // linha 26 - script ASPobRS2.Open sql,objCmm

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, é como o Jonathan fez:

<a href="Mostra_Relatorio.asp?pagina=<%=intpagina + 1%>&Adv=<%=varAdvogado%>&dirger=<%=varDireg%>&gereg=<%=varGereg%>&agencia=<%=varAgencia%>&origem=<%=varorigem%>">Próximo</a>

Mas com algumas correções.

 

Isso deve ser feito tanto no Anterior quanto no Próximo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

exatamente...valeu pela correção salgado, eu escrevi no editor do forum e me passei nas aspas

Compartilhar este post


Link para o post
Compartilhar em outros sites

PARABAÉNS, a vocês era isso mesmo!!!Não consegui "enxergar" essa solução, vocês virão tão facilmente...Muito orbigado mesmo, vocês nãoq quebraram um galho, quebraram uma floresta (rs)...Muito obrigado mesmo, agora vou postar nos outros fóruns, para que mais e mais pessoas possam saber sobre essa solução, sempre lembrando de vcs...Um abraço,Augusto César

Compartilhar este post


Link para o post
Compartilhar em outros sites
Pelo visto o único grande fórum é o iMasters que soluciona os casos :assobiando:
Que comentário maldoso tiu Jonathan :hehehe:

 

Eu tinha pensado nisso :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ia ficar quieto, mas não podia perder essa rsrs

Pô gente,A galera dos outros fóruns também se esforçam em atender, uns sabem mais que os outros (isso é fato), eles também já me ajudaram em outras situações, só que essa em especial, pesquisei bastante e agora que vi uma solução decente...Vou compartilhar com as outras pessoas que passam por esta situação...Mais uma vez obrigado por tudo...Um abraço,Augusto

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.