Ir para conteúdo

Arquivado

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

Edson L. Zimmermann

Receber Dados do Access com ASP

Recommended Posts

Bom Dia a todos,

 

Estou dois dias pesquisando sobre como exibir dados oriundos de um banco de dados Access no flash, li vários tópicos nesse forum, porém como as pessoas muitas vezes já sabem fazer e estão com dúvidas pra quem não sabe fica dificil de entender a conversa.

Bom o que eu preciso? R: Exibir dados de uma tabela do Access no flash, esses dados em forma de listagem até que a tabela chegue ao fim, então posso fazer isso via XML, ou usando LoadVars, eu tentei os dois casos, e nos dois não deu certo, então antes de mais nada gostaria de saber qual das duas formas é a melhor, para que posso postar aqui a maneira como estou fazendo.

 

Grato a Todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prefiro fazer utilizando XML. Os dados vem mais organizados na minha opinião.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prefiro fazer utilizando XML. Os dados vem mais organizados na minha opinião.

 

Bom dia, bom usando XML eu consegui fazer um arquivo, o action do arquivo é o seguinte:

 

System.useCodepage = true;
var arquivo:XML = new XML();
arquivo.load("arquivo.xml");
arquivo.ignoreWhite = true;
arquivo.onLoad = function() {
	clipe.loadMovie(this.childNodes[0].childNodes[0].attributes.imagem);
	legenda.text = this.childNodes[0].childNodes[0].attributes.legenda;
}

 

tenho duas dúvidas, como faço o arquivo XML receber os dados do Access e como faço o Flash exibir as informações na tela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que o hargon quis dizer é que você vai usar o Asp ou o Php, para fazer a consulta e na hora de dar a saida você da essa saida em xml, dentro do asp, ai quando o flash receber ele recebe como xml.

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que o hargon quis dizer é que você vai usar o Asp ou o Php, para fazer a consulta e na hora de dar a saida você da essa saida em xml, dentro do asp, ai quando o flash receber ele recebe como xml.

Abs

 

Certo...então eu fiz esse arquivo ASP abaixo, e ele pega os dados do Banco de dados e exibe em forma de XML

 

<%@ LANGUAGE="VBSCRIPT" %>
<%
sql = "Select * from produtos "
provedor = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="& Server.MapPath("banco.mdb")
Set bd = Server.CreateObject("ADODB.Connection")
bd.Open provedor

Set listar = Server.CreateObject("ADODB.RecordSet")
listar.Open sql, bd, 3, 3

Response.ContentType="text/xml"
%>
<?xml version="1.0" encoding="iso-8859-1"?>
<clientes>
<%Do while Not listar.EOF%>
  <produtos>
      <grupo><%=listar(1).value%></grupo>
      <subgrupo><%=listar(3).value%></subgrupo>
      <nome><%=listar(2).value%></nome>
      <descricao><%=listar(4).value%></descricao>
      <foto><%=listar(5).value%></foto>
   </produtos>
<%listar.MoveNext : Loop%>
</clientes>
<%
listar.close
Set listar = nothing
bd.close
Set bd = nothing
%>

Agora, como mando isso pro Flash?

 

Obrigado pela resposta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve o XML com um nome fixo e abra no flash tal XML

 

Abraços

 

O problema é que quando tento fazer isso no flash ele dá erro ao ler o arquivo, porém se eu uso um arquivo xml normal sem asp junto ai dá certo. O AC que eu usei no primeiro frame pra testar foi esse:

 

System.useCodepage = true; 
var arquivo:XML = new XML(); 
arquivo.load("cp_geraxml.xml"); 
arquivo.ignoreWhite = true; 
arquivo.onLoad = function() { 
trace(this); 
}

O Código da página Xml citada:

 

<%@ LANGUAGE="VBSCRIPT" %>
<%
sql = "Select * from produtos "
provedor = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="& Server.MapPath("banco.mdb")
Set bd = Server.CreateObject("ADODB.Connection")
bd.Open provedor

Set listar = Server.CreateObject("ADODB.RecordSet")
listar.Open sql, bd, 3, 3

Response.ContentType="text/xml"
%>
<?xml version="1.0" encoding="iso-8859-1"?>
<clientes>
<%Do while Not listar.EOF%>
  <produtos>
      <grupo><%=listar(1).value%></grupo>
      <subgrupo><%=listar(3).value%></subgrupo>
      <nome><%=listar(2).value%></nome>
      <descricao><%=listar(4).value%></descricao>
      <foto><%=listar(5).value%></foto>
   </produtos>
<%listar.MoveNext : Loop%>
</clientes>
<%
listar.close
Set listar = nothing
bd.close
Set bd = nothing
%>

O erro na tela de saída do Flash é esse:

 

Error opening URL 'file:///C|/Inetpub/wwwroot/happy/cp_geraxml.xml'

Se alguém puder ajudar eu agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a pagina tem que ser executada de um servidor ASP, então faça o seguinte

 

 

renomeia a pagina pra "cp_geraxml.xml.asp"

 

e no flash, chame ela assim:

 

arquivo.load("http://localhost/site/cp_geraxml.xml.asp");

com isso ela vai funcionar rodando de dentro do flash (com CTRL + ENTER)

 

quando você for colocar no servidor web, pode tirar o "http://localhost...."

 

e deixar só o nome do arquivo

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

a pagina tem que ser executada de um servidor ASP, então faça o seguinte

 

 

renomeia a pagina pra "cp_geraxml.xml.asp"

 

e no flash, chame ela assim:

 

arquivo.load("http://localhost/site/cp_geraxml.xml.asp");

com isso ela vai funcionar rodando de dentro do flash (com CTRL + ENTER)

 

quando você for colocar no servidor web, pode tirar o "http://localhost...."

 

e deixar só o nome do arquivo

 

 

[]´s

 

Ok, minha dúvida agora que falta resolver é no Flash, entendo pouco de action script tem algumas coisas na internet mais não consigo compreender...

 

System.useCodepage = true; 
var arquivo:XML = new XML(); 
arquivo.load("cp_geraxml.asp"); 
arquivo.ignoreWhite = true; 

Até aqui eu entendi, mais para jogar os dados num campo de texto por ex..como eu faço isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora você tem que ir navegando nos "nós" do XML, até acessar o que você quer

 

dá uma lida nesse tutorial

 

 

[]´s

 

Ok eu li tudo...entendi um pouco...

System.useCodepage = true;
var MeuXML:XML = new XML();
MeuXML.ignoreWhite = true;
MeuXML.onLoad = function($sucesso){
var $i, $x, $y, $nome, $valor;
if($sucesso){
trace("- " + MeuXML.firstChild.nodeName) // Meusite
for($i=0; $i<MeuXML.firstChild.childNodes.length; $i++){
trace("  - " + MeuXML.firstChild.childNodes[$i].nodeName);
for($x=0; $x<MeuXML.firstChild.childNodes[$i].childNodes.length; $x++){
trace("    - " + MeuXML.firstChild.childNodes[$i].childNodes[$x].nodeName);
for($y=0; $y<MeuXML.firstChild.childNodes[$i].childNodes[$x].childNodes.length; $y++){
$nome = MeuXML.firstChild.childNodes[$i].childNodes[$x].childNodes[$y].nodeName;
$valor = MeuXML.firstChild.childNodes[$i].childNodes[$x].childNodes[$y].firstChild.nodeValue;
trace("      - " + $nome + ": " + $valor);
}
}
}
}else{
trace($sucesso);
trace("Ocorreu algum erro ao carregar os dados.");
}
}
MeuXML.load("cp_geraxml.asp"); 

Eu modifiquei a última linha que diz respeito ao arquivo que gera o xml, as outras linhas confesso que não entendi se preciso alterar alguma coisa.

 

Porque no swf não aparece nada, acredito que deva fazer alguma coisa pra que isso aconteça e no trace apareceu assim: -undefined

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

agora você tem que ir navegando nos "nós" do XML, até acessar o que você quer

 

dá uma lida nesse tutorial

 

 

[]´s

 

Ok eu li tudo...entendi um pouco...

System.useCodepage = true;
var MeuXML:XML = new XML();
MeuXML.ignoreWhite = true;
MeuXML.onLoad = function($sucesso){
var $i, $x, $y, $nome, $valor;
if($sucesso){
trace("- " + MeuXML.firstChild.nodeName) // Meusite
for($i=0; $i<MeuXML.firstChild.childNodes.length; $i++){
trace("  - " + MeuXML.firstChild.childNodes[$i].nodeName);
for($x=0; $x<MeuXML.firstChild.childNodes[$i].childNodes.length; $x++){
trace("    - " + MeuXML.firstChild.childNodes[$i].childNodes[$x].nodeName);
for($y=0; $y<MeuXML.firstChild.childNodes[$i].childNodes[$x].childNodes.length; $y++){
$nome = MeuXML.firstChild.childNodes[$i].childNodes[$x].childNodes[$y].nodeName;
$valor = MeuXML.firstChild.childNodes[$i].childNodes[$x].childNodes[$y].firstChild.nodeValue;
trace("      - " + $nome + ": " + $valor);
}
}
}
}else{
trace($sucesso);
trace("Ocorreu algum erro ao carregar os dados.");
}
}
MeuXML.load("cp_geraxml.asp"); 

Eu modifiquei a última linha que diz respeito ao arquivo que gera o xml, as outras linhas confesso que não entendi se preciso alterar alguma coisa.

 

Porque no swf não aparece nada, acredito que deva fazer alguma coisa pra que isso aconteça e no trace apareceu assim: -undefined

 

Boa Tarde a todos, resolvi testar ao invés de XML usar o loadvars que parece ser indicado nesse caso. Infelizmente cheguei no mesmo erro do xml -undefined não faço idéia de como resolver isso. portanto vou postar abaixo o código asp e o flash.

 

Grato

 

Asp

 

<%@ LANGUAGE="VBSCRIPT" codepage="1252"%>
<%
provedor = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="& Server.MapPath("banco.mdb")
Set bd = Server.CreateObject("ADODB.Connection")
bd.Open provedor

Set listar = Server.CreateObject("ADODB.RecordSet")
sql = "Select * from produtos "
listar.Open sql, bd, 3, 3

listar.movefirst
nome = listar("prod_nome")
desc = listar("prod_desc")
%>
<html>
<head>
<title>Teste</title>
</head>
<body>
<%response.Write(nome)%> - <% response.Write(desc) %>
</body>
</html>

Flash

 

var pegavar:LoadVars = new LoadVars();
pegavar.load("http://localhost/happy/testeload.asp");
pegavar.onLoad = function(){
trace(this.nome);
texto1.text = this.nome;
trace(this.desc);
texto2.text = this.desc;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

o formato para passar valores por loadVars, é

 

&variavel=valor&variavel=valor

 

 

 

então você tem que imprimir assim:

 

 

<%
nome = listar("prod_nome")
desc = listar("prod_desc")
%>
&nome=<%response.Write(nome)%>&desc=<% response.Write(desc) %>

 

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

o formato para passar valores por loadVars, é

 

&variavel=valor&variavel=valor

 

 

 

então você tem que imprimir assim:

 

 

<%
nome = listar("prod_nome")
desc = listar("prod_desc")
%>
&nome=<%response.Write(nome)%>&desc=<% response.Write(desc) %>

 

 

 

[]´s

 

 

Você tem razão, li bastante sobre esse assunto nesses dias, mais esse detalhe passou despercebido, obrigado, mais ainda assim não está dando certo, ao invés da aparecer no flash no valor da variável aparece o texto do código como na imagem abaixo:

 

Imagem Postada

 

O Asp está assim:

 

<%@ LANGUAGE="VBSCRIPT"%>
<!--#include file="conex.asp"-->
<%
set listar = Server.CreateObject("adodb.recordset")
sql = "select * from produtos order by prod_id desc"
listar.open sql,conex, 3,3
%>
<%nome = listar("prod_nome")
desc = listar("prod_desc")%>
&nome=<%response.Write(nome)%>&desc=<%response.Write(desc)%>

e o AC assim:

 

var pegavar:LoadVars = new LoadVars();
pegavar.onLoad = function(success):Void {
	if (success){
     trace(this.nome);
     texto1.text = this.nome;
     trace(this.desc);
     texto2.text = this.desc;
	}
	else
	{
		trace("Falha no carregamento");
	}
}
pegavar.load("testeload.asp");

Agredeço mais uma vez, e peço que continues me ajudando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é o mesmo problema que eu falei no meu 1º post lá em cima, tem que executar a partir de um

servidor web, com http://localhot......

 

 

 

 

[]´s

 

Ponto pra você novamente, já mudei tanto pra testar que esqueci desse detalhe também, agora só me falta uma dúvida, como exibir os dados em forma de lista na tela do flash, no asp agente faz um while ou loop e no action script? Alías como eu passo isso do ASP pro flash?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem que fazer o ASP gerar ums string nesse formato

 

&nome1=abc&nome2=def&nome3=ghi

 

 

fazendo isso, no flash, você recpera cada um assim:

 

 

texto1.text = this.nome1;
texto2.text = this.nome2;
texto3.text = this.nome3;

 

 

se for fazer dinamico:

 

for(contador=0; contador<3; contador++){
eval("texto" + contador).text = this["nome" + contador];
}

 

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem que fazer o ASP gerar ums string nesse formato

 

&nome1=abc&nome2=def&nome3=ghi

 

 

fazendo isso, no flash, você recpera cada um assim:

 

 

texto1.text = this.nome1;
texto2.text = this.nome2;
texto3.text = this.nome3;

 

 

se for fazer dinamico:

 

for(contador=0; contador<3; contador++){
eval("texto" + contador).text = this["nome" + contador];
}

 

 

 

[]´s

 

 

Seguinte a parte do ASP eu consegui fazer, imprime na tela assim:

 

&nome0=Happy&desc0=Happy &nome1=Sofá&desc1=Sofá &nome2=Mesa&desc2=Mesa &nome3=Cadeira&desc3=Cadeira &nome4=dedo&desc4=dedo &nome5=casa&desc5=casa &nome6=Teste&desc6=Te

Agora vou ser bem franco, não faço idéia em como puxar tudo isso no flash em forma de loop.

 

Agora preciso do Beabá mesmo.

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom ai fica mais fácil se você mandar uma array para o flash já...

nome = []
nome[0] = Happy;
nome[1] = Sofá;
nome[2] = Mesa;


<% response.Write(nome) %>

Ai no flash se for carregar como LoadVars heim

 

var lv:LoadVars = new LoadVars();
var objetos:Array = new Array();

lv.load("arquivo.asp");
lv.onLoad = function(ok){
 if(ok){
	for(var i = 0; i < lv.nome.length; i++){
 objetos[i] = lv.nome[i];
 }
 }else {
	trace('Você errou no código ou arquivo inexistente');
 }
}

Seria algo mais ou menos assim :)

 

Ou se quiser faz com um for pegando _root.nome que vai ser uma array e trabalhar com ela ;)

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom ai fica mais fácil se você mandar uma array para o flash já...

nome = []
nome[0] = Happy;
nome[1] = Sofá;
nome[2] = Mesa;


<% response.Write(nome) %>

Ai no flash se for carregar como LoadVars heim

 

var lv:LoadVars = new LoadVars();
var objetos:Array = new Array();

lv.load("arquivo.asp");
lv.onLoad = function(ok){
 if(ok){
	for(var i = 0; i < lv.nome.length; i++){
 objetos[i] = lv.nome[i];
 }
 }else {
	trace('Você errou no código ou arquivo inexistente');
 }
}

Seria algo mais ou menos assim :)

 

Ou se quiser faz com um for pegando _root.nome que vai ser uma array e trabalhar com ela ;)

 

Abraços

 

 

Olá amigo, obrigado pela ajuda....

 

Alterei sua sugestão para o meu fla, e ficou assim agora:

 

var pegavar:LoadVars = new LoadVars();
var objetos:Array = new Array();
pegavar.load("http://localhost/happy/testeload2.asp");
pegavar.onLoad = function(ok) {
	if (ok){
       for(var i = 0; i < pegavar.nome.length; i++){
		 objetos[i] = pegavar.nome[i]; 
	  }
	 }else{
	   trace("Falha no carregamento");
	}
}

Quando digito Ctrl+Enter nao aparece nada nos campos de texto, claro por que não tem nenhum comando nesse código aparentemente que manda fazer certo? minha pergunta agora é onde vai esse comando por ex trace(this.nome).

 

Obrigado até o momento.

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.