Ir para conteúdo

POWERED BY:

Arquivado

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

peedrow!!

[Resolvido] Problema com SUB

Recommended Posts

Oi pessoal

 

Bom, estou desenvolvendo um sisteminha aqui na empresa, utilizando pela primeira vez sub's, functions e procedures.

 

Sempre prefiri incluir paginas ASP separando pelas pastas para organizar melhor.

Agora quero utilizar sub

 

mas me ocorre um erro, que simplismente eu não consigo entender o por que

 

eu tenho uma pagina onde alimentarei com dados do banco uma select.

criei a seguinte sub para executar isto

 

<%
               sub alimenta_usuario()
			Dim usuario_id, sql_mostrar, rs_mostrar
				
				usuario_id = Session("Usuario_id")
				rs_mostrar = Server.CreateObject("ADODB.Recordset")
				sql_mostrar = "Execute SP_mostar_perfil_profissional @Usuario_id='"&usuario_id&"'"
				set rs_mostrar = conexao.execute(sql_mostrar)	
               end sub
%>

até ai tudo certo função deveria rodar beleza.

quando eu chamo a função na página que eu alimentarei a select

também ocorre direitinho sem nenhum erro.

 

<%call alimenta_usuario()%>
Agora chamando a sub na pagina, vou querer utilizar o recordset para deixar pré-definido a select de acordo com a ultima alteração no BD

 

 

 

   <select name="slcUnidadeEmpresa">
   <option selected="selected"><%=rs_mostrar("sigbe_empresa_unidade")%></option>
   </select>

ele me gerá o seguinte erro:

 

Erro de tempo de execução do Microsoft VBScript (0x800A000D)

Tipos incompatíveis: 'rs_mostrar'

Agora vem o mais "Hilário", quando eu pego a instrução asp colo em uma página e dou um include file

 

funciona que é uma beeeelezaa

 

Juro que nao entendi simplismente nada,

e não achei nada parecido na internet

 

Por favor preciso muuuito de ajuda

 

Meu emprego dpende disto ("Dramático?Magina!!")

 

 

Brigadão

Compartilhar este post


Link para o post
Compartilhar em outros sites

falta o SET na linha que cria o objeto

 

Set rs_mostrar = Server.CreateObject("ADODB.Recordset")

 

porém se você não vai fazer um cursor pra guardar o resultado de uma consulta(select) não precisa setar o objeto, basta fazer

 

conexao.execute(sql)

Compartilhar este post


Link para o post
Compartilhar em outros sites

falta o SET na linha que cria o objeto

 

Set rs_mostrar = Server.CreateObject("ADODB.Recordset")

 

porém se você não vai fazer um cursor pra guardar o resultado de uma consulta(select) não precisa setar o objeto, basta fazer

 

conexao.execute(sql)

 

Cara eu preciso usar os resultados destas selects, entao preciso do recordset

eu so utilizei o ADODB.Recordset por recomendação interna

 

geralmente eu apenas crio desta forma

set rs_record = conexao.execute(sql)
mas mesmo assim com sua dica n funcionou não

realmente nao consigo entender

 

ja até levei em conta que poderia ser no call da sub como muad de uma pagina para outra poderia perder o valor,

mas a sub só é executada quando chamanda, ou seja, so é executada na pagina

 

 

VAle lembrar que a instrução FUNCIONA com include file

so nao funciona com call sub!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique se o Session("Usuario_id"), k você esta recuperando esta com o mesmo tipo de dados passado pela sua SP stored procedure, e na hora de dar o Call tente assim:

 

Call alimenta_usuario

 

e naun eskça de colocar o include do arquivo para chamar na Call

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique se o Session("Usuario_id"), k você esta recuperando esta com o mesmo tipo de dados passado pela sua SP stored procedure, e na hora de dar o Call tente assim:

 

Call alimenta_usuario

 

e naun eskça de colocar o include do arquivo para chamar na Call

 

Já verifiquei, mesmo tipo de dados INT em ambos e o call modifiquei pra Call msm assim dá erro

Como eu disse é só usando função que ele da o Erro, se colocar um include file, roda direitinho!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Variáveis ou objetos internos de Sub ou Functions devem ser declaradas como Public ou devem ser declaradas antes das chamadas de execução dessas Subs ou Functions.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Variáveis ou objetos internos de Sub ou Functions devem ser declaradas como Public ou devem ser declaradas antes das chamadas de execução dessas Subs ou Functions.

 

 

Certo, mas como eu faço para declarar meu recordset como publico?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fora da Sub ou Function coloque dim SuaVar, SeuObjeto que já resolve.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom que pudemos ajudar.

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.