Ir para conteúdo

POWERED BY:

Arquivado

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

Marcelo_venancio

Problema de conexao

Recommended Posts

Bom dia pessoal, como sou novo no forum quero dizer que sou iniciante em asp, estou com uma duvida que eh o seguinte: Abaixo estah o meu script de conexao asp com uma base de dados access, q me retorna o seguinte erro mostrado um pouco mais abaixo ... naum consigo identificar o motivo do erro ... se vcs puderem me ajudar ficarei muito grato ... obrigado =D

OBS: o codigo de erro eh na linha marcada ....

 

<%'declarandu as variaveisDim conexao, RS, sqlConst adOpenKeyset = 1 ' permite a gravação dos registrosConst adLockOptimistic = 3'atribuindo via colecao querystring os nomes informados no formulario as variaveisnome=request.querystring("nome")email=request.querystring("email")'criando um objeto conexao e um recordsetconstring="PROVIDER=Microsoft.JET.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("caddb.mdb")Set conexao=Server.CreateObject("ADODB.Connection")conexao.open constringset RS=Server.CreateObject("ADODB.Recordset")' Estabelecendo conexao com o DSN e abrindo o recordset para gravação[u][size=3][i][b]conexao.Open "asp_db"[/b][/i][/size][/u]RS.open "Select * from clientes",Conntemp, adOpenKeyset, adLockOptimisticSQL="INSERT INTO clientes(nome,email)"SQL=SQL&"VALUES("&nomeSQL=SQL&","&email&")"Set RS=conexao.Execute(SQL)'fecha o recordsetRS.closeset RS=nothing'mensagem ao usuario confirmando a gravação dos dadosresponse.write "<font size=6><br>" & "Registro gravado com sucesso !!!!!" & "</b></font><P>"response.write "Codigo- " & codigo & "<br>"response.write "nome- " & nome & "<br>"response.write "email- " & email & "<br>"%>

***** CODIGO DE ERRO ***********

 

Informações técnicas (para a equipe de suporte)

 

Tipo de erro:

ADODB.Connection (0x800A0E79)

Operação não permitida quando o objeto está aberto.

/cadastro/inserir.asp, line 22

Compartilhar este post


Link para o post
Compartilhar em outros sites

destaque a linha do erro pra facilitar e feche o banco de dados

 

outra coisa...retire:

set RS=Server.CreateObject("ADODB.Recordset")....RS.closeset RS=nothing
não se usa no insert, somente no select, sendo assim troque

Set RS=conexao.Execute(SQL)
para

conexao.Execute(SQL)
mais um detalhe, creio que seu sql esteja errado pois email e nome são strings e devem estar entre aspas simples ficando desta forma:

SQL="INSERT INTO clientes(nome,email)"SQL=SQL&"VALUES('"&nomeSQL=SQL&"','"&email&"')"

ahh...seja bem vindo ao forum

 

//EDITADO

Esqueci, ao retirar o Set rs = .....

tens que retirar também

RS.open "Select * from clientes",Conntemp, adOpenKeyset, adLockOptimistic
pois não tem fundamento você fazer o select pra epgar os dados e depois inserir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olah jonathan, prazer em conhece-lo ... obrigadu pela ajuda ....entaum fiz tudo que você mandou, mas ainda continua o msm erro :Tipo de erro:ADODB.Connection (0x800A0E79)Operação não permitida quando o objeto está aberto./cadastro/inserir.asp, line 21você me disse para fechar a base de dados, como faço issu ??? ... (sou iniciante hehehehe)a linha do erro eh a seguinte:conexao.Open "asp_db"Obrigadu =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um esquema q axo q deu certu:coloquei uma linha assim embaixo da linha connection.open constringconexao.closemas agora deu otro erro =(na msm linha, assim :Tipo de erro:Microsoft JET Database Engine (0x80004005)Não foi possível encontrar o arquivo 'C:\WINDOWS\system32\asp_db'./cadastro/inserir.asp, line 22a linha eh a msm:conexao.open "asp_db"o q eh esse "asp_db" ????

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem que fechar o banco LITERALMENTE

 

Você está com o Banco Access aberto, ñ estamos falando de Programação, estamos falando de Banco Fisicamente!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

como você é iniciante voui tentar te dar a solução de "barbada" e você identifica bem as alterações.....seguinte, a parte onde tem conexao.open "asp_db" acusa errp pois ele tenta achar o banco no caminho especificado, no caso nenhum válido

segue o code resumido e um pequeno comentario pra você aprender

<%'declarando as variaveisDim conexao,  sql'atribuindo via colecao querystring os nomes informados no formulario as variaveisnome=request.querystring("nome")email=request.querystring("email")'definindo em uma variavel a string de conexãoconstring="PROVIDER=Microsoft.JET.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("caddb.mdb")'criando um objeto conexaoSet conexao=Server.CreateObject("ADODB.Connection")'abrindo a conexão da stringconexao.open constring'armazenando na variavel a query sqlSQL="INSERT INTO clientes(nome,email)"SQL=SQL&"VALUES('"&nomeSQL=SQL&"','"&email&"')"'executando a query e gravando os dadosconexao.Execute(SQL)'mensagem ao usuario confirmando a gravação dos dadosresponse.write "<font size=6><br>" & "Registro gravado com sucesso !!!!!" & "</b></font><P>"response.write "Codigo- " & codigo & "<br>"response.write "nome- " & nome & "<br>"response.write "email- " & email & "<br>"'fechando e destruindo o objeto de conexaoconexao.closeset conexao=nothing%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aew beleza ??? kra antes de mais nd naum quero ser chato !!!! qualquer coisa me avisa ae ... =(fiz td conforme .... retornou o erro :Tipo de erro:Microsoft JET Database Engine (0x80004005)A operação deve usar uma consulta atualizável./cadastro/inserir.asp, line 18linha de erro:conexao.Execute(SQL)obrigadu pela ajuda q estah me dando !!!! =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

problemas de permissões de acesso, você deve permitir que o banco e a pasta estejam liberadas para gravação. Pesquise no ofrum pois muitos já tiveram esse problema e foram resolvidos. Tenta num desses tópicos a solução e depois poste se conseguiu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz parece brincadeira ..... desde aquela hora ateh agora ...... pra aquele problema eu axei a solução fiz o seguinte:Windows XP Professional!- Vá em painel de controle, de um duplo clique em opções da pasta - Vá até modo de exibição, onde tem configurações avançadas, localize a frase usar compartilhamento simples de arquivos (recomendável)- Desmarque esta opção. Clique em aplicar e depois ok. - Agora clique com o botão direito do mouse sobre o seu banco de dados e vá em propriedades.- Clique no guia segurança e dê controle total ao usuário Todos, clique em ok.- Teste Seus codigos !!! mas agora tah aparecendo otro erro: :(Tipo de erro:Microsoft JET Database Engine (0x80040E14)A instrução INSERT INTO contém o seguinte nome de campo desconhecido: 'nome' Certifique-se de que você digitou o nome corretamente e tente a operação novamente./cadastro/inserir.asp, line 24a linha ainda eh a msmconexao.execute(SQL)

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça o que a mensagem determina, veja se existe o campo nome na sua tabela dentro do banco de dados, se não tiver, crie...aproveite e faça o mesmo com o campo email

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de muito fuçar descobri o problema da base de dados, era mais um problema de permissão, agora naum dah erro nenhum mas os dados n aparecem na base, os campos ficam em branco, ou seja, n estah recuperando os dados do formulario !!! =( ....... o q eu preciso modificar no codigo agora ???? serah q naum vou conseguir fazer funcionar ????

Compartilhar este post


Link para o post
Compartilhar em outros sites

AaaAAAaaeeEEeeeeewwWWWW ...... consegui ....... affe ateh q enfim ......Substitui as linhas:nome=request.querystring("nome")email=request.querystring("email")por:nome=request.form("nome")email=request.form("email")e funcionou !!!! =D .... n me pergunte como !!! n sou capaz de explicar ...... =(Quero agradecer ao jonathandj q teve muita paciencia cmg e me ensinou bastante ... obrigadu vei .... =D você eh 10ted 'K vlw tb vei ..... vou continuar agora com outros scripts, qualquer duvida vou postar hein !!!! hehehe .. vlw galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz eu nem reparei nisso:

 

veja o que você postou antes:

 

'atribuindo via colecao querystring os nomes informados no formulario as variaveis

nome=request.querystring("nome")

email=request.querystring("email")

Realmente era Request.Form pois está vindo de um "formulário", claro que ñ era querystring (hehe)

 

Toca o barco!

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.