Ir para conteúdo

POWERED BY:

Arquivado

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

TeixeiraRamos

[Resolvido] Usar a conexão #Include file

Recommended Posts

Por favor, tenho um arquivo "dbConexao.inc" que já trabalha com uma conexão de uma página fazendo as inclusões de dados em tabela sem problema algum.

Porem, gostaria que todos as minhas páginas "asp" também trabalhassem com esse arquivo fazendo a conexão com o banco de dados. Inclusive as páginas estam no mesmo caminho e no mesmo banco de dados.

O arquivo "dbConexão.inc" tem esse código:

<%
Sub AbreConexao
Set conexaoDataBase = Server.CreateObject("ADODB.Connection")
conexaoDataBase.CursorLocation=3
const cntCaminho = "C:\inetpub\wwwroot\Meu_novo_site\dados\info16br.mdb"	
conexaoDataBase.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cntCaminho  
end sub

sub FechaConexao
conexaoDataBase.close
set conexaoDataBase = nothing
end sub
%>	

 

A página que desejo colocar o:

<!--#Include file="dbConexao.inc"-->

 

Uma das páginas que desejo colocar o Include é a "logs.asp" que funciona muito com a conexão diretamente na HTML.

Não sei o que devo mudar nessa na página "logs.asp" além de digitar no início o <!--#Include file="dbConexao.inc"--> para que venha a trabalha com a conexão via Include.

 

Página logs.asp que desejo colocar o include.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!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>

<!--#Include file="dbConexao.inc"-->

<%
Set conexao=Server.CreateObject("ADODB.Connection")
conexao.open constring

'crio o rs
set rs=Server.CreateObject("ADODB.Recordset")
'crio o SQL
SQL="SELECT qry_registros_cadastrados.* FROM qry_registros_cadastrados"
rs.open SQL,conexao,1,3
.
.
.

</body>
</html>

A página acima apresenta na tela os registros de uma tabela e está funcinando normante sem o include.

Depois de ter incluído <!--#Include file="dbConexao.inc"--> ao abrir está apresentando o seguinte erro:

[color=000000]Tipo de erro:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Driver Manager] Nome da fonte de dados não encontrado e nenhum driver padrão especificado
[b]/meu novo site/logs.asp, line 15[/b][/color]

 

A linha 15 é:

conexao.open constring

 

Muito obrigado a quem puder ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique se as permissões estão corretas, geralmente isso é erro de permissão, se estiverem setadas corretamente verifique o MDAC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se fosse MDAC abriria outras páginas normalmente?

O erro indicando:

[color=000000]Tipo de erro:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Driver Manager] Nome da fonte de dados não encontrado e nenhum driver padrão especificado
[b]/meu novo site/logs.asp, line 15[/b][/color]

 

Não seria devido eu ter direcionado a conexão via "include" e não aletrar nada no código da página.

 

Não existe problema algum com MDAC como já informei essa mesma página "asp" abre perfeitamente em otro diretório , fosse MDAC nã abria.

Obrigado mas não foi resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

as permissões estão corretas, de direitos administrativos no arquivo e pasta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por favor, já verifiquei o que você sugeriu mas com todo respeito não é isso. As permissões estão corretas.

Essas páginas funcionam perfeitamente bem, com a conexão feita diretamente no HTML. Tudo funciona, ou seja, os registros das Tabelas são listados na páginas em asp.

Contudo depois que coloquei essa linha no código:

<!--#Include file="dbConexao.inc"-->

 

Passou a abrir uma página com erro:

[code
Tipo de erro:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Driver Manager] Nome da fonte de dados não encontrado e nenhum driver padrão especificado
/meu novo site/logs.asp, line 15
[/code]

<!--#Include file="dbConexao.inc"--> [/code]

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, não tem lógica o erro apresentado com o descrição do seu problema, uma vez que o include está sendo feito mas as "subs" contidas no mesmo não estão sendo chamadas na página que já contém outra conexão e, o erro é justamente por conta da outra conexão, resumindo, nada a ver com o include.

 

Quanto ao erro, se diz referente a este trecho de código:

Set conexao=Server.CreateObject("ADODB.Connection")
conexao.open constring

Onde "constring", deve ser a declaração do Driver e caminho do banco, o que não vejo no seus códigos e é exatamente a descrição do erro apresentado.

 

Uma dica: Evite utilizar arquivos de inclusão com as extensões ".inc", que podem ser visualizados pelo navegador, prefira nomear esses arquivos com a própria extensão ".asp".

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Public2004, você tem razão eu estou errando na sub e o pior é que eu não estou vendo lógica para transforma a página "logs.asp" que tem o códico de conexão no HTML para uma chamando via:

<!--#Include file="dbConexao.inc"-->

 

A página "logs.asp" sem o "include file" abre mostrando os registros na tela sem problema. Mas como transforma um código que faz a conexão via HTML e passar para "include file".

Não posso alterar o código do arquivo "dbConexao.inc" pois ele já faz a conexão de uma outra página.

Só para lembrar essa página "logs.asp" com a indicação

<!--#Include file="dbConexao.inc"-->

 

Ao abrir indica esse erro:

[color=000000]Tipo de erro:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Driver Manager] Nome da fonte de dados não encontrado e nenhum driver padrão especificado
[b]/meu novo site/logs.asp, line 15[/b][/color]

 

Linha 15

conexao.open constring

 

A pagina "logs.asp" que abre perfeitamente bem é um pouco grande e eu não sei até onde eu deve colocar o código para vocês avaliarem.

Vou repetir essa aqui abre perfeitamente só que desejo mudar a conexão de via HTML para <!--#Include file="dbConexao.inc"-->

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!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>

<%
conString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\inetpub\wwwroot\Meu novo site\dados\info16br.mdb"

Set conexao=Server.CreateObject("ADODB.Connection")
conexao.open constring

'crio o rs
set rs=Server.CreateObject("ADODB.Recordset")

'crio o SQL
SQL="SELECT qry_registros_cadastrados.* FROM qry_registros_cadastrados"
rs.open SQL,conexao,1,3
*
*
*
*
*
*
</body>
</html>

 

Considerando o código do arquivo dbConexao.inc:

<%
Sub AbreConexao
Set conexaoDataBase = Server.CreateObject("ADODB.Connection")
conexaoDataBase.CursorLocation=3
const cntCaminho = "C:\inetpub\wwwroot\Meu novo site\dados\info16br.mdb"	
conexaoDataBase.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cntCaminho  
end sub

sub FechaConexao
conexaoDataBase.close
set conexaoDataBase = nothing
end sub
%>	

 

Devo mudar essa linha:

Set conexao=Server.CreateObject("ADODB.Connection")
conexao.open constring

Para o que?

 

Muito obrigado pela dica de não trabalha com arquivo extensões "inc".

Para não me enrolar mais vou mudar depois de resolver isso.

 

Muito obrigado pela atenção e sucesso para todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok amigo, vamos ver se consigo te ajudar pelo que entendi ou seja, utilizar as "subs" do arquivo externo para abrir e fechar as conexões ao database, o que considero uma boa prática.

 

Onde atualmente:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!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>
<%
conString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\inetpub\wwwroot\Meu novo site\dados\info16br.mdb"
Set conexao=Server.CreateObject("ADODB.Connection")
conexao.open constring
'crio o rs
set rs=Server.CreateObject("ADODB.Recordset")
'crio o SQL
SQL="SELECT qry_registros_cadastrados.* FROM qry_registros_cadastrados"
rs.open SQL,conexao,1,3

'bla bla bla
%>
</body>
</html>

 

Vai trocar por isso:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!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>
<!--#Include file="dbConexao.inc"-->
<%
'chamando a sub de conexao database
AbreConexao()
'crio o SQL
SQL="SELECT qry_registros_cadastrados.* FROM qry_registros_cadastrados"
'crio o rs e abro o recordset
set rs=Server.CreateObject("ADODB.Recordset")
rs.open SQL,conexaoDataBase,1,3
'bla bla bla

'após efetuar as rotinas de acesso ao banco não esqueça de chamar a sub que fecha e destrói os objetos utilizados para tal
FechaConexao()
%>
</body>
</html>

 

E no seu arquivo de inclusão "dbConsexao.inc" nada muda, apenas certifique-se que o caminho do banco esteja correto:

<%
Sub AbreConexao
       Set conexaoDataBase = Server.CreateObject("ADODB.Connection")
       conexaoDataBase.CursorLocation=3
       const cntCaminho = "C:\inetpub\wwwroot\Meu novo site\dados\info16br.mdb"        
       conexaoDataBase.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cntCaminho  
end sub

sub FechaConexao
       conexaoDataBase.close
       set conexaoDataBase = nothing
end sub
%>

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado e desculpe a ignorância.

A Página que troquei:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!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>
<!--#Include file="dbConexao.inc"-->
<%
'Chamando a sub de conexão database
[b]AbreConexao()
call AbreConexao[/b]
'crio o rs
set rs=Server.CreateObject("ADODB.Recordset")
'crio o SQL
SQL="SELECT qry_registros_cadastrados.* FROM qry_registros_cadastrados"
rs.open SQL,conexao,1,3

bla
bla
bla

[b]FechaConexao()
call FechaConexao
set conexaoDataBase = nothing[/b]
</body>
</html>

 

Apresentou o erro:

[color=000000]<li>Tipo de erro:
ADODB.Recordset (0x800A0BB9)
Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito.
[b]/meu novo site/logs.asp, line 24[/b]
[/color]

 

Linha 24.

rs.open SQL,conexao,1,3

 

Estou errando em chamar a sub.

Procurei exemplos mas não sei como enquadrar no meu caso.

Para abrir a conexão basta chamar a sub:

Call abre_conexao(ConnString,conexao)

 

e para fechá-la chamar a sub:

Call fecha_conexao() 

 

Mesmo eu errando estou vendo mais lógica agora.

Quem é a minha sub de abertura?

AbreConexao

Quem é a minha sub de fechamanto?

FechaConexao

 

 

Muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok amigo, o novo erro apresentado diz respeito a consulta no database (Recordset) e não da conexão (Connection), então consideramos que os problemas referente ao arquivo de inclusão já estão resolvidos;

 

Verifique se a sua SQL e nome dos campos estão corretos. Outro detalhe que talvez possa ser a causa do problema: No código do seu último post, você não definiu a abertura do recordset corretamente, onde: rs.open SQL,conexao,1,3 deve ser: rs.open SQL,conexaoDataBase,1,3 conforme as ações da "Sub" de conexão.

 

Para chamar as "Subs" quando necessário, utilize apenas:

NomeSub()

ou,

Call NomeSub()

E não as 2 formas juntas.

 

Desconsiderando os nomes sugestivos das "Subs" no seu exemplo, basta verificar as ações das mesmas para saber quais são as de Abertura e Fechamento.

Sugiro pesquisar e estudar sobre "Subs" e "Functions" que basicamente são um conjunto de ações que são executadas somente quando invocadas.

Nesta sub abaixo por exemplo:

Sub AbreConexao
       Set conexaoDataBase = Server.CreateObject("ADODB.Connection")
       conexaoDataBase.CursorLocation=3
       const cntCaminho = "C:\inetpub\wwwroot\Meu novo site\dados\info16br.mdb"        
       conexaoDataBase.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cntCaminho  
end sub

Sub AbreConexao : Definimos e criamos o nome da "Sub"

Set conexaoDataBase = Server.CreateObject("ADODB.Connection") : Executa a criação do objeto de conexão;

conexaoDataBase.CursorLocation=3 : Define o tipo de cursor;

const cntCaminho = "C:\inetpub\wwwroot\Meu novo site\dados\info16br.mdb" : Armazena o caminho do database em uma constante;

conexaoDataBase.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cntCaminho : Efetua a abertura do mesmo baseado na "const" acima.

end sub : Finalizando a "Sub"

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo Public2004, desculpe mas ainda não acertei. Entendi tudo que vovê postou detalhadamente, muito bom.

A página "logs.asp" ainda apresenta esse erro:

[color=000000]Tipo de erro:
ADODB.Recordset (0x800A0BB9)
Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito.
[b]/meu novo site/logs.asp, line 25[/b][/color]

 

A linha 25 é:

rs.open SQL,conexaoDataBase,1,3

 

O codigo geral da "logs.asp" depois da inclusão das informações orientadas ficou:

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!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>

<!--#Include file="dbConexao.inc"-->

<%

'Abrir Conexão

call AbreConexao

'crio o rs
set rs=Server.CreateObject("ADODB.Recordset")
'crio o SQL
SQL="SELECT qry_registros_cadastrados.* FROM qry_registros_cadastrados"
rs.open SQL,conexaoDataBase,1,3


call FechaConexao
set conexaoDataBase = nothing

%>
</head>
</body>
</html>

Eu achei que agora ia roda, devido a inclusão do:

conexaoDataBase,1,3

 

Os nomes dos campos da tabela estão corretos.

Mesmo a logs.asp está rodando no servidor com os mesmos campos dessa aqui com o "include" fiz um verificação e não tem errado no nome dos camos/consulta.

Não sei se deveria postar o código todo mas acho dessa forma, indicando a

call AbreConexao

conexaoDataBase,1,3

e

call FechaConexao
set conexaoDataBase = nothing

 

É o suficiente para verificar se ainda estou errando em algum lugar.

 

Muito obrigado pelas ajudas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é muitas vezes é porque você usou um nome" amigável" para os valores (como adLockReadOnly), em vez das constantes inteiro (que são os únicos valores compreendidos pelo engine), sem incluir ADOVBS.INC. Então, uma solução rápida muitas vezes pode ser ter certeza que você incluiu ADOVBS.INC.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, declare no início do seu arquivo de inclusão, a variável de conexão, exemplo:

Dim conexaoDatabase

 

O código que postou da sua página "logs.asp", apenas efetua o acesso ao banco, mas não tem nenhuma rotina para listar os dados, então no acesso a esta página, nada será mostrado e declarando a variável conforme acima, o erro também não será apresentado (espero).

 

E na página quando chamar a Sub para fechar a conexão, não precisa limpar novamente a mesma porque já está sendo feita na sub, veja:

set conexaoDataBase = nothing

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Glária a Deus!!

Coloquei na logs.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!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>

<!--#Include file="dbConexao.inc"-->

<%
Dim conexaoDatabase

'Abrir Conexão
call AbreConexao

'crio o rs
set rs=Server.CreateObject("ADODB.Recordset")

'crio o SQL
SQL="SELECT qry_registros_cadastrados.* FROM qry_registros_cadastrados"
rs.open SQL,conexaoDataBase,1,3

'Fechando a conexão
set conexaoDataBase = nothing

%>

</head>
<body id="desmembraradioamador">

bla
bla
bla

</body>
</html>

 

Para que está iniciando ou que ainda não tem muita prática não é uma coisa tão simples.

Colocou o "include" ....e pronto.

Agora as demais páginas em ASP vou usar a mesma lógica. Correto?

 

Public2004, fui orientado a não usar o arquivo com extensão "inc" mas sim "asp" mas posso mudar isso no final de tudo correto?

Muito obrigado pela sua atenção.

Vou trabalhar as outras páginas e colocar no servidor.

Valeu por tudo sucesso para você Public2004 e para todos.

Se desejarem alguma coisa é só mandar e-mail.

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom! Acredito que tenha entendido a lógica das "Subs" e que é muito bom utilizar assim para ações repetitivas e em várias páginas.

Para outras páginas, basta seguir a lógica: Faça o include e chame as "Subs" quando necessário a que abre a conexão e a que fecha logo depois de utilizar o "recordset". Talvez não tenha sido claro ao orientá-los sobre a "Sub" de fechamento, ou seja, basta chamá-la no final e não setar novamente o recordset com "nothing" como fez.

 

Quanto a extensão dos arquivos ".inc", sugeri alterar porque da forma que está é possível ver o conteúdo do mesmo através do navegador, assim é possível saber seu banco, caminho, string de conexão, etc. No caso da extensão ".asp", mesmo que a pessoa saiba o endereço do arquivo e consiga acessá-lo, nada será mostrado na tela. Você pode efetuar as alterações de extensão no final do projeto, mas terá que acessar página por página para alterar o nome do arquivo na linha do "include", então veja se não é melhor fazer isso agora.

 

Boa sorte nos projetos.

Att.

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.