Ir para conteúdo

Arquivado

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

ROBERTO PEREIRA

Abrindo janela popup para impressão fazendo referência a uma página em

Recommended Posts

Olá pessoal, gostaria da ajuda de vcs!

 

Tenho uma página de nome "content.asp", que mostra o conteúdo da página (Ex. content.asp?conteudo=1, content.asp?conteudo=2 e aí vai..), e a outra de nome "popup_impressao.asp", na qual gostaria de exibir somente o título e o texto para impressão, ou seja, fazer referência ao conteúdo da "ID" em questão.

 

Acontece que ao abrir a página "popup_impressao.asp", seguindo o código abaixo, ocorre o seguinte erro:

 

ADODB.Field erro '800a0bcd'

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual. popup_impressao.asp, linha 14

 

 

Content.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!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>
<title>Documento sem título</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="fonte.js"></script>

<script language="JavaScript">
function abriJanelaImpressao() {
	window.open('popup_impressao.asp', 'janela', "status=0, width=700, height=400, scrollbars=1,resizable=1")
}
</script>

<!-- conexão com o banco -->
<!-- #include file="config.inc" -->

<%session.LCID=1046%>

	<%			
	Dim ClasseLista
	Dim  NotClasse, imgm
		ClasseLista = Request.QueryString( "Classe" )
	conteudo = Request.QueryString( "conteudo" )
	Query = "SELECT * FROM conteudo WHERE id LIKE '"&(conteudo)&"' "
	Set Rs = DB.Execute(Query)
	NotClasse = Rs("Classe")
	Subclasse = Rs("Subclasse")
	Texto = Rs("Texto")
	Titulo = Rs("Titulo")
	ID = Rs("ID")
	VerID = Rs("ID")
	Imgm = Rs("img")
	%>

</head>
<body>

<!-- DIV conteudo -->
<div id="content_right">

<div class="ferramentas">
  <div class="left">
   <img onclick="javascript:history.back();" alt="voltar" src="voltar.gif" />
   <img onclick="javascript:abriJanelaImpressao();" alt="imprimir" src="imprimir.gif" />
  </div>

  <div class="right">
   <img onclick="javascript:PS_changeFont('mais')" alt="Aumentar texto" src="texto_mais.gif" />
   <img onclick="javascript:PS_changeFont('menos')" alt="Diminuir texto" src="texto_menos.gif" />
  </div>
</div>
		
   <br /><h2><%Response.Write Titulo%></h2>

   <cite id="materia-letra"><a rel="prettyPhoto[gallery1]" title="<%Response.Write Titulo%>" href="<%=rs("img")%>"><% if rs("img") <> "" Then %><img src="<%=rs("img")%>" width="210" height="139" class="alignleft preload"><% Else%><% End if%></a><%Response.Write Texto%></cite>


 </div>
<!-- // DIV conteudo -->

</body>
</html>

 

Popup_impressao.asp

<% Response.Charset="ISO-8859-1" %>
<!-- conexão com o banco -->
<!-- #include file="config.inc" -->

<%session.LCID=1046%>

	<%			
	Dim ClasseLista
	Dim  NotClasse, imgm
		ClasseLista = Request.QueryString( "Classe" )
	conteudo = Request.QueryString( "conteudo" )
		Query = "SELECT * FROM conteudo WHERE id LIKE '"&(conteudo)&"' "
	Set Rs = DB.Execute(Query)
	NotClasse = Rs("Classe")
	Subclasse = Rs("Subclasse")
	Texto = Rs("Texto")
	Titulo = Rs("Titulo")
	ID = Rs("ID")
	VerID = Rs("ID")
	Imgm = Rs("img")
	%>

</head>

<body>
   
<h2><%Response.Write Titulo%></h2>
<p><%Response.Write Texto%></p>

</body>
</html>

Valeu abraço a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua string SQL para ver o que esta sendo passado

response.write(SQL)
response.end()

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua string SQL para ver o que esta sendo passado

response.write(SQL)
response.end()
Companheiro, o problema é o seguinte, eu não estou sabendo como fazer, tipo para que todo conteúdo que eu abrir, daí ao abrir popup para impressão fazendo referência ao conteúdo especifico. Se eu por exemplo colocar na função javascript window.open('popup_impressao.asp?conteudo=1', 'janela', "status=0, width=700, height=400, scrollbars=1,resizable=1"), abre o conteúdo numa boa, só que daí faz sempre referência ao conteúdo nº 1, no caso ID=1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Companheiro, o problema é o seguinte, eu não estou sabendo como fazer, tipo para que todo conteúdo que eu abrir, daí ao abrir popup para impressão fazendo referência ao conteúdo especifico. Se eu por exemplo colocar na função javascript window.open('popup_impressao.asp?conteudo=1', 'janela', "status=0, width=700, height=400, scrollbars=1,resizable=1"), abre o conteúdo numa boa, só que daí faz sempre referência ao conteúdo nº 1, no caso ID=1.

 

Tenta fazer assim ...

 

ID = Request.Querystring("ID")

<script type="text/javascript" src="fonte.js"></script>

<script language="Javascript">
function abriJanelaImpressao() {
        window.open('popup_impressao.asp?ID=<%=ID%>', 'janela', "status=0, width=700, height=400, scrollbars=1,resizable=1")
}
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Companheiro, o problema é o seguinte, eu não estou sabendo como fazer, tipo para que todo conteúdo que eu abrir, daí ao abrir popup para impressão fazendo referência ao conteúdo especifico. Se eu por exemplo colocar na função javascript window.open('popup_impressao.asp?conteudo=1', 'janela', "status=0, width=700, height=400, scrollbars=1,resizable=1"), abre o conteúdo numa boa, só que daí faz sempre referência ao conteúdo nº 1, no caso ID=1.

 

Tenta fazer assim ...

 

ID = Request.Querystring("ID")

<script type="text/javascript" src="fonte.js"></script>

<script language="Javascript">
function abriJanelaImpressao() {
        window.open('popup_impressao.asp?ID=<%=ID%>', 'janela', "status=0, width=700, height=400, scrollbars=1,resizable=1")
}
</script>
Ocorre o mesmo erro:

ADODB.Field erro '800a0bcd'

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual. popup_impressao.asp, linha 14

Compartilhar este post


Link para o post
Compartilhar em outros sites

A causa mais provável, é que não há nenhum registro. Por exemplo, o que iria acontecer com o seguinte código, se nenhum dos registros contendo 'Frank' na coluna fname:

 

exemplo:

<% 
    set conn = CreateObject("ADODB.Connection") 
    conn.open <connection string> 
    set rs = conn.execute(<sql>) 
    do while not rs.eof 
        ' process 
        rs.movenext 
    loop 
    ' ... 
%>

Para evitar esse erro , você precisa de inserir uma pequena linha ,para o caso em que não há registros. A maneira mais fácil de fazer isso é adicionar as seguintes linhas:

 

if not rs.eof then

' process

rs.movenext

wend

else

response.write "No matches."

end if

' ...

%>

 

<% 
    set conn = CreateObject("ADODB.Connection") 
    conn.open <connection string> 
    set rs = conn.execute(<sql>) 
    if not rs.eof then 
        do while not rs.eof 
            ' processo 
            rs.movenext 
        loop 
    else 
        response.write "No matches." 
    end if 
    ' ... 
%>

Outra possível razão é que você está usando um procedimento armazenado que opera em uma tabela temporária, ou faz outras linhas que afectem a operação antes de sua instrução select. Para contornar este problema, emita o seguinte no início do seu procedimento armazenado:

 

SET NOCOUNT ON

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ocorre o mesmo erro:

ADODB.Field erro '800a0bcd'

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual. popup_impressao.asp, linha 14

 

 

O problema são as variáveis erradas, pois quando você faz o select, ele não encontra o valor da variável específica.

 

Tenta da mesma maneira que postei antes, só que agora com a variével certa.

 

content.asp

ID = Request.Querystring("conteudo")

<script type="text/javascript" src="fonte.js"></script>

<script language="Javascript">
function abriJanelaImpressao() {
        window.open('popup_impressao.asp?conteudo=<%=ID%>', 'janela', "status=0, width=700, height=400, scrollbars=1,resizable=1")
}
</script>

Tenta assim, e veja se agora funciona !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Confirme se no seu banco de dados, o campo ID da tabela Conteudo é um tipo numerico, se for, faça:

No arquivo Content.asp , altere de forma a ficar:

<script type="text/javascript">
function abrirJanelaImpressao(id) {
        window.open("popup_impressao.asp?conteudo="+ id, "janela", "status=0, width=700, height=400, scrollbars=1,resizable=1")
}
</script>

<img onclick="javascript:abrirJanelaImpressao(<%= ID %>);" alt="imprimir" src="imprimir.gif" />

 

No arquivo Popup_impressao.asp , deixe se código assim:

<%
Dim ClasseLista
Dim NotClasse, imgm
ClasseLista = Request.QueryString("Classe")
conteudo = Request.QueryString("conteudo")
Query = "SELECT * FROM conteudo WHERE id = " & conteudo
Set Rs = DB.Execute(Query)

If Not Rs.Eof Then
	NotClasse = Rs("Classe")
	Subclasse = Rs("Subclasse")
	Texto = Rs("Texto")
	Titulo = Rs("Titulo")
	ID = Rs("ID")
	VerID = Rs("ID")
	Imgm = Rs("img")
Else
	Titulo = "Pagina nao encontrada"
End If
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, antes de mais nada, agradeço pela atenção de vcs! Justamente o que eu estava me referindo, quando eu faço o select, ele não encontra o valor da variável específica. Qual seria a forma correta? Fiz as alterações, mas infelizmente ocorre o mesmo erro..

 

Pessoal, estive pesquisando, vê se esse tópico tem haver com que eu quero..

 

Quando desenvolvemos um sistema para web (usando PHP, ASP ou qualquer outra linguagem) as vezes esbarramos no problema de ter que obter um valor de um determinado campo que encontra-se numa janela popup. Vamos ao exemplo para que o problema fique mais claro. Imaginemos um cadastro de pedidos:

 

Na janela onde o pedido é cadastrado tem um campo para código do produto e logo após um link para buscar o produto através de uma lista. Clicando no link uma janela popup é aberta com uma listagem de produtos para que o usuário escolha. Ao escolher tem que enviar o código do produto escolhido para um campo que está na janela anterior.

 

Isto é extremamente simples usando um código escrito em Javascript nas duas janelas (janela chamadora e janela popup).

 

Um exemplo de janela chamadora do popup é a seguinte:

 

<html>
<head><title>Janela principal</title>
<script>
var Janela
function AbrirJanela()
{
   Janela = window.open("popup.htm", "Janela", "width=300,height=100,toolbar=no,status=no,menubar=no");
} 
</script>
</head>

<body>
<center>
  <form name="frm_principal" action="">
    <table>
      <tr>
        <td>Texto:</td>
        <td><input type="text" name="texto"></td>
      </tr>
      <tr>
        <th colspan="2"><a href="javascript:AbrirJanela();">Abrir Janela</a></th>
      </tr>
    </table>
   </form>
</center>
</body>
</html>

Agora a janela popup. Eu a chamei de "popup.htm" (veja que o código Javascript acima chama uma janela gravada com este nome). O código dela é:

 

<html>
<head><title>Janela Popup</title>
<script>
function enviaDados() 
{
    window.opener.document.frm_principal.texto.value = window.document.frm_popup.novoTexto.value;
    window.document.frm_popup.novoTexto.value = "";
    window.close();
}
</script>
</head>

<body>
<center>
  <form name="frm_popup" action="">
    <table>
      <tr>
        <td align="right">Texto:</td>
        <td><input type="text" name="novoTexto"></td>
      </tr>
      <tr>
        <td><input type="button" name="BtnEnviar" value="Alterar Texto" onClick="enviaDados()"></td>
        <td><input type="button" name="BtnFechar" value="Fechar Janela" onClick="window.close()"></td>
      </tr>
    </table>
  </form>
</center>
</body>
</html>

São dois truques que possibilitam esta troca de informação:

 

1. A janela popup tem que ser chamada de dentro da janela principal para que haja uma referência de quem a chamou;

2. Veja que o botão enviar (submit) chama o Javascript que faz referência a janela anterior e ao formulário específico, alterando diretamente o valor do campo.

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.