Ir para conteúdo

POWERED BY:

Arquivado

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

Liberdade

Erro no conexao.execute(sql)

Recommended Posts

<html>	<LINK REL="stylesheet" HREF="\heva.css" TYPE="text/css">		<!--#include file="..\connect.asp"-->		<style>	td{font-weight:bold;font-size:12pt}	h4{font-weight:bold}	strong{font-weight:bold;color:firebrick;font-size:12pt}</style>		<%varhrabe		= Request.form ("horaabe")varusuario		= Request.form ("usuario")varestacao		= Request.form ("estacao")vardescricao	= Request.form ("Descricao")set area_bd = Conexao.execute(" SELECT estacaoid,areaid,ativo FROM computador WHERE estacaoid = "&varestacao&" AND ativo = 1")vararea = area_bd("areaid")sql = "insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao)"sql = sql & " Values ("sql = sql & "'"&varhrabe&"', "sql = sql & "'"&varusuario&"', "sql = sql & "'"&varestacao&"', "sql = sql & "'"&vararea&"', "sql = sql & "'"&vardescricao&"')"set bd = Conexao.execute(sql) -----------essa é a linha onde aparece o erro.'Response.Write(sql)'Response.End'Response.Redirect("confirma.htm")set bdc = Conexao.execute("SELECT numero,dataabe,horaabe,descricao FROM chamados ORDER BY numero DESC")%>		<body style="overflow:hidden;">			<br>			<h2 align="center">Seu Chamado foi aberto com sucesso !!</h2>			<br>			<br>			<h4 align="center"><u>DADOS DO CHAMADO</u></h4>			<table align="center" border="0" width="80%">				<tr>					<td height="60">Número: <strong><%=bdc("numero")%></strong></td>					<td>Data: <strong><%=bdc("dataabe")%></strong></td>					<td>Hora: <strong><%=bdc("horaabe")%></strong></td>				</tr>				<tr>					<td colspan="3" height="60">Descrição: <strong><%=bdc("descricao")%></strong></td>				</tr>			</table>			<p align="right"><a href="/suporte/index.htm"><b>Voltar</b></a></p>			<%Conexao.closeSet bdc			= NothingSet Conexao		= NothingSet bd			= NothingSet Conexao		= NothingSet area_bd		= NothingSet Conexao		= Nothing%>		</body></html>

----Esse é o erro-----

insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('12:06:57', 744, gsi08, 233, Teste)

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

 

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.

 

/suporte/form.asp, line 26

 

Porém pelo que dei uma lida dizem que esse erro é devido ao nome do código estar diferente do nome do banco de dados, mas está tudo certinho.. Será que alguém pode me ajudar?

 

Grata

 

Ana

Compartilhar este post


Link para o post
Compartilhar em outros sites

no começo do código ASP ensira isso:

 

on error resume next
' Isso é só para debugar

 

e depois dê um response.write do sql, o que aparece na tela???

Compartilhar este post


Link para o post
Compartilhar em outros sites

<html>

<LINK REL="stylesheet" HREF="\heva.css" TYPE="text/css">

<!--#include file="..\connect.asp"-->

<style>

td{font-weight:bold;font-size:12pt}

h4{font-weight:bold}

strong{font-weight:bold;color:firebrick;font-size:12pt}

</style>

<%

varhrabe = Request.form ("horaabe")

varusuario = Request.form ("usuario")

varestacao = Request.form ("estacao")

vardescricao = Request.form ("Descricao")

 

set area_bd = Conexao.execute(" SELECT estacaoid,areaid,ativo FROM computador WHERE estacaoid = "&varestacao&" AND ativo = 1")

 

vararea = area_bd("areaid")

 

sql = "insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao)"

sql = sql & " Values ("

sql = sql & "'"&varhrabe&"', "

sql = sql & "'"&varusuario&"', "

sql = sql & "'"&varestacao&"', "

sql = sql & "'"&vararea&"', "

sql = sql & "'"&vardescricao&"')"

 

set bd = Conexao.execute(sql) -----------essa é a linha onde aparece o erro.

'Response.Write(sql)

'Response.End

'Response.Redirect("confirma.htm")

 

set bdc = Conexao.execute("SELECT numero,dataabe,horaabe,descricao FROM chamados ORDER BY numero DESC")

 

%>

<body style="overflow:hidden;">

<br>

<h2 align="center">Seu Chamado foi aberto com sucesso !!</h2>

<br>

<br>

<h4 align="center"><u>DADOS DO CHAMADO</u></h4>

<table align="center" border="0" width="80%">

<tr>

<td height="60">Número: <strong><%=bdc("numero")%></strong></td>

<td>Data: <strong><%=bdc("dataabe")%></strong></td>

<td>Hora: <strong><%=bdc("horaabe")%></strong></td>

</tr>

<tr>

<td colspan="3" height="60">Descrição: <strong><%=bdc("descricao")%></strong></td>

</tr>

</table>

<p align="right"><a href="/suporte/index.htm"><b>Voltar</b></a></p>

<%

Conexao.close

Set bdc = Nothing

Set Conexao = Nothing

Set bd = Nothing

Set Conexao = Nothing

Set area_bd = Nothing

Set Conexao = Nothing

%>

</body>

</html>

 

----Esse é o erro-----

insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('12:06:57', 744, gsi08, 233, Teste)

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

 

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.

 

/suporte/form.asp, line 26

 

Porém pelo que dei uma lida dizem que esse erro é devido ao nome do código estar diferente do nome do banco de dados, mas está tudo certinho.. Será que alguém pode me ajudar?

 

Grata

 

Ana

Troque:

insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('12:06:57', 744, gsi08, 233, Teste)
Por isso:

insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('12:06:57', 744, 'gsi08', 233, 'Teste')
Todos os campos char e varchar devem ser delimitados por plic '[/]b.

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei.. Retirei as aspas simples.Só que agora devido a linha "on error resume next" ele termina o código certinho mas acusa erro ainda e não abre o chamado.insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('12:51:15', 938, 'gsi08', 233, 'teste') essa é a saida do response.write(sql)Mas as informações do chamado não correspondem as informações cadastradas na tela anterior e sim alguma informação antiga do banco de dados.Me ajudem.Ana.<html> <LINK REL="stylesheet" HREF="\heva.css" TYPE="text/css"> <!--#include virtual="./connect.asp"--> <style> td{font-weight:bold;font-size:12pt} h4{font-weight:bold} strong{font-weight:bold;color:firebrick;font-size:12pt}</style><%on error resume nextvarhrabe = Request.Form ("horaabe")varusuario = Request.form ("usuario")varestacao = Request.form ("estacao")vardescricao = Request.form ("Descricao")set area_bd = Conexao.execute("SELECT estacaoid,areaid,ativo FROM computador WHERE estacao = '"&varestacao&"' AND ativo = 1")vararea = area_bd("areaid")'response.Write(vararea)sql = "insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao)"sql = sql & " Values ("sql = sql & "'"&varhrabe&"', "sql = sql & ""&varusuario&", "sql = sql & "'"&varestacao&"', "sql = sql & ""&vararea&", "sql = sql & "'"&vardescricao&"')"Response.Write(sql)set bd = Conexao.execute(sql)'Response.End'Response.Redirect("confirma.htm")set bdc = Conexao.execute("SELECT numero,dataabe,horaabe,descricao FROM chamados ORDER BY numero DESC")%> <body style="overflow:hidden;"> <br> <h2 align="center">Seu Chamado foi aberto com sucesso !!</h2> <br> <br> <h4 align="center"><u>DADOS DO CHAMADO</u></h4> <table align="center" border="0" width="80%"> <tr> <td height="60">Número: <strong><%=bdc("numero")%></strong></td> <td>Data: <strong><%=bdc("dataabe")%></strong></td> <td>Hora: <strong><%=bdc("horaabe")%></strong></td> </tr> <tr> <td colspan="3" height="60">Descrição: <strong><%=bdc("descricao")%></strong></td> </tr> </table> <p align="right"><a href="/suporte/index.htm"><b>Voltar</b></a></p> <%Conexao.closeSet bdc = NothingSet Conexao = NothingSet bd = NothingSet Conexao = NothingSet area_bd = NothingSet Conexao = Nothing%> </body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não essa era a intenção, descobrir um erro, e você tá dizendo que os dados não são esses, ou seja, o request.form tá trazendo dados que não foram preenchidos nos campos?Estranho!Mas eu não achei onde você abre a Conexão com o BD...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então. é isso mesmo. quando é finalizado aparece as informação antigas (que já estão no banco de dados).Agora a questão da abertura de conexão com o banco de dados não é essa linha do connect.asp?Como vai funcionar o negócio..O cara entra e registra um chamado na página sup.asp, depois clica em enviar que é a págna form.asp que mandei o código só que ao finalizar aparecem dados antigos já abertos.Quando eu ativo essa linha para ver o erro (on error resume next) ele puxa as informações da última linha da tabela principal que é exatamente onde ele tem que dar o insert que está dando pau.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já encontrei o erro.. é o seguinte..sql = "insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao)"sql = sql & " Values ("sql = sql & "'"&varhrabe&"', "sql = sql & ""&varusuario&", "sql = sql & ""&varestacao&", "sql = sql & "'"&vararea&"',"sql = sql & "'"&vardescricao&"')"se eu tiro o campo estacaoid do inset into e comento a linha (sql = sql & ""&varestacao&", "), ele passa normalmente, conclui o chamado e aparece na base o novo chamado sem esse campo.Mas eu preciso do campo tb...Com um teste que eu fiz com outra tabela, tive que mudar o tipo de dados do campo estacaoid para texto e foi, mas eu não consigo mais mudar o tipo de dados desta tabela que está em produção devido aos trocentos relacionamentos que já existem, tem que ser número mesmo esse campo, como resolver isso?grataAna

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já encontrei o erro..

é o seguinte..

 

sql = "insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao)"

sql = sql & " Values ("

sql = sql & "'"&varhrabe&"', "

sql = sql & ""&varusuario&", "

sql = sql & ""&varestacao&", "

sql = sql & "'"&vararea&"',"

sql = sql & "'"&vardescricao&"')"

 

se eu tiro o campo estacaoid do inset into e comento a linha (sql = sql & ""&varestacao&", "), ele passa normalmente, conclui o chamado e aparece na base o novo chamado sem esse campo.

 

Mas eu preciso do campo tb...

Com um teste que eu fiz com outra tabela, tive que mudar o tipo de dados do campo estacaoid para texto e foi, mas eu não consigo mais mudar o tipo de dados desta tabela que está em produção devido aos trocentos relacionamentos que já existem, tem que ser número mesmo esse campo, como resolver isso?

 

grata

 

Ana

Ana,

 

 

Tenta assim:

sql = "insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao)"

sql = sql & " Values ("

sql = sql & "'"& varhrabe&"', "

sql = sql & ""&varusuario&", "

sql = sql & ""& cstr(varestacao) &", "

sql = sql & "'"&vararea&"',"

sql = sql & "'"&vardescricao&"')"

 

 

A variavel em q você esta cirando o select e do tipo string e o campo varestacao é numerico dai a necessidade de converter varestacao em string com a função cst. Só para concaténa-lo na string SQL. Assim você poderá deixar o tipo do campo como numerico.

 

QQ coisa é só psotar ai.

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo assim continua parado neste erro..Microsoft OLE DB Provider for ODBC Drivers error '80040e10' [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. /suporte/form.asp, line 37 sql = "insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao)"sql = sql & " Values ("sql = sql & "'"&varhrabe&"', "sql = sql & ""&varusuario&", "sql = sql & ""& cstr(varestacao)&", "sql = sql & "'"&vararea&"',"sql = sql & "'"&vardescricao&"')"'Response.Write(sql)set bd = Conexao.execute(sql)GrataAna

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo assim continua parado neste erro..Microsoft OLE DB Provider for ODBC Drivers error '80040e10' [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. /suporte/form.asp, line 37 sql = "insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao)"sql = sql & " Values ("sql = sql & "'"&varhrabe&"', "sql = sql & ""&varusuario&", "sql = sql & ""& cstr(varestacao)&", "sql = sql & "'"&vararea&"',"sql = sql & "'"&vardescricao&"')"'Response.Write(sql)set bd = Conexao.execute(sql)GrataAna

Doce Ana,Execute o comando:
Response.Write(sql)
E post o resultdo. Para analise de como usa expressão esta.t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse é o resultado do response.write(sql)insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('16:54:11', 741, 'gsi08', '233','sdsd') e esse é o erro que aparece.Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression. /suporte/form.asp, line 37esse gsi08 é o nome da máquina, que está relacionada a uma tabela chamada computadores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse é o resultado do response.write(sql)

 

insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('16:54:11', 741, 'gsi08', '233','sdsd')

 

e esse é o erro que aparece.

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

 

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

 

/suporte/form.asp, line 37

 

esse gsi08 é o nome da máquina, que está relacionada a uma tabela chamada computadores.

Doce Ana,

 

O campo areaid é de q

 

esse é o resultado do response.write(sql)

 

insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('16:54:11', 741, 'gsi08', '233','sdsd')

 

e esse é o erro que aparece.

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

 

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

 

/suporte/form.asp, line 37

 

esse gsi08 é o nome da máquina, que está relacionada a uma tabela chamada computadores.

Doce Ana,

 

O campo areaid é de que formato numerico ou caracter. Se for numerico retire o plics ':

Values ('16:54:11', 741, 'gsi08', '233','sdsd')

 

Para:

Values ('16:54:11', 741, 'gsi08', 233,'sdsd')

 

 

Todo erro de Data type mismatch é tipo de dados imconpativeis. Quer dizer você esta tentando gravar um valor que não é no mesmo formato que esta no bd.

 

Tenta ai e post o resultado.

 

r+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe uma tabela chamada computador que eu cadastro todas as máquinas, e quando são máquinas da mesma área no campo areaid eu coloco o ID da área neste caso desta máquina gsi08 o id da área é 233.

 

insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('17:10:50', 903, 'gsi08', 233,'asa')

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

 

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

 

/suporte/form.asp, line 36

 

O campo areaid é numérico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe uma tabela chamada computador que eu cadastro todas as máquinas, e quando são máquinas da mesma área no campo areaid eu coloco o ID da área neste caso desta máquina gsi08 o id da área é 233.

 

insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('17:10:50', 903, 'gsi08', 233,'asa')

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

 

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

 

/suporte/form.asp, line 36

 

O campo areaid é numérico.

 

Qual o tipo do campo horaabe?

 

 

Acho que estamos perto do final desta novela!! Imagem Postada)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o tipo do campo horaabe?

 

esse campo é data e hora

Acho q o desbeiço esta ai. você não pode gravar somente a HORA em um campo e sim uma DATA e uma HORA.

Você terá de concatenar a DATA ATUAL a variavel varhrabe[b/].

 

Como no exemplo:

sql = "insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao)"sql = sql & " Values ("sql = sql & "'" & date & " " & varhrabe&"', "sql = sql & ""&varusuario&", "sql = sql & ""& cstr(varestacao)&", "sql = sql & "'"&vararea&"',"sql = sql & "'"&vardescricao&"')"Response.Write(sql)set bd = Conexao.execute(sql)
Acho que agora resolveremos o probelma.

 

No aguardo.

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro não está ai..

fiz o seguinte teste.

'sql = "insert into principal1(horaabe,usuarioid,estacaoid,areaid,descricao)"

'sql = sql & " Values ("

'sql = sql & "'"&varhrabe&"',"

'sql = sql & ""&varusuario&","

'sql = sql & "'"&varestacao&"',"

'sql = sql & ""&vararea&","

'sql = sql & "'"&vardescricao&"')"

 

criei essa tabela principal1 estando o tipo de dados do campo estacaoid como texto e o insert funcionou.

só que a tabela principal que é a que está com informações o campo estacaoid está como número, e isto está fazendo com que não dê certo o insert.

 

e esse foi o erro com o código que você passou.

insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('19/3/2007 17:35:05', 863, gsi08, '233','df')

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

 

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

 

/suporte/form.asp, line 36

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro não está ai..

fiz o seguinte teste.

'sql = "insert into principal1(horaabe,usuarioid,estacaoid,areaid,descricao)"

'sql = sql & " Values ("

'sql = sql & "'"&varhrabe&"',"

'sql = sql & ""&varusuario&","

'sql = sql & "'"&varestacao&"',"

'sql = sql & ""&vararea&","

'sql = sql & "'"&vardescricao&"')"

 

criei essa tabela principal1 estando o tipo de dados do campo estacaoid como texto e o insert funcionou.

só que a tabela principal que é a que está com informações o campo estacaoid está como número, e isto está fazendo com que não dê certo o insert.

 

e esse foi o erro com o código que você passou.

insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('19/3/2007 17:35:05', 863, gsi08, '233','df')

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

 

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

 

/suporte/form.asp, line 36

Bom fica dificil pois você não postou a estrutura de sua tabela.

 

Mas vamos tentar outra abordagem.

 

Se você executar o comando direto na grade de consulta do access:

insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('19/3/2007 17:35:05', 863, 'gsi08', '233','df')

 

Faça o teste. Copie a expressão acima. Crie uma consulta, copie sua expressão para o sql da consutla

Access e depois execute e verifique o erro.

 

Primeiro vamos ter certeza que o comando que estamos montando fucniona.

 

Se você preferir me envie o bd acces com a tabela parq que eu possa testa-lo. Meus email: jocielweb@gmail.com ou jocielweb@yahoo.com.br.

 

Mas faça o teste acima.

 

Com relação a grava a data com a hora é pq me esqueci que você esta utilizando o access.

 

t+

 

 

 

Retorna algum erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Expr1000 Expr1001 Expr1002 Expr1003 Expr100417:50:22 938 gsi08 233 FDDFEsse foi o retorno da consulta..e isso foi o que eu copiei dentro do sql da consultainsert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('17:50:22', '938', 'gsi08', 233,'FDDF')sobre lhe mandar o banco de dados fica complicado pois eu não tenho autorização para mandar esse banco pois não é meu.. só estou tentando alterar algumas coisas que não estavam funcionando, algumas coisas já está rodando e só falta isto que eu não estou conseguindo fazer funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Expr1000 Expr1001 Expr1002 Expr1003 Expr100417:50:22 938 gsi08 233 FDDFEsse foi o retorno da consulta..e isso foi o que eu copiei dentro do sql da consultainsert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('17:50:22', '938', 'gsi08', 233,'FDDF')sobre lhe mandar o banco de dados fica complicado pois eu não tenho autorização para mandar esse banco pois não é meu.. só estou tentando alterar algumas coisas que não estavam funcionando, algumas coisas já está rodando e só falta isto que eu não estou conseguindo fazer funcionar.

Doce Ana,Qdo falei do bd não me referi a ele todo! E sim simente a tabela na qual você quer efetuar o insert. E ela podria vir sem dado nenhum somente a estrutura. Mas sei confidencialidade é mto importante e não se falal mais nisso.Qto ao que pedi para você fazer era para copiar o SQL no acces e executa-lo no sinal de "!" (sinal exclamação da graqde consutla do acces) dai ele executará o insert e poderá retornar o erro ou não. O pq disso uma coisa e construirmos uma expressão de insert que funcione e depois concateena-la com suas variaveis para torna-la dinamica. Então se a expressão do sql rodar e incluir os dados na tabela quer dizer que solucionamos os problemas de tipo de campo e resta acerta-los na pagian asp.Tenho que ir embora pois tenho aula. Mas se quiser me adiciona no mensseger jothaz@hotmail.com. O erro é mto besta só que sem ter acesso a seu ambiente fiac dificil sugerir alguma coisa.t+

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.