Ir para conteúdo

POWERED BY:

Arquivado

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

TeixeiraRamos

[Resolvido] Conexão virtual transformar caminho físico

Recommended Posts

Salve, salve! Estou ha dias com um problema que não consigo resolver. Já tentei de todas as formas mas só informa que o cominho não está correto. Por favor, observem que esse código abaixo é diferente por ser caminho físico e funciona perfeitamente.

<%
Sub AbreConexao
   Set conexaoDataBase = Server.CreateObject("ADODB.Connection")
   conexaoDataBase.CursorLocation=3
   const cntCaminho = "I:/inetpub/wwwroot/info16br/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
%>  

 

Já o código abaixo tem o banco de dados no mesmo local do primeiro acima. Mesmo Caminho. Tudo, tudo igual. Ele só trabalha com uma outra tabela mas não muda nada. Entretanto não consigo colocar o caminho. Eu gostaria de transforma o do código virtual em físico mas existem variáveis (exemplo do que me bloqueia: strSQL no código físico fica antes do "Provider=" no código virtual vem conexaoDataBase. Open e depois o "Provider="). Já tentei e só piora a situação. Como poderia fazer com que o do caminho virtual transforme em físico:

Por favor, veja que ele tem variáveis como já informei e fica muito complicado fazer com que fique igual ao código acima. Por favor, ajude-me.

<%
   ' Usando uma função evitamos o conflito com nome de variaveis que
   ' porventura o usuario esteja usando em seu codigo
   Function Retorna_Acessos()
   'variáveis ADO
   Const adOpenKeyset = 1
   Const adLockPessimistic = 2
   Const adCmdText = &H0001

   ' Variáveis locais
   Dim strArquivo
   Dim strSQL
   Dim rsContador
   Dim iContador

   ' cria uma consulta SQL usando o nome do script
   strArquivo = Request.ServerVariables("SCRIPT_NAME")
   strSQL = "SELECT pagina, n_acessos FROM tb_acessos WHERE pagina='" & strArquivo & "';"

   ' abre um recordset
   Set rsContador = Server.CreateObject("ADODB.Recordset")

   ' acesso a uma base de dados Access
   rsContador.Open strSQL, _
   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &  Server.MapPath("/inetpub/wwwroot/info16br/dados/info16br.mdb") &  ";", adOpenKeyset, adLockPessimistic, adCmdText

   'Se não existe registro ainda vamos incluir um registro
   If rsContador.EOF Then
   rsContador.AddNew
   iContador = 0
   rsContador.Fields("pagina").Value = strArquivo
   Else
   'Se já existe registro le o registro a atualiza o contador
   rsContador.MoveFirst
   iContador = rsContador.Fields("n_acessos").Value
   End If

   ' incrementa o contador e atualiza a base de dados
   rsContador.Fields("n_acessos").Value = iContador + 1
   rsContador.Update

   ' fecha a conexao
   rsContador.Close
   Set rsContador = Nothing

   ' retorna o contador
   Retorna_Acessos = iContador + 1
   End Function
   %>

 

 

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos por partes :)

 

No código que postou e está abaixo, note que a constCaminho indica a localização fisica do banco de dados, e como já percebeu, trabalhar dessa forma só funciona enquanto estamos no servidor local, mas quando subimos isso para a hospedagem, geralmente temos problemas, pois o caminho pode diferir do que usamos, e mesmo que seja um arquivo que funcionava anteriormente no servidor de hospedagem, eles podem mudar o servidor, adicionar novos hd´s, enfim, podem efetuar qualquer alteração e nosso sistema apresentar um erro que antes não tinha.

 

<%
Sub AbreConexao
   Set conexaoDataBase = Server.CreateObject("ADODB.Connection")
   conexaoDataBase.CursorLocation=3
   const cntCaminho = "I:/inetpub/wwwroot/info16br/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
%>  

 

Para não termos esse tipo de problema, recomendo usar tanto no nosso servidor de testes quanto no servidor da hospedagem, o Server.MapPath, que faz o mapeamento do caminho fisico até encontrar o arquivo indicado.

Podemos indicar parte do caminho, assim, se o arquivo .asp fica numa pasta e o arquivo que solicitamos fica noutra pasta, ele saberá qual caminho deverá seguir para encontrar o arquivo.

Ele não busca o arquivo, ele apenas percorre o caminho indicado e se encontrar o arquivo retornará verdadeiro.

Por exemplo:

Server.MapPath("db/meu_bd.mdb")
Server.MapPath("meu_bd.mdb")

 

No seu caso, na linha do const cntCaminho vamos mudar para:

   const cntCaminho = Server.MapPath("dados/info16br.mdb") 

 

Provalvemente já deverá funcionar como desejado.

 

No outro código que postou, note que a diferença entre ele funcionar e o anterior não, está nesta linha:

 

   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &  Server.MapPath("/inetpub/wwwroot/info16br/dados/info16br.mdb") &  ";", adOpenKeyset, adLockPessimistic, adCmdText

 

Mais precisamente, depois do Data Source, onde temos o Server.MapPath indicando o caminho, mas note que pessoalmente, eu deixaria apenas o dados/info16br.mdb, pois se na hospedagem ele não usar a estrutura padrão do iis, esse código também vai apresentar problemas.

 

Sobre o que vem antes do Data Source, você está informando que usa uma conexão OLEDB da microsoft versão 4.0 que é a conexão padrão para banco de dados access, se fosse mysql, isso seria diferente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa assim

 

 

   <% ‘———————-

   ‘ este arq. serve para estabelecer a conexao com o BD em Access

   ‘ de nome quaddra.mdb

   sub abreconexao

   constring=”provider=microsoft.JET.OLEDB.4.0;Data Source=” & Server.MapPath(“db/quaddra.mdb”)

   Set conexao=Server.CreateObject(“ADODB.Connection”)

   conexao.open constring

   end sub

   sub fechaconexao

   set conexao=nothing

   end sub

   %>

 

sendo que na raiz da site temos uma pasta chamada db com o aruivo de bano de dados dentro dela

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicious, muito obrigado pela atenção e desculpe alguma coisa.

Eu não devo ter explicado corretamente.

Por favor, esse código indica o caminho do servidor da hospedagem e funciona perfeitamente:

 

Página "dbConexao.asp"

<%
Sub AbreConexao
   Set conexaoDataBase = Server.CreateObject("ADODB.Connection")
   conexaoDataBase.CursorLocation=3
   const cntCaminho = "I:/inetpub/wwwroot/info16br/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
%>

 

Com esse caminho "físico" não tenho problema algum ha anos. Se mudar o caminho, ou seja de "I:/" para "Y:/" ou o nome

do banco "inf16br.mdb" serei informado antes por boletim pela empresa de hospedagem.

Com a mesma página "dbConexao.asp" com o mesmo códido mas com caminho diferente, trabalho em casa abrindo dezenas de páginas

sem problema também.

Caminho da página "dbConexao.asp" que fica no meu computador (local).

const cntCaminho = "C:\inetpub\wwwroot\Meu novo site\dados\info16br.mdb" 

Observe que a mesma página ASP com o mesmo código funciona no "hd" da empresa de hospedagem no "I:/" e no meu computador no "C:/".

Desculpe ficar repetindo mas não tenho problema com esse código.

 

As vezes sou repetitivo devido a minha preocupação de não me fazer entender.

Estou tendo necessidade de criar a página "contador_db.asp" porém com conexão física.

Na minha casa, no meu computador (local) usado o codigo abaixo para todas as páginas e não tem problema.

Mas o caminho é local e virtual, ou seja:

Página contador_db.asp

' acesso a uma base de dados Access
   rsContador.Open strSQL, _
   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("dados/info16br.mdb") & ";", adOpenKeyset,
   adLockPessimistic, adCmdText

 

O que estou necessitando é que a página "contador_db.asp" que tem o caminho virtual, seja mudada o código para o caminho "físico"

igual a página dbConexao.asp.

 

Esse seu entendimento, devido as minhas colocações, não procede.

No código que postou e está abaixo, note que a constCaminho indica a localização fisica do banco de dados, e como já percebeu, trabalhar dessa forma só funciona enquanto estamos no servidor local, mas quando subimos isso para a hospedagem, geralmente temos problemas, pois o caminho pode diferir do que usamos, e mesmo que seja um arquivo que funcionava anteriormente no servidor de hospedagem, eles podem mudar o servidor, adicionar novos hd´s, enfim, podem efetuar qualquer alteração e nosso sistema apresentar um erro que antes não tinha.

 

Como já informei trabalho com esse código ha anos tanto no servidor local como no da hospedagem (basta mudar o caminho).

Se alguem consegui me passar esse conhecimento de transformar o código da página "contador_db.asp" (virtual)

para físico igual a página "dbConexao.asp" estará tudo resolvido.

Mais um vez perdão pelo pedido de "ajuda".

Obrigado a todos.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não há o que perdoar, afinal, estamos aqui para isso :)

 

Você quer o contrario do que havia entendido, a ideia é praticamente a mesma:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source="I:/inetpub/wwwroot/info16br/dados/info16br.mdb";", adOpenKeyset,
   adLockPessimistic, adCmdText

 

Qualquer coisa, só falar :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius,

Coloquei o código da formar sugerida, no servidor de hospedagem, mas retorna esse erro:

 

Microsoft VBScript compilation error '800a0401'

 

Expected end of statement

 

/contador_db.asp, line 25

 

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="I:/inetpub/wwwroot/info16br/dados/info16br.mdb";", adOpenKeyset, adLockPessimistic, adCmdText -----------------------------------------------^

 

 

Parece que estou marcado a não colocar essa página. Meus Deus não é possível.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora pode ser um problema com aspas

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='I:/inetpub/wwwroot/info16br/dados/info16br.mdb';",

ou

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:/inetpub/wwwroot/info16br/dados/info16br.mdb;",

 

A sua hospedagem não possui algum exemplo de conexão desse modo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

imagine uma pasta chamada Dados dentro da raiz do site, seu arquivo de conexão (tb dentro da raiz do site) com sua string de conexão seria assim:

 

<%
Sub AbrirConexao
	Set cnnBanco = Server.CreateObject("ADODB.Connection")
	cnnBanco.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../dados/curriculos.mdb")
End Sub
Sub FecharConexao
	cnnBanco.Close
	Set cnnBanco = Nothing
End Sub	
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu Deus eu nem acredito.

Funcionou com ocódigo dessa forma:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:/inetpub/wwwroot/info16br/dados/info16br.mdb;", adOpenKeyset, adLockPessimistic, adCmdText 

Antes do "I:/" não tem aspa simples.

Obrigado Vinicius por tudo e a todos que passaram por esse tópico.

Obrigado, também, xanburzum pelas sua sugestões. Elas me ajuram a ler outros informações importantes.

Tem uma postagem minha, anterior a essa, que trata do mesmo assunto. Daria para excluir do forum já que essa esclarece tudo? Obrigado, obrigado.

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.