ACESSAR UMA SUB LOCALIZADA NO GLOBAL.ASA

HIDDEN 28/01/2013 16:26:06
#418226
Estou fazendo uma aplicação rápida para uma intranet, com ASP clássico.

No Global.asa tenho o seguinte:

<SCRIPT LANGUAGE=[Ô]VBScript[Ô] RUNAT=[Ô]Server[Ô]>

Sub Session_OnStart

GetDB()

End Sub

Sub Session_OnEnd

End Sub

Sub GetDB()

Set Session([Ô]conn_crmexpress[Ô])=Server.CreateObject([Ô]ADODB.Connection[Ô])
gb_ConnString = [Ô]Driver={MySQL ODBC 5.1 Driver};server=mysql.nrserver22.net;uid=user_crd_betesda;pwd=951753;database=wdb_crd_betesda;port=3306[Ô]
Session([Ô]conn_crmexpress[Ô]).ConnectionString = gb_ConnString
Session([Ô]conn_crmexpress[Ô]).Open

End Sub

</SCRIPT>


Criei uma sub chamada GetDB, para se conectar ao banco. Funciona se eu fizer chamada a sub em Session_OnStart. Porém, se eu chamar essa sub de uma outra página, não da certo. Existe alguma forma de declarar essa sub, de forma que possa ser chamada de qualquer página?
KERPLUNK 28/01/2013 16:51:45
#418231
Da maneira como você quer, não. Você pode criar um script asp e colocar a função GetDB dentro dela e chamar de dentro do Global.asa, mas uma vez que colocar no Global.asa, não tem como acessar. Questão de segurança.
HIDDEN 28/01/2013 17:02:19
#418235
Eu percebi que não dava mesmo. Então fiz uma pequena gambiarra.

Criei uma varável session chamada Session([Ô]conn_crmexpress[Ô]) no global.asa. Criei um arquivo de inclusão e nele coloquei a função:

	Sub DBOpen_CRMExpress()

If Session([Ô]SessionStart[Ô])=False Then
Set Session([Ô]conn_crmexpress[Ô])=Server.CreateObject([Ô]ADODB.Connection[Ô])
Session([Ô]gb_ConnString[Ô]) = [Ô]Driver={MySQL ODBC 5.1 Driver};server=mysql.nrserver22.net;uid=user_crd_betesda;pwd=951753;database=wdb_crd_betesda;port=3306[Ô]
Session([Ô]conn_crmexpress[Ô]).ConnectionString = Session([Ô]gb_ConnString[Ô])
Session([Ô]conn_crmexpress[Ô]).Open
Session([Ô]SessionStart[Ô]) = True
End If

End Sub

Sub DBClose_CRMExpress()
If Session([Ô]SessionStart[Ô])<>False Then
Session([Ô]conn_crmexpress[Ô]).Close
Set Session([Ô]conn_crmexpress[Ô])=Nothing
End If
End Sub


Então faço uma referência a esse arquivo na página, para poder chamar a função. Assim, Session([Ô]conn_crmexpress[Ô]) pode ser chamada apenas uma vez, enquanto durar a seção.
KERPLUNK 28/01/2013 17:12:46
#418237
é uma alternativa também, colocar a conexão na Session. Mas lembre que isso pode onerar o servidor se usar mais variáveis em sessão, multiplique pelo número de usuários e vai ter o quanto isso ocupa.
HIDDEN 28/01/2013 19:50:25
#418262
Eu sei. Mas vai rodar em uma intranet, com acessos limitados.
KERPLUNK 28/01/2013 19:57:16
#418264
Então é tranquilo...
MARCELO.TREZE 28/01/2013 22:28:00
#418269
Gente não sei to sendo repetitivo mas veja

Citação:

Estou fazendo uma aplicação rápida para uma intranet, com ASP clássico.



caramba gente, aqui é forum VB/VBA, existe o forum asp.classico e asp.net, onde esta duvida deveria estar sendo postada, não que eu não queira ajudar, mas suponha que a ajuda de um colega daqui resolva o problema, nniguém que frequenta o forum asp que possa ter a mesma duvida saberá. E isso porque? porque a duvida está no forum errado.

galera vamos nos policiar.
HIDDEN 29/01/2013 12:55:23
#418302
Eu postei aqui porque eu quis postar aqui. A sintaxe de linguagem á a mesma e praticamente todo programador VB desenvolve em ASP. E este forum é bem mais acessado, com respostas mais rápidas.
Tópico encerrado , respostas não são mais permitidas