Ir ao conteúdo
  • Cadastre-se

Conexão HTML (JavaScript) x Acces


Carolzita

Posts recomendados

olá, estou tendo um "problema" com um código do javaScript...

Tenho que conectar um documento HTML com um DB em Access

Onde as informações digitadas no formulário fiquem salvas no DB...

O meu código é esse:

<html>
<head>
<title>Registro de Ocorrências</title>
</head>

<body>
<h3>Registro de Ocorrências</h3>

<form action="/html/tags/html_form_tag_action.cfm" method="get">
<table>
<tr>
<td>Nº da Ocorrência:</td>
<td>
<input type="text" name="ocorrencia" value="" maxlength="10" />
</td>
</tr>
<tr>
<td>Data e Hora:</td>
<td>
<input type="text" name="data" value="" maxlength="5" />
<input type="text" name="hora" value="" maxlength="5" />
</td>
</tr>
<tr>
<td>Solicitante:</td>
<td>
<input type="text" name="solicitante" value="" maxlength="50" />
</td>
</tr>
<tr>
<td>Empresa:</td>
<td>
<input type="text" name="empresa" value="" maxlength="50" />
</td>
</tr>
<tr>
<td>E-mail:</td>
<td>
<input type="text" name="email" value="" maxlength="70"/>
</td>
</tr>
<tr>
<td>Assunto:</td>
<td>
<select name="assunto">
<option value ="Atualização (Dados, Mapas, etc)" >Atualização (Dados, Mapas, etc)</option>
<option value ="Novo Dado" >Novo Dado</option>
<option value ="Alteração de Atributo" >Alteração de Atributo</option>
</select>
</td>
</tr>
<tr>
<td>Descrição:</td>
<td>
<textarea rows="5" cols="40" name="desc"></textarea>
</td>
</tr>
<tr>
<td>Geografia:</td>
<td>
<input type="text" name="dataG" value="" maxlength="10" />
<input type="checkbox" name="AceiteG" value="AceiteG"/> Aceite
</td>
</tr>
<tr>
<td>TI:</td>
<td>
<input type="text" name="dataTI" value="" maxlength="10" />
<input type="checkbox" name="AceiteTI" value="AceiteTI"/> Aceite
</td>
</tr>
<tr>
<td>Obs:</td>
<td>
<textarea rows="4" cols="40" name="obs"></textarea>
</td>
</tr>
<tr>
<td>Help Desk:</td>
<td>
<textarea rows="4" cols="40" name="HDobs"></textarea>
</td>
</tr>
<td>

<script type="text/javascript">
<!--
function DB(ocorrencia, data, hora, solicitante, empresa, email, assunto, desc, dataG, AceiteG, dataTI, AceiteTI, obs, HDobs)

{
var myConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Documents and Settings\caroline.mathias\Meus documentos\Projetos\Registro\Registro.accdb";
var ConnectObj = new ActiveXObject("ADODB.Connection");
var RS = new ActiveXObject("ADODB.Recordset");
var sql = "INSERT INTO Registro(ID_Ocorrencia, Data, Hora, Solicitante, Empresa, email, Assunto, Descricao,Geografia, Aceite_G, TI, Aceite_TI, Obs, HD) VALUES('" + ocorrencia + "', '" + data + "', '" + hora + "', '" + solicitante + "', '" + empresa + "', '" + email + "', '" + assunto + "', '" + desc + "', '" + dataG + "', '" + AceiteG + "', '" + dataTI + "', '" + AceiteTI + "', '" + obs + "', '" + HDobs +"')";
ConnectObj.Open (myConnect);
RS.Open(sql,ConnectObj,adOpenForwardOnly,adLockReadOnly,adCmdText);
var fieldCount = RS.Fields.Count;
alert("Field Count" + fieldCount);
RS.Close();
ConnectObj.Close();
alert("executado");
}
//-->
</script>

<input type="button"

onclick=DB(form.ocorrencia.value,form.data.value,form.hora.value,form.solicitante.value,form.empresa.value,form.email.value,form.assunto.value,form.desc.value,form.dataG.value,form.AceiteG.checked,form.dataTI.value,form.AceiteTI.checked,form.obs.value,form.HDobs.value) value="Salvar"
</td>
</tr>
<tr>
</table>
</body>
</html>

Mas ele não executa nada... Nem o pop-up que eu pedi pra mostrar ele mostra... Eu testei com só uma janelinha de pop-up com a passagem de parametros e funcionou.. Acho que o problema está mesmo na inserção de dados no DB ... Alguém pode, por favor, me ajudar..? É meio urgente..

Link para o comentário
Compartilhar em outros sites

Olá, esse script tem alguns erros simples, mas eu pessoalmente só usaria o JavaScript para se conectar ao bando de dados por diversão, você já pensou em fazer isso em alguma linguagem do lado servidor, como PHP?

pode ser que o código esteja mal exibido no fórum porque você não usou as tags CODE .

antes:

var myConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Documents and Settings\caroline.mathias\Meus documentos\Projetos\Registro\Registro.accdb"; 

depois, foi corrigido as aspas duplas:

var myConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"C:\Documents and Settings\caroline.mathias\Meus documentos\Projetos\Registro\Registro.accdb\"";

e eu não entendi essa linha

RS.Open(sql,ConnectObj,adOpenForwardOnly,adLockRea dOnly,adCmdText);

acho que você se esqueceu da virgula depois de adLockRea

RS.Open(sql, ConnectObj, adOpenForwardOnly, adLockRea, dOnly, adCmdText);

Não sei se estes são os erros que estão te atrapalhando, o seu código pode ter sido distorcido por você não ter usado as tags CODE

Link para o comentário
Compartilhar em outros sites

A linah de código que você não entendeu consiste no "Recodset" do DB .. A linha de comando que vai passar pra tabela no DB...

A correção que você fez não era necessária, ois foi a tabulação mesmo que modificou, a sintaxe correta seria:

RS.Open(sql,ConnectObj,adOpenForwardOnly,adLock[B]ReadOnly[/B],adCmdText)

muito obrigada pela atenção inicial, mas infelizmente ainda não funcionou... Continua não executando nada... Não tenho muito conhecimento nas linguagens web, por isso numuso PHP ou ASP ... Tive um contato básico com JScript, por isso resolvi trabalhar com ele nesse projeto, mas conheci somente funções básicas...

Link para o comentário
Compartilhar em outros sites

esse seu script parece ainda ter alguns erros simples, você tem que corrigir esses erros para poder analisar problemas com a conexão. Eu vi erros de desalinhamentos de tags html e você esqueceu de colocar "\" na linha do "myConnect".

tenta esse script que eu vou te passar, e me fala o que acontece, se não aparecer nem o "A função DB foi chamada." o problema esta nos argumentos que você esta usando (o que eu acho bem provavel).

<html>
<head>
<title>Registro de Ocorrências</title>
</head>

<body>
<h3>Registro de Ocorrências</h3>

<form action="/html/tags/html_form_tag_action.cfm" method="get">
<table>
<tr>
<td>Nº da Ocorrência:</td>
<td>
<input type="text" name="ocorrencia" value="" maxlength="10" />
</td>
</tr>
<tr>
<td>Data e Hora:</td>
<td>
<input type="text" name="data" value="" maxlength="5" />
<input type="text" name="hora" value="" maxlength="5" />
</td>
</tr>
<tr>
<td>Solicitante:</td>
<td>
<input type="text" name="solicitante" value="" maxlength="50" />
</td>
</tr>
<tr>
<td>Empresa:</td>
<td>
<input type="text" name="empresa" value="" maxlength="50" />
</td>
</tr>
<tr>
<td>E-mail:</td>
<td>
<input type="text" name="email" value="" maxlength="70"/>
</td>
</tr>
<tr>
<td>Assunto:</td>
<td>
<select name="assunto">
<option value ="Atualização (Dados, Mapas, etc)" >Atualização (Dados, Mapas, etc)</option>
<option value ="Novo Dado" >Novo Dado</option>
<option value ="Alteração de Atributo" >Alteração de Atributo</option>
</select>
</td>
</tr>
<tr>
<td>Descrição:</td>
<td>
<textarea rows="5" cols="40" name="desc"></textarea>
</td>
</tr>
<tr>
<td>Geografia:</td>
<td>
<input type="text" name="dataG" value="" maxlength="10" />
<input type="checkbox" name="AceiteG" value="AceiteG"/> Aceite
</td>
</tr>
<tr>
<td>TI:</td>
<td>
<input type="text" name="dataTI" value="" maxlength="10" />
<input type="checkbox" name="AceiteTI" value="AceiteTI"/> Aceite
</td>
</tr>
<tr>
<td>Obs:</td>
<td>
<textarea rows="4" cols="40" name="obs"></textarea>
</td>
</tr>
<tr>
<td>Help Desk:</td>
<td>
<textarea rows="4" cols="40" name="HDobs"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<script type="text/javascript">
<!--
function DB(ocorrencia, data, hora, solicitante, empresa, email, assunto, desc, dataG, AceiteG, dataTI, AceiteTI, obs, HDobs) {
alert("A função DB foi chamada.");
try {
var myConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"C:\\Documents and Settings\\caroline.mathias\\Meus documentos\\Projetos\\Registro\\Registro.accdb\"";
var ConnectObj = new ActiveXObject("ADODB.Connection");
var RS = new ActiveXObject("ADODB.Recordset");
var sql = "INSERT INTO Registro(ID_Ocorrencia, Data, Hora, Solicitante, Empresa, email, Assunto, Descricao,Geografia, Aceite_G, TI, Aceite_TI, Obs, HD) VALUES('" + ocorrencia + "', '" + data + "', '" + hora + "', '" + solicitante + "', '" + empresa + "', '" + email + "', '" + assunto + "', '" + desc + "', '" + dataG + "', '" + AceiteG + "', '" + dataTI + "', '" + AceiteTI + "', '" + obs + "', '" + HDobs +"')";
ConnectObj.Open (myConnect);
RS.Open(sql,ConnectObj,adOpenForwardOnly,adLockReadOnly,adCmdText);
var fieldCount = RS.Fields.Count;
} catch(erro) {
alert(erro.message);
}
alert("Field Count" + fieldCount);
RS.Close();
ConnectObj.Close();
}
//-->
</script>

<input type="button" onclick=DB(form.ocorrencia.value,form.data.value,form.hora.value,form.solicitante.value,form.empresa.value,form.email.value,form.assunto.value,form.desc.value,form.dataG.value,form.AceiteG.checked,form.dataTI.value,form.AceiteTI.checked,form.obs.value,form.HDobs.value) value="Salvar" />
</td>
</tr>

</table>
</form>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

Tentei com o seu código, o alert inicial ("A função DB foi chamada") apareceu sim.

Após isso outra, que pelo que percebi é o retorno do try, informando a seguinte mensagem "ActiveXObject is not defined"

E por fim o Field Count, só que o conteúdo dele, no caso a variável 'fieldcount' apareceu como "undefined".

você consegue me dizer o que está acontecendo..? (muito obrigada pela ajuda..!!)

-------------------------------------------------------------------

Dei uma pesquisada no problema do ActiveX e vi que poderia ser por eu executar tudo no Chrome, passei pro IE.

Após isso, testei tudo de novo, agora aparece uma msg informando que o formato do DB não é reconhecido... Tentei com a extensão .accdb e a .mdb, mas acontece sempre a mesmo coisa...

Link para o comentário
Compartilhar em outros sites

O erro ocorria porque eu fiz o DB em access 2007 e depois converti pra 2003. Fiz uma nova estrutura salvando diretamente com o formato 2003, tive que mudar uns detalhes da Recordset, que por fim ficou assim:

 RS.Open(sql,ConnectObj);

Agora funciona perfeitamente, muitíssimo obrigada pela ajuda andersondanilo...

Até a próxima..!!

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!