Jump to content
Fórum Script Brasil
  • 0

Conexão com o banco meu tormento


AlbertoRT

Question

Tenho esse formulário, que não consigo fazer o codigo de conexeção.

O caminho está correto do bando está correto:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

<%
Dim conexaoDataBase
Dim strIns, rsProva
Set rsProva = Server.CreateObject("ADODB.Connection")
conexaoDataBase.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\inetpub\wwwroot\Meu novo site\dados\info16br.mdb"


Dim varNum_senha_p1TL, varResp_alternativa_a_perg_1_p1TL, varResp_alternativa_b_perg_1_p1TL, varResp_alternativa_c_perg_1_p1TL, varResp_alternativa_d_perg_1_p1TL, varResp_alternativa_e_perg_1_p1TL

varNum_senha_p1TL = Request.Form("txtNum_senha_plTL")
varResp_alternativa_a_perg_1_p1TL = Request.Form("txtResp_alternativa_a_perg_1_p1TL")
varResp_alternativa_b_perg_1_p1TL = Request.Form("txtResp_alternativa_b_perg_1_p1TL")
varResp_alternativa_c_perg_1_p1TL = Request.Form("txtResp_alternativa_c_perg_1_p1TL")
varResp_alternativa_d_perg_1_p1TL = Request.Form("txtResp_alternativa_d_perg_1_p1TL")
varResp_alternativa_e_perg_1_p1TL = Request.Form("txtResp_alternativa_e_perg_1_p1TL")

strINS = "INSERT into tb_prova_legislacao_telec_1_classe_C"
strINS = strINS & "(Num_senha_p1TL, Resp_alternativa_a_perg_1_p1TL, Resp_alternativa_b_perg_1_p1TL, Resp_alternativa_c_perg_1_p1TL, Resp_alternativa_d_perg_1_p1TL, Resp_alternativa_e_perg_1_p1TL )"

strINS = strINS + "VALUES ('" + varNum_senha_p1TL + "',"
strINS = strINS + "'" + varResp_alternativa_a_perg_1_p1TL + "',"
strINS = strINS + "'" + varResp_alternativa_b_perg_1_p1TL + "',"
strINS = strINS + "'" + varResp_alternativa_c_perg_1_p1TL + "',"
strINS = strINS + "'" + varResp_alternativa_d_perg_1_p1TL + "',"
strINS = strINS + "'" + varResp_alternativa_e_perg_1_p1TL + "')"

Call abreConexao
Response.Write(strINS)
'Set rsProva = conexaoDataBase.Execute(strINS)
%>

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Inserindo dados em uma tabela</title>
</head>

<body>
Sua prova com a senha: "<strong><% = varNum_senha_p1TL %></strong>" foi gravada. Veja os pontos na página resultado  
</body>
</html>
<%
Call fechaConexao
Set rsProva = Nothing
%>

Isso é um tormento essa conexão.

Edited by AlbertoRT
Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

enquanto você não começar a prestar atenção nos detalhes isso vai ser um tormento...

verifique as mensagens de erro sempre... e procure no google quando não entender...

no seu código você faz uma chamada para uma função que não existe.

Call abreConexao

não use caminhos fisico digitados diretamente... ou server.mappath() ou caminhos virtuais

Link to comment
Share on other sites

  • 0

Bareta, tudo bem postei duplamente estou errado vou prestar mais atenção. Desculpe. Valeu a chamada.

E com isso eu fiquei mais prejudicado nos esclarecimentos. Com os detalhes das orientações do Alea fiz as alterações nas linhas de conexão. Porém agora aparece a mensagem de sucessu na inclusão de registro, por exemplo:

“Sua prova com a senha: "1111111111" foi gravada. Veja os pontos na página resultado”

Mas no bando de dados não consta nada. Fica vazio. Nem se quer entram zeradas. Continua achando que tem haver com as variáveis que estavam abrindo e fechando a tabela.

Bareta, Alea e todos que aqui chegarem convém informar que o código que uso nas duas páginas ASP é resultado de um estudo fiz que, inclusive, as páginas ASP tem o códigos “#include file” que no momento não gostaria de fazer, pois ainda não estou seguro e vai envolver outras páginas que já estão funcionando no servidor (empresa de hospedagem do meu blog). Com isso tentei adaptar esse código fazendo a conexão na própria página ASP:

O formulário Prova_LT_01_01.asp:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
&lt;script>
function valida(formProva) {
if (formProva.txtNum_senha_plTL.value=="") {
alert("Preencha o campo senha da prova.");
formProva.txtNum_senha_plTL.focus();
return false;
}
}
</script>
</head>
<body>
<form name="formProva" method="post" action="ResProva_LT_01_01.asp" onsubmit="return valida(formProva);">
<div align="center"><span class="style3"><strong>Prova de Legislaçao de Telecomunicações</strong></span><br />
    <br />
    Marque apenas  um ( x ) na questão correta. Sua questão será anulada caso marque mais de um ( x ) em uma mesma questão. <br />
    Boa Sorte!<br />
</div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
  <td colspan="2">&nbsp;</td>
  </tr>
<tr>
<td width="82%">Digite o número da senha: 
  <input name="txtNum_senha_plTL" type="text" size="10" maxlength="10" /></td>
</tr>
<tr>
<td  width="82%" height="20">1) Qual dos documentos abaixo relacionados autoriza o radioamador a instalar sua estação:</td>
</tr>
<tr>
  <td height="5">&nbsp;</td>
</tr>
<tr>
   <td>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <input name="txtResp_alternativa_a_perg_1_p1TL"  style="text-align:center"  type="text"  size="1"  maxlength="1"  /> a) certificado de operador de estação radioamador;   </td>
</tr>
<tr>
   <td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <input name="txtResp_alternativa_b_perg_1_p1TL"  style="text-align:center"  type="text"  size="1"  maxlength="1"  /> b) comprovante de pagamento das taxas de fiscalização das telecomunicações;   </td>
</tr>
<tr>
   <td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <input name="txtResp_alternativa_c_perg_1_p1TL"  style="text-align:center"  type="text"  size="1"  maxlength="1"  /> c) certificado de operador de estação de radioamador e comprovante de pagamento das taxas de fiscalização das telecomunicações;   </td>
</tr>
<tr>
   <td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <input name="txtResp_alternativa_d_perg_1_p1TL"  style="text-align:center"  type="text"  size="1"  maxlength="1"  /> d) comprovante de filiação a uma associação de radioamadores reconhecida pela Anatel;   </td>
</tr>
<tr>
   <td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <input name="txtResp_alternativa_e_perg_1_p1TL"  style="text-align:center"  type="text"  size="1"  maxlength="1"  /> e) licença de estação de radioamador.</td>
</tr>
<td width="82%"><input type="submit" value="Inserir" name="btInsere" />
  <input type="reset" value="Limpa campos" name="btLimpa" /></td>
<td width="18%">&nbsp;</td>
</tr>
</table>
</form>
</body>
</html>
O objetivo é incluir a Senha digitada em Prova_LT_01_01.asp no bando de dados. Para isso existe a página a página ResProva_LT_01_01.asp que ficou com esse código após fazer as alterações no código para conexão:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
'Crindo a conexão
Conexao="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\inetpub\wwwroot\Meu novo site\dados\info16br.mdb"
'Abrindo a conexão com banco de dados
Set conexaoDataBase = Server.CreateObject("ADODB.Connection")
conexaoDataBase.open Conexao
Dim conexaoDataBase
Dim strIns, rsProva
Dim varNum_senha_p1TL, varResp_alternativa_a_perg_1_p1TL, varResp_alternativa_b_perg_1_p1TL, varResp_alternativa_c_perg_1_p1TL, varResp_alternativa_d_perg_1_p1TL, varResp_alternativa_e_perg_1_p1TL
varNum_senha_p1TL = Request.Form("txtNum_senha_plTL")
varResp_alternativa_a_perg_1_p1TL = Request.Form("txtResp_alternativa_a_perg_1_p1TL")
varResp_alternativa_b_perg_1_p1TL = Request.Form("txtResp_alternativa_b_perg_1_p1TL")
varResp_alternativa_c_perg_1_p1TL = Request.Form("txtResp_alternativa_c_perg_1_p1TL")
varResp_alternativa_d_perg_1_p1TL = Request.Form("txtResp_alternativa_d_perg_1_p1TL")
varResp_alternativa_e_perg_1_p1TL = Request.Form("txtResp_alternativa_e_perg_1_p1TL")
strINS = "INSERT into tb_prova_legislacao_telec_1_classe_C"
strINS = strINS & "(Num_senha_p1TL, Resp_alternativa_a_perg_1_p1TL, Resp_alternativa_b_perg_1_p1TL, Resp_alternativa_c_perg_1_p1TL, Resp_alternativa_d_perg_1_p1TL, Resp_alternativa_e_perg_1_p1TL )"
strINS = strINS + "VALUES ('" + varNum_senha_p1TL + "',"
strINS = strINS + "'" + varResp_alternativa_a_perg_1_p1TL + "',"
strINS = strINS + "'" + varResp_alternativa_b_perg_1_p1TL + "',"
strINS = strINS + "'" + varResp_alternativa_c_perg_1_p1TL + "',"
strINS = strINS + "'" + varResp_alternativa_d_perg_1_p1TL + "',"
strINS = strINS + "'" + varResp_alternativa_e_perg_1_p1TL + "')"
'Call abreConexao
'Response.Write(strINS)
'Set rsProva = conexaoDataBase.Execute(strINS)
%>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Inserindo dados em uma tabela</title>
</head>
<body>
Sua prova com a senha: "<strong><% = varNum_senha_p1TL %></strong>" foi gravada. Veja os pontos na página resultado  
</body>
</html>
<%
set conexao = nothing
'Call fechaConexao
'Set rsProva = Nothing
%>
As funções que apareciam como comentário elas existiam. A "exclusão" dessas funções podem ter acarretado essa falta de inclusão do registro?:
'Call abreConexao
'Response.Write(strINS)
'Set rsProva = conexaoDataBase.Execute(strINS)
E
'Call fechaConexao
'Set rsProva = Nothing

Muito obrigado e mais um vez desculpe por tudo.

Edited by AlbertoRT
Link to comment
Share on other sites

  • 0

Por favor, com todo respeito observe o que eu coloquei:

"As funções que apareciam como comentário elas existiam. A "exclusão" dessas funções podem ter acarretado essa falta de inclusão do registro?:"

"...pareciam...existiam...". Com as sugestões do Alea eu retirei.

Eu já informei que as duas páginas ASP são frutos de um estudo. Porem duas estão em um diretório diferente funcionando perfeitamente bem mas com uma conexão via "#include file" (arquivo dbConexao.inc).

Bareta esse deve ser o meu problema.

Considerando a minha falta de competência achei que seria mais prudente não aprender agora a fazer a conexão via “#include file”, pois teria que alterar outras páginas das páginas do Blog.

Portanto existem

a) As páginas “Prova_LT_01_01.asp” e “ResProva_LT_01_01.asp”, que se encontram em um diretório . A “ResProva_LT_01_01.asp” tem em sua parte superior:

<%
Option Explicit
%>
<!--#Include file="../dbConexao.inc"-->
<%

Obs.: Bareta, o mesmo sql que existe no exemplo acima tem nas duas páginas que são iguais que só retirei a conexão “#include file”. Portanto a sql está sendo executada.

B) A “Prova_LT_01_01.asp” que se encontra em outro diretório não teve alteração alguma mantive o mesmo código da citada na alínea “a”;

c) A “ResProva_LT_01_01.asp” o código foi alterado seguindo as orientações do Alea, ou seja, somente retirei a conexão via <!--#Include file="../dbConexao.inc"-->

e as funções de “Abrir” e “Fechar”. Volto a afirmar que não toquei mais em uma linha se quer do código, portanto a sql é a mesma. Caso contrário como iria funcionar a página “ResProva_LT_01_01.asp” com conexão via <!--#Include file="../dbConexao.inc"--> citada na alínea “a”?

Bareta, resumindo, eu tenho duas páginas em “asp” que rodam perfeitamente cujo código de conexão é feito via <!--#Include file="../dbConexao.inc"--> e uma outra que mantive todo o código excluindo funções “Abrir” e “Fechar” e incluindo o código de conexão que ainda não funcionou.

Link to comment
Share on other sites

  • 0

Salve, Salve Bareta meu respeito.

Ficou tudo muito confuso por minha causa mesmo.

Diante disso não sei mais o que responder.

Só sei que diante das suas sugestões eu continuei estudando.

Com base as suas sugestões:

“você esta abrindo a conexao, mais não executa sql nenhuma...” eu parti para uma experiência pois tenho certeza absoluta que não toquei em um linha do código que trata de QSL e dessa forma tenho que provar a mim mesmo que a SQL está ali e não se trata de erro de não executar.

Vamos então zerar tudo e, por favor, acompanha esse passo a passo:

a) Em um uma pasta com esse caminho "C:\inetpub\wwwroot\serieweb\Nasp\database\dbEditora.mdb" tenho um bando de dados chamado dbEditora.mdb;

B) Esse caminho se encontra dentro do arquivo chamada: “dbConexao.inc” que tem o seguinte código completo:

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

sub FechaConexao
    conexaoDataBase.close
    set conexaoDataBase = nothing
end sub
%>
c) Esse arquivo de conexão faz a conexão com a página: “ResProva_LT_01_01.asp”, ou seja, o registro (Senha) que é digitada na página “Prova_LT_01_01.asp” que por sua vez “fala” com a ““ResProva_LT_01_01.asp” e essa com o arquivo de conexão “dbConexao.inc”; d) Esse processo funciona perfeitamente bem com o mesmo SQL que você informou que eu não estava executando (se eu não estou executando SQL como que aqui ele grava o registro na tabela?) e) O que me levou a postar neste fórum é que eu gostaria que as páginas “Prova_LT_01_01.asp” e a “ResProva_LT_01_01.asp” não fossem mais trabalhadas via <!--#include file f) Para que isso ocorresse copiei as duas páginas “Prova_LT_01_01.asp” e a “ResProva_LT_01_01.asp” para outra pasta, ou seja, “C:\inetpub\wwwroot\Meu novo site” e somente deletei a linha “Prova_LT_01_01.asp” e a “ResProva_LT_01_01.asp” g) Convém ficar claro que todas as páginas em ASP que trabalham nessa pasta estão funcionando perfeitamente bem com a conexão direta no HTML
conString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\inetpub\wwwroot\Meu novo site\dados\info16br.mdb"

A única diferença no funcionamento destas páginas ASP nessa pasta é que em nenhuma página Inclui registro em tabela, mas sim apresentam na tela os registros.

h) Se essas duas paginas funcionam perfeitamente bem em outra pasta com (letra “a”) um arquivo de conexão “dbConexao.inc”, copiei esse arquivo de conexão para essa pasta (letra f) e fui verificar se iria grava os registros (senha) na tabela tb_prova_legislacao_telec_1_classe_C, registrando em “Prova_LT_01_01.asp”;

i) Pronto funcionou tudo e não toquei em uma linha de qsl. Somente copiei para essa pasta mudei o caminho do arquivo mdb e o caminho no arquivo "dbConexao.inc"

Resumo:

1) Tenho duas páginas (“Prova_LT_01_01.asp” e a “ResProva_LT_01_01.asp”) que funcionam fazendo a conexão via um arquivo <!--#Include file="../dbConexao.inc"-->

2) Tentei retira essa conexão via "include" e ficar apenas com a conexão no HTML. Não consegui.

3) Salvei essas duas páginas (“Prova_LT_01_01.asp” e a “ResProva_LT_01_01.asp”) em outra pasta de trabalho e mantive a conexão via "include" passou a funcionar perfeitamente bem.

4) Agora o problema que eu não queria enfrentar é retirar a conexão que HTLM de outras páginas que estão funcionando e colocar tudo com conexão <!--#Include file="../dbConexao.inc"-->

Por exemplo tenho logs.asp que apresenta os regitros na tela e sua conexão está no html.

<%@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>

E o arquivo de conexão 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

%>

%>

Como vou fazer para a página logs.asp venha a ser aberta usando

<!--#Include file="../dbConexao.inc"--> como mesmo arquivo dbConexão.

Se ele funciona na mesma pasta de uma página não pode não funcionar para uma outra.

Tenho que mudar alguma coisa em logs.asp. Mas o que?

Edited by AlbertoRT
Link to comment
Share on other sites

  • 0

mesma coisa de antes... a conexão não é aberta e nem fechada...

vamos por partes e definimos o que é uma sub e uma function.

como no asp não precisamos identificar o tipo de retorno da função... as function ficam muito simples...

function xxx(var1, var2)
    xxx=var1+var2
end function
a função acima recebe 2 valores por parametros somo um com o outro e retorna esse valor... uma chamada a ela poderia ser. x=xxx(10,20) ou response.write xxx(10,20) já uma sub é um bloco de código que não tem retorno ( seria como em c++ uma função void ).
sub xxx(var1, var2)
    response.write var1+var2
end sub
onde chamariamos por
call xxx 10,20
com isso em mente vamos lá... bastaria ter o arquivo com as funções incluida no arquivo e chamalas quando necessário certo ?
<!--#Include file="dbConexao.inc"-->
<%
sql="insert into tabela (campo) values ('xxx')" 
call AbreConexao
conexaoDataBase.execute(sql)
call FechaConexao
%>
so que ai temos o seguinte detalhes... uma função quando executada armazena as variaveis criadas na memoria e as destroi ao termino da função. então se declararmos dentro da função Dim conexaoDataBase e definirmos a variavel conexaoDataBase como o objeto da conexão, ao fim da execução da sub ou da function ela é destruida e limpada da memoria. logo nada mais funciona. para resolver isso declare conexaoDataBase como variavel global.
Dim conexaoDataBase
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
analisando dessa forma, podemos evitar as gambiarras e uso excessivo de memoria e outras falhas por não sabermos direito o que fazer... declaramos no inicio do arquivo.
<% @ Language=VBScript %>
<% Option Explicit %>

onde que a primeira linha indica que estaremos usando VBScript [ o asp pode ser escrito usando várias linguagens e cada uma tem sua sintaxe [php, javascript, python e etc] )

já a segunda força que todas variaveis criadas tem que ser declaradas antes do uso. o que falicita bem encontrar alguns erros...

bom espero que ajude !!!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...