Ir para conteúdo

POWERED BY:

Arquivado

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

Paulo Miranda

ASP Obtendo os dados de um recordset gerados em um outro ASP

Recommended Posts

Olá Pessoal,

 

Preciso de ajuda no seguinte: Tenho duas páginas ASP, sendo uma com o layout que será apresentado ao usuário, e a outra só para a pesquisa no banco de dados, este último deverá retornar o resultado do RecordSet para o primeiro ASP.

A dúvida é a seguinte: Quando defino no primeiro combo o tipo de logradouro, devo chamar a segunda ASP (arraylogra.asp) e o resultado desta página ASP (variável 'oRs') deverá ser utilizado na primeira página ASP (consultasgeral.asp). A pergunta é : como fazer para rodar o arraylogra.asp e retornar o valor do recordset 'oRs' para ser utilizado pela página consultasgeral.asp ?

 

Segue abaixo as páginas ASP.

 

CONSULTASGERAL.ASP

---------------------------
<head>
<title>Teste</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">

function PopulaCombo(id_tipo)
{
// alert("Tipologra = "+ id_tipo);
if (id_tipo != 0)
{
ArrayTipo = oRs;
}
else
{
Remove();
return
}

document.form.Logradouros.disabled = false;
document.form.Logradouros.options.length = 0;

for (i=0; i <= ArrayTipo.length-1; i++)
{
window.document.form.Logradouros.options[i] = new Option(ArrayTipo[i],i);
}
}

function Remove()
{
var opcoes = document.form.Logradouros.options;

for (i=0; i <= opcoes.options.length+2; i++)
{
opcoes.options.remove(0);
}
opcoes.disabled = true;
}

</script>


<table><tr><td></td></tr></table>
<div align="center">
<center>
<table width="100%" border="0" align="center">
<tr>
<td class="texto-form-vinho">Consulta a Logradouros</td>
</tr>
</table>
<table width="100%" align="center">
<tr>
<td bgcolor="#903145"><span class="text-form-cert-m"><font size="3" face="Verdana, Arial, Helvetica, sans-serif">Escolha 
aqui o tipo e o nome do logradouro.</font></span></td>
</tr>
<tr>
<td bgcolor="#903145"><form name="form" method=get action=ArrayLogra.asp>
Tipo Logradouro      Nome Logradouro<br>
<select name="tipo" id="tipo" onchange="PopulaCombo(this.value)">
<option value="0">Selecione</option>
<option value="1">Aterro</option>
<option value="2">Avenida</option>
<option value="3">Beco</option>
<option value="4">Caminho</option>
<option value="5">Campo</option>
<option value="6">Escadinha</option>
<option value="7">Estrada</option>
<option value="8">Ladeira</option>
<option value="9">Largo</option>
<option value="10">Ilha</option>
<option value="11">Morro</option>
<option value="12">Parque</option>
<option value="13">Praça</option>
<option value="14">Rua</option>
<option value="15">Rodovia</option>
<option value="16">Travessa</option>
<option value="17">Trevo</option>
<option value="18">Via</option>
<option value="19">Vila</option>
</select>
      
<label><select name="Logradouros" disabled style="width:100px"><option value=""></option></select></label>
</form>
 
<input name="BtnTipo" type="submit" id="BtnTipo" value="Consultar">
<input name="Limpar campos" type=reset value=Limpar></td>
</tr>
<tr>
<td bgcolor="#903145"><span class="color_form"><font size="3" face="Verdana, Arial, Helvetica, sans-serif" class="text-form-cert-m">E, por favor, aguarde as opções carregarem.</font></span></td>
</tr>
</table>
</center>
</div>
</center>
</div>
</table>
</html>

 

ARRAYLOGRA.ASP

---------------------

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Teste</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body topmargin="10" leftmargin="10" bgcolor="#903145">
<%
var oConn; 
var oRs;
var filePath; 
var tipologra;
tipologra=Request.QueryString("tipo");
Response.Write("Tipo = " + Request.QueryString("tipo"));
filePath = Server.MapPath("setimo.mdb");
// Cria um componente de conexão ADO para conectar ao banco de dados
oConn = Server.CreateObject("ADODB.Connection");
oConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +filePath);
// Executa uma query SQL e coloca o resultado no redorset
oRs = oConn.Execute("SELECT Nom_Lograd From TB_Logradouros Where Tip_Lograd=" + "'" + tipologra + "'"); 
%>

<% 
oRs.close();
oConn.close();
%>
<!-- Fim da Rotina de liberação de variáveis de memória -->
</body>
</html>

 

Agradeço antecipadamente,

Paulo Miranda

Compartilhar este post


Link para o post
Compartilhar em outros sites

No inicio da página CONSULTASGERAL.ASP coloque:

<!--#include file="arraylogra.asp"-->

 

Lembrando que as duas devem está na mesma raiz, caso contrário terá que informar a pasta no include.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hargon, muito obrigado pela resposta rápida, porém não funcionou muito bem.

O estranho é que se você perceber, eu coloquei a linha "Response.Write("Tipo = " + Request.QueryString("tipo"));" na página arraylogra.asp, e o programa agora mostra a seguinte mensagem: "Tipo = undefined", porém o tipo é a variável que passo da página consultasgeral.asp.

 

O que pode ser ?

 

Paulo Miranda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Altera em arraylogra

tipologra=Request.QueryString("tipo");
If (tipologra.lenght > 0){
Response.Write("Tipo = " + Request.QueryString("tipo"));
}

Em CONSULTASGERAL, altera a action para CONSULTASGERAL.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funcionou!

Deixa eu tentar me expressar melhor. O meu objetivo é o seguinte: Quando eu escolher o tipo de logradouro, o campo nome do logradouro deverá habilitar automaticamente e os ítem devem ser todos os logradouros obtidos no recordset que correspondam a exigência do select.

Quando eu coloco a linha de comando <!--#include file="arraylogra.asp"--> no início da página consultasgeral.asp ele gera a seguinte mensagem na tela: "Tipo = undefined", isto porque eu executei ele antes mesmo de ter selecionado o tipo de logradouro, porém se coloco este esta linha de comando (<!--#include file="arraylogra.asp"-->) após já ter selecionado o tipo de logradouro, esta linha de comando não é executada.

 

Linha de comando no início da página (recebo a mensagem "Tipo = undefined")

-------------------------------------------

 

<!--#include file="arraylogra.asp"-->
<head>
<title>7º Registro Geral de Imóveis</title>
<link href="/7rgi.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">

function PopulaCombo(id_tipo)
{
//	alert("Tipologra = "+ id_tipo);
	if (id_tipo != 0)
		{
		ArrayTipo = oRs;
		}
	else
	{
		Remove();
		return
	}

document.form.Logradouros.disabled = false;
document.form.Logradouros.options.length = 0;

for (i=0; i <= ArrayTipo.length-1; i++)
	{
	  window.document.form.Logradouros.options[i] = new Option(ArrayTipo[i],i);
	}
}

Linha de comando onde já tenho o tipo de logradouro (nada acontece")
-------------------------------------------

<head>
<title>7º Registro Geral de Imóveis</title>
<link href="/7rgi.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">

function PopulaCombo(id_tipo)
{
//	alert("Tipologra = "+ id_tipo);
				<!--#include file="arraylogra.asp"-->
	if (id_tipo != 0)
		{
		ArrayTipo = oRs;
		}
	else
	{
		Remove();
		return
	}

document.form.Logradouros.disabled = false;
document.form.Logradouros.options.length = 0;

for (i=0; i <= ArrayTipo.length-1; i++)
	{
	  window.document.form.Logradouros.options[i] = new Option(ArrayTipo[i],i);
	}
}
Na primeira mensagem que enviei, se você copiar e colar as páginas no notepad e chamar as páginas no browser, verá que tem algo de errado acontecendo com a rotina, mas não consigo identificar o que é.

 

Desculpe estar te dando este trabalho todo e muito obrigado novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você quer , assim que o user escolher as opções no Logradouros, tipo, "Avenida"

ele passar esse dados para a pagina que faz a consulta e depois retornar os dads de Avenida, para a 1º pagina !?!?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok. Entendi, nesse caso o interessante é você utilizar Ajax.

 

Faça uma pesquisa no laboratório de scripts que tem exemplos de Ajax + ASP.

 

Qualquer dúvida poste aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você poderia até mesmo popular o combo, fazer a consulta e retornar os dados na mesma, pagina, procure no forum, que existem codigos no laboratorio de scripts.

 

e olha este exemplo, você popula o comobo e quando ele receber o evento onChnage no combo , você recupera o valor do combo e faz a busca retornando os dados.

 

<% Option Explicit 

'declaro as var 
dim var1,var2,var3,....., etc 
'recupero as var 
varpais=request.querystring("pais") 
'crioa a conexao 
%> 

<!--# include file="conexao/conexao.asp"--> 

<% 
'abro a conexao 
Call abre_conexao 
'crio o rs 
set rspais=server.createobject("ADODB.Recordset") 
'crio a SQL 
SQLpais="SELECT * FROM pais ORDER BY nome" 
rspais.open SQLpais,conexao,1,3 
%> 


'aki vou criar o combo, onde no evento onchange ele irá enviar o value do combo pais para a mesma pag, para eu recuperar o codigo do pais e assim preencher o combo estado. 

<form action="pag_atual.asp"method="post"name="frmteste"> 
<select name="pais" size="1" Onchange="window.navigate('pag_atual.asp?pais='+frmteste.pais.value)"> 

<% while not rspais.eof%> 
<option value="<%=rs("cod_pais")%>"> 
<% if varpais=rs("pais") then 
response.write("Selecionado") 
end if%> 
<%=rs("nome")%> 
</option> 
<% rspais.movenext 
wend%> 
</select> 
<% set rspais=nothing
if varpais <> de "" then
'crio o SQL com o dado do combo
SQLestado="Select * from estado where cod_pais="&varpais&" Order by nome" 
'crio o rsestado 
set rsestado=server.createobject("ADODB.Recordset") 
rsestado.open SQLestado,conexao,1,3 
<%while not rsestado.eof%> 
' aki você mostra os dados...
'...
'....
entendeu...
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá, eu não sei se estou falando besteira, mas ele usou:

Response.Write("Tipo = " + Request.QueryString("tipo"));

pelo que eu saiba em asp não tem esse ";" no final e ao invés de "+" usa-se "&" como concatenação...

Response.Write("Tipo = " & Request.QueryString("tipo"))

tente com:

 

 

 

Espero ter ajudado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

é pq ele esta usando <%@LANGUAGE="JAVASCRIPT"

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.