Ir para conteúdo

POWERED BY:

Arquivado

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

santind2

[Resolvido] paginação

Recommended Posts

E ai pessoal,

 

Estou precisando de uma ajuda para fazer uma paginação em asp.

Dei uma estudada e fiz uma página antes de ir para o projeto mesmo. Deu até certo com essa página, porém quando fui colocar no meu projeto deu um erro que não estou sabendo resolver, justamente nessa linha

rsDados.AbsolutePage = intpagina

A descrição do erro é essa:

"

O conjunto de registros atual não oferece suporte para indicadores. Isso pode ser uma limitação do provedor ou do tipo de cursor selecionado.

"

 

Se alguém puder me ajudar fico grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Estou ainda na tentativa.

Fiz aqui com base em uns tutoriais mas continua dando erro. Meu banco é sql server 2000.

O erro que dá é este.

 

"ADODB.Recordset erro '800a0cb3'

O conjunto de registros atual não oferece suporte para indicadores. Isso pode ser uma limitação do provedor ou do tipo de cursor selecionado. "

 

Se puderem me ajudar ficou muito grato.

 

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Language" content="pt-br" />
<script language="JavaScript" src="js/validacao.js"></script>
<%
'Cria instância das classes
Set obFerramentas	= CreateObject("GarantiaEstendida.clsFerramentas")
%>
<form name="formulario" method="post" action="?stModulo=emitirCertificado&stacao=pesquisar" />
 <br /><br />
 <table width="100%"  border="0" cellpadding="0" cellspacing="0">
   <tr>
     <td class="titulo" align="center">Consulta / 2ª Via de Certificados / Paginação</td>
   </tr>
   <tr>
     <td align="right"><hr></td>
   </tr>
   <tr>
     <td align="right"><table width="100%"  border="0">
       <tr>
         <td colspan="3" class="titulo" align="center">Pesquisar</td>
         </tr>
       <tr>
         <td width="30%" align="right" class="titulo" align="right">Número do Certificado</td>
         <td width="60%" align="left"><input name="edtProposta" type="text" size="20" maxlength="15" class="caixa" value="<% Response.Write(Request.Form("edtProposta")) %>"></td>
       </tr>
       <tr>
         <td width="30%" align="right" class="titulo" align="right">CPF do cliente</td>
         <td width="60%" align="left"><input name="edtCpf" type="text" class="caixa" size="14" maxlength="11" onkeypress="somenteNumeros(document.formulario.edtCpf); mascara(this);" onBlur="validaCpf(document.formulario.edtCpf.value); mascara(this);" value="<% Response.Write(Request.Form("edtCpf")) %>" /></td>
       </tr>
      <tr>
         <td width="30%" align="right" class="titulo" align="right">Status</td>
         <td width="60%" align="left">
         <select id="cbxStatus" name="cbxStatus" class="caixa"/>
           <option value="2" <% If (request("cbxStatus") = "2") Then Response.Write("selected") End If %>>Todos</option>
           <option value="1" <% If (request("cbxStatus") = "1") Then Response.Write("selected") End If %>>Ativo</option>
           <option value="0" <% If (request("cbxStatus") = "0") Then Response.Write("selected") End If %>>Cancelado</option>
         </select>
           <input name="btnPesquisar" type="submit" value="Pesquisar" class="botao">
         </td>
       </tr>
     </table></td>

   </tr>
 </table>
<% 
'Verifica se o usuário efetuou a pesquisa
If (Request.QueryString("stAcao") = "pesquisar") Then 

%>
 <table width="100%" border="0">
<%
       'Objeto connection
       Set cnn = Server.CreateObject("ADODB.Connection")
       cnn.ConnectionString = "File Name="& Server.MapPath("conexao.udl") &";"
       cnn.Open

	'Cria os objetos recordset
	Set rsDados         = Server.CreateObject("ADODB.RecordSet")
	Set RsBaseProduto 	= CreateObject("ADODB.RecordSet")
	Set RsCliente   	= Server.CreateObject("ADODB.RecordSet")
	Set rsUsu           = Server.CreateObject("ADODB.RecordSet")

       'Valida os dados informados
       if CStr(Request.Form("edtProposta")) <> "" then
           NumCertificado = Request.Form("edtProposta")
       end if

       if  Trim(CStr(Request.Form("edtCpf"))) <> "" then
           NumCpf = Trim(CStr(Request.Form("edtCpf")))
           NumCpf = replace(NumCpf, ".","")
           NumCpf = replace(NumCpf, "-","")
       end if 

	'Resgata a versão da base de produto
	SqlIdBaseProduto = "Select max(id_versao_base_produto) from garantia_versao_base_produto "
	RsBaseProduto.open SqlIdBaseProduto, cnn
	IdVersaoBaseProduto = RsBaseProduto(0)
	Set RsBaseProduto = Nothing

       'Select na base de usuario
       SqLUsuario = " select id_usuario, id_pdv, id_estipulante, id_nivel from garantia_usuario where id_usuario = " & Request("mais_garantia")("intIdUsuario")
       rsUsu.Open SqLUsuario, cnn

       SqlCertificado = " select G.id_venda, G.dt_proposta, G.dt_proposta, G.num_certificado, G.dt_cancelamento, G.cd_status, G.vl_premio, GC.nr_cpf, GC2.nm_cliente, GP.ds_produto, G.id_usuario_proposta"
       SqlCertificado = SqlCertificado & " from garantia_venda G (nolock) "
       SqlCertificado = SqlCertificado & "	    inner join garantia_cliente GC (nolock) on G.id_cliente = GC.id_cliente "
       SqlCertificado = SqlCertificado & "	    left join garantia_venda_cliente GC2 (nolock) on G.id_cliente = GC2.id_cliente "
       SqlCertificado = SqlCertificado & "     inner join garantia_produto GP (nolock) on G.id_produto = GP.id_produto and GP.id_versaoBaseProduto = 1 "
       SqlCertificado = SqlCertificado & " where G.id_venda = GC2.id_venda"

    'Verifica os dados de filtro informados
       if NumCertificado <> "" then
           SqlCertificado = SqlCertificado & " and G.num_certificado = " & NumCertificado
       end if

       if NumCpf <> "" then
          SqlCertificado = SqlCertificado & " and GC.nr_cpf = '"&NumCpf&"'"
       end if

       if Request.Form("cbxStatus") = "1" then
            SqlCertificado = SqlCertificado & " and cd_status = 2"
       elseif Request.Form("cbxStatus") = "0" then
           SqlCertificado = SqlCertificado & " and cd_status = 3"
       end if

       'Verificacao pelo acesso do usuário pelo seu nível
       if rsUsu("id_nivel") <> 8 and rsUsu("id_nivel") <> 7 then
           'Vendedor
           if rsUsu("id_nivel") = 1 then
               SqlCertificado = SqlCertificado & " and G.id_usuario_proposta = " & rsUsu("id_usuario")
           end if

           'Gerente de loja
           if rsUsu("id_nivel") = 2 then
               SqlCertificado = SqlCertificado & " and G.id_pdv = " & rsUsu("id_pdv")
           end if

           'Gerente de rede
           if rsUsu("id_nivel") = 3 or rsUsu("id_nivel") = 4 then
               SqlCertificado = SqlCertificado & " and G.id_estipulante = " & rsUsu("id_estipulante")
           end if

       end if
       SqlCertificado = SqlCertificado & " order by G.dt_proposta asc "

       rsDados.Open SqlCertificado, cnn, 3, 3

       'rsDados.CursorLocation = 3
       'rsDados.CursorType = 3


       'Definição do número de registro por páginas
       rsDados.PageSize = 5


       'Validação
	'Se o total de linhas retornadas for igual a zero, exibe uma mensagem informando que nenhum registro foi encontrado
	If (rsDados.EOF) Then
		'Exibe a mensagem de erro
		Response.Write("<tr><td colspan='4' class='titulo_erro' align='center'>Nenhum registro localizado!</td></tr>") & Chr(13)
	'Caso contrário, monta os dados
	else
           if  CInt(Request.QueryString("pagina")) < 1 then
               intpagina = 1
           else
               if  CInt(Request.QueryString("pagina")) < 1 then
                   intpagina = 1
               else
                   if  cint(Request.QueryString("pagina")) > rsDados.PageCount then
                       intpagina = rsDados.PageCount
                   else
                       intpagina = Request.QueryString("pagina")
                   end if
               end if
           end if
       end if   
%>

   <tr>
     <td colspan="8" class="titulo">Resultado da pesquisa</td>
   </tr>
   <tr>
     <td class="titulo" align="center">Data</td>
     <td class="titulo" align="center">Certificado</td>
     <td class="titulo" align="center">CPF</td>
     <td class="titulo" align="center">Nome</td>
     <td class="titulo" align="center">Produto</td>
     <td class="titulo" align="center">Valor</td>
     <td class="titulo" align="center">Status</td>
     <td class="titulo" align="center">Exibir</td>
   </tr>
<%

   rsDados.AbsolutePage = intpagina

   intrec = 0

'Laço para carregar os registros na tela
   While intrec < rsDados.PageSize and Not rsDados.EOF

       'Verifica se o seguro está cancelado ou não no sistema
       If (IsNull(rsDados("dt_cancelamento"))) Then
           boSeguroCancelado = True
       Else
           boSeguroCancelado = False
       End If

       stBgColor = obFerramentas.gridZebrado(stBgColor)

	'Resgata os dados do cliente
	SqlCliente = "select * from garantia_venda_cliente where id_venda = " & rsDados("id_venda")
	RsCliente.Open SqlCliente, cnn

        'Campo CPF com a formatação
        strCpf = formatar_cnpj_cpf(rsDados("nr_cpf"))

       'Status do Certificado
       cod_status = rsDados("cd_status")

       if cod_status = "2" then
           strStatus = "Ativo"
           boExibir = true
       else if cod_status = "8" then
           strStatus = "Aguardando Pagamento"
           boExibir = false
       else
           strStatus = "Cancelado"
           boExibir = false
       end if
       end if

%>      
   <tr>
	<td bgcolor="<% Response.Write(stBgColor) %>" align="center"><% Response.Write(obFerramentas.converteData(CDate(rsDados("dt_proposta")), 2)) %></td>
	<td bgcolor="<% Response.Write(stBgColor) %>" align="left"><% Response.Write(rsDados("num_certificado")) %></td>
	<td bgcolor="<% Response.Write(stBgColor) %>" align="left" width= "105px"><% Response.Write(strCpf) %></td>
	<td bgcolor="<% Response.Write(stBgColor) %>" align="left"><% Response.Write(RsCliente("nm_cliente")) %></td>
	<td bgcolor="<% Response.Write(stBgColor) %>" align="left"><% Response.Write(rsDados("ds_produto")) %></td>
	<td bgcolor="<% Response.Write(stBgColor) %>" align="left">R$ <% Response.Write(FormatNumber(rsDados("vl_premio"), 2)) %></td>
       <td bgcolor="<% Response.Write(stBgColor) %>" align="center"><% Response.Write(strStatus) %></td>
        <%if boExibir then%> 
           <td bgcolor="<% Response.Write(stBgColor) %>" align="center"><a href="javascript:fncTermo2(<% Response.Write(rsDados("id_venda")) %>);"><img src="images/botao_verde.gif" alt="Exibir Certificado" width="16" height="16" border="0"></a></td>
        <%else%>
           <td bgcolor="<% Response.Write(stBgColor) %>" align="center">
            <% if cod_status = "8" then %>
           <img src="images/botao_vermelho.gif" alt="Aguardando Pagamento" width="16" height="16" border="0" />
           <% else %>
               <a href="javascript:EmitirCertificadoCancelado(<% Response.Write(rsDados("id_venda")) %>);">
                   <img src="images/botao_vermelho.gif" alt="Certificado Cancelado" width="16" height="16" border="0" />
               </a>
           <% end if %>
           </td>
        <%end if%>

   </tr>
<% 
   RsCliente.Close
       'Avança uma linha no RecordSet
       rsDados.MoveNext

       intrec = intrec + 1

       if rsDados.EOF then
           Response.Write " "
       end if

   Wend
   'Loop do grid
   'Loop
%>
   <tr>
       <td colspan="5" align="center">
       <% 

   'Criamos as Validações para a navegação "Anterior" e "Próximo"  
   if intpagina > 1 then 
   %> 
       <a href="?stModulo=emitirCertificado&stacao=pesquisar&pagina=<%=intpagina-1%>">Anterior</a> 
   <% 
   end if
   if StrComp(intpagina,rsDados.PageCount) <> 0 then   
   %>
   <a href="?stModulo=emitirCertificado&stacao=pesquisar&pagina=<%=intpagina + 1%>">Próximo</a>  
   <%
   end if

   %>
       </td>
   </tr>
<%	
'Destroi o RecordSet
rsDados.Close
Set rsDados = Nothing
   Set rsUsu   = Nothing

'Fecha o if que verifica se retornou alguma linha
End if
%>
 </table>
 <script language="javascript" type="text/javascript">
     function EmitirCertificado(idVenda) {
         window.open('modulos/te_emitirCertificado.asp?idVenda='+idVenda);
     }

     function EmitirCertificado1(idVenda) {
         window.open('modulos/te_certificadogarantia.asp?idVenda=' + idVenda);
     }

     function EmitirCertificadoCancelado(idVenda) {
         //window.open('modulos/te_termocancelamento.asp?idVenda=' + idvenda, 'TERMO', 'width=860,height=700,scrollbars=yes,status=NO,location=NO,toolbar=NO,menubar=NO');
         //alert(idVenda);
         window.open('modulos/te_termocancelamento.asp?idVenda=' + idVenda, 'TERMO', 'width=860,height=700,scrollbars=yes,status=NO,location=NO,toolbar=NO,menubar=NO');
     }

    //função para invocar o termo de cancelamento
   function fncTermo2(idvenda, vlreebolso) {
       window.open('../sistema/modulos/te_certificadogarantia.asp?idVenda=' + idvenda + '&vlreembolso=' + vlreebolso, 'TERMO', 'width=860,height=700,scrollbars=yes,status=NO,location=NO,toolbar=NO,menubar=NO');
	<% Response.Write(stBloqueado) %>
   }

 </script>
<% 'End If
  ' end if
%>
 </form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

este erro pode ser causado pelos seguintes itens:

 

você estiver usando nomeado constantes (por exemplo adUseClient), mas se esqueceu de incluir Adovbs.inc

você tentou usar o NextRecordset() para processar vários conjuntos de resultados a partir de um provedor de acesso você tentou combinar as propriedades do lado do servidor de registros, por exemplo, cachesize, com um lado do cliente de registros (adUseClient) - certifique-se as propriedades que você está usando faz sentido para o tipo de conjunto de registros que você abriu

você tentou usar métodos avançados ou propriedades como bookmark, MovePrevious, ou AbsolutePage em objetos de registros padrão - certifique-se de definir o LockType correto e / ou CursorLocation (tem um post meu explicando sobre o LockType e cursortype)

você tentou recuperar a chave primária usando ADOX

você está tentando usar um objeto ADODB.Recordset com um tipo de bloqueio indevido com uma atualização ou addnew - usar um UPDATE ou INSERT em vez de um objeto Recordset

você está usando um objeto ADOX.Catalog (ou um dos vários outros objetos potenciais), e tentou fechá-lo. Tudo que você tem a fazer é definir um objeto catalog para nothing... ele não tem um método close().

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai..

Xanburzum, valeu pelos toques que me deu. Vou procurar ajustar meu código para deixar mais padrão.

Fiz aqui e deu certo depois que fiz assim:

 


Set rsDados = Server.CreateObject("ADODB.RecordSet")

rsDados.CursorLocation = 3
rsDados.CursorType = 3

rsDados.Open SqlCertificado, cnn

 

De toda forma está resolvido.

 

Obrigado mesmo!!

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.