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

Pra facilitar!

 

Por favor posta qual a estrutura de sua tabela exemplo:

 

Nome do campo: horaabe

Tipo: Data/Hora

Formato: Hora completa

 

Nome do campo: usuarioid

Tipo: Número

Formato: Inteiro longo

 

Assim fica mais fácil para mim e para outros que queiram ajudá-la.

 

Pois sem ter idéia de quais tipos de dados estamos querendo inserir fica impossivel criar a expressão SQL para fazê-lo.

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.. ontém o código direto no SQL do ACCESS deu certo, INSERT INTO principal ( horaabe, usuarioid, estacaoid, areaid, descricao )

VALUES ('17:50:22', '938', gsi08, '233', 'FDDF');

 

ele inseriu as informações na tabela principal, mas quando eu cliquei no ! para executar a consulta ele abriu uma caixa para digitar um valor (inserir valor para o parâmetro) e abaixo colocou gsi08 e olhando na minha tabela de computadores o valor da máquina gsi08 é 159 e dei OK e após isso eu fui na tabela principal e lá estava a linha inserida com sucesso.

 

Tabela Principal

 

Nome do campo: numero

Tipo: Autonumeracao

Formato: inteiro Longo

 

Nome do campo: Dataabe

Tipo: Data/Hora

Formato: ----

 

 

Nome do campo: Horaabe

Tipo: Data/Hora

Formato: ----

 

 

Nome do campo: Usuarioid

Tipo: Numero

Formato: Inteiro Longo

 

 

Nome do campo: Estacaoid

Tipo: Numero

Formato: Inteiro Longo

 

 

Nome do campo: Areaid

Tipo: Numero

Formato: Inteiro Longo

 

 

Nome do campo: Situacao

Tipo: Numero

Formato: Inteiro Longo

 

 

Tabela Computador

 

Nome do campo: Estacao

Tipo: Texto

Formato: ----

 

 

Nome do campo: Estacaoid

Tipo: AutoNumeracao

Formato: Inteiro Lingo

 

 

Nome do campo: Areaid

Tipo: Numero

Formato: Inteiro Longo

 

 

Nome do campo: Ramalid

Tipo: Numero

Formato: Inteiro Longo

 

 

Nome do campo: Ativo

Tipo: Sim/Nao

Formato: Sim/Nao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Doce Ana,

 

 

Bom dia!

 

É importante que possamos inserir pelo menos um registro no banco de dados para temos uma idéia de com deerá ficar nossa expressao sql.

 

Pelo que você esta relatando apos executar o sql que te passei o problema é que você esta gravando o valor de gsi08 no campo estacaoid e deveria digitar o calor 159.

 

 

Qdo você for construir a expressão:

'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&"')"

 

você deverá substituir a variável varestacao (que esta com o conteúdo de gsi08) por outra que contém o id (que deveria esta com o valor 159, q com você disse é o código).

 

você têm o id da estação em alguam variavel em sua página?

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

numero dataabe horaabe usuarioid estacaoid areaid analistaid situacaoid tipoid categoriaid descricao448 20/3/2007 17:50:22 938 159 233 1 1 1 1 FDDFOlha só, tem que entrar como 159 mesmo, pois depois quando esse chamado é vizualizado, é feita uma consulta neste número 159 para saber qual é a máquina que abriu o chamado, pois existe um relacionamento entre a tabela Principal --estacaoid e Computador ---estacaoid.

Compartilhar este post


Link para o post
Compartilhar em outros sites

numero dataabe horaabe usuarioid estacaoid areaid analistaid situacaoid tipoid categoriaid descricao448 20/3/2007 17:50:22 938 159 233 1 1 1 1 FDDFOlha só, tem que entrar como 159 mesmo, pois depois quando esse chamado é vizualizado, é feita uma consulta neste número 159 para saber qual é a máquina que abriu o chamado, pois existe um relacionamento entre a tabela Principal --estacaoid e Computador ---estacaoid.

Ih ao foi feliz no insert?E com ficou a criação de sua expressaão sql? você possui alguma variavel que contenha o id da estação (no caso do exemplo o valor 159).t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não tenho.. mas esse banco estava funcionando antes quando era no Windows 2000, depois que mudaram para Windows2003 que começou a dar esses paus.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não tenho.. mas esse banco estava funcionando antes quando era no Windows 2000, depois que mudaram para Windows2003 que começou a dar esses paus.

De onde vem o conteúdo das variaveis usadas na expressão:'sql = "insert into principal1(horaabe,usuarioid,estacaoid,areaid,descricao)"'sql = sql & " Values ("'sql = sql & "'"&varhrabe&"',"'sql = sql & ""&varhrabe&","'sql = sql & "'"&varestacao&"',"'sql = sql & ""&vararea&","'sql = sql & "'"&vardescricao&"')"O conteúdo de varhrabe,varhrabe e ect é pesquisa ou informado pelo usuário.Pq o unico erro que me parece que esta acontecendo é o que já tinha relatado anteiormente.você precisa de ter o código númerico (159) e não a descrição (gsi08). Por isso esta ocorrendo erro de conflito de tipos.você poderia efetuar um consulta utilizando o contéudo da variável varestacao (gsi08) e retornar o código correspondente (159) dai você teria o código correto e o usaria na criação da expressão sql.t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

<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")'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&"')"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)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>
O usuário entra na página antes desta e digita as informações na página, (exeto) campo extação que existe um
delimitador = "."varestacao = Request.ServerVariables("REMOTE_HOST")'response.Write(varestacao)varestacao1 = Split(varestacao,delimitador)varestacao = varestacao1(0)
que pega o nome da máquina e mostra na página deixando que o usuário preencha os demais campos que são apenas dois.

 

eis o código da página onde o usuário preenche os dados.

<html><head><title>.:Suporte:.</title><script language="javascript">function formcheck()  {	 if(document.form.descricao.value == "")		{		alert("Por favor, preencha o campo Descrição.");		document.form.descricao.focus();		return false		}	 else if(document.form.usuario.value == "1")		{		alert("Por favor, selecione seu nome.");		document.form.usuario.focus();		return false		}  }  </script></head><!--#include virtual="./connect.asp"--><%delimitador = "."varestacao = Request.ServerVariables("REMOTE_HOST")'response.Write(varestacao)varestacao1 = Split(varestacao,delimitador)varestacao = varestacao1(0)set usuario_bd = Conexao.execute("SELECT usuario,usuarioid from func_atual Order by usuario")set estacao_bd = Conexao.execute("SELECT estacao,estacaoid from estacao_atual WHERE estacao = '"&varestacao&"'")Session.LCID = 1046%><body style="overflow:hidden"><h2 align="center"><b><u>SUPORTE</u></b></h2><form name="form" method="post" action="form.asp"><table border=0 align=center width=95% cellspacing=4>  <tr align=right>  <td width=25%><b>Data de Abertura: </b></td>  <td align=left width=25%> <b style=color:"black"><%=FormatDateTime(Date)%></b></td>  <td width=20%><b>Hora de Abertura:</b></td>  <td  align=left width=20%><input type=hidden name="horaabe" size=6 value="<%=FormatDateTime(now,3)%>"> <b style=color:"black"><%=FormatDateTime(now,3)%></b></td>  </tr> <tr><td align=right><b>Estação : </b></td><td><input type=hidden name="estacao" size=12 value="<%=estacao_bd("estacao")%>"> <b style=COLOR:"black"><%=varestacao%></b></td></tr><tr><td align=right><b>Usuário: </b></td><td colspan=2><select name="usuario" id="Usuario"><% 'Loop para preencher os nomes	do while not usuario_bd.eof %>	<option value="<%=usuario_bd("usuarioid")%>"><%=usuario_bd("usuario")%></option><%	usuario_bd.movenext	loop	set usuario_bd = nothing%></select></td></tr><tr align=right><td valign="top"><b>Descrição: </b></td><td align=left colspan="5"><textarea name="descricao" id="descricao" rows=6 cols=48></textarea></td></tr><tr><td align=right colspan=2><input type="Submit" value="Enviar" onClick="return formcheck()">     </td><td align=left> <input type="Reset" value="Limpar"></td><td align=right><a href="index.htm"><b>Voltar</b></a></td></tr></table></form><%	Conexao.close	set Conexao		= nothing	set estacao_bd  = nothing%></body></html>
Na página onde está dando o erro,
sql = "insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao)"'sql = sql & " Values ("'sql = sql & "'"&varhrabe&"',"'sql = sql & ""&varhrabe&","'sql = sql & "'"&varestacao&"',"	 ---esses valores são recupedados do formulário---'sql = sql & ""&vararea&","'sql = sql & "'"&vardescricao&"')"
aqui está quando é resgatado os dados do formulário onde o usuário peencheu,
varhrabe		= Request.Form ("horaabe")varusuario		= Request.form ("usuario")varestacao		= Request.form ("estacao")vardescricao	= Request.form ("Descricao")
lembrando que estação é o nome da máquina do cara gsi08 que a página pega via Request.ServerVariables("REMOTE_HOST").

Tem que funcionar, pois antes funcionava.. apenas formatou a máquina mas nada foi alterado na pasta onde contém os arquivos da página web.

 

--sabe o que eu estava pensando, insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao), e se eu converter esse campo estacaoid para string, será que dá certo?

 

Seria assim? insert into principal(horaabe,usuarioid,cstr(estacaoid),areaid,descricao)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na página onde está dando o erro,

sql = "insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao)"'sql = sql & " Values ("'sql = sql & "'"&varhrabe&"',"'sql = sql & ""&varhrabe&","'sql = sql & "'"&varestacao&"',"	 ---esses valores são recupedados do formulário---'sql = sql & ""&vararea&","'sql = sql & "'"&vardescricao&"')"
aqui está quando é resgatado os dados do formulário onde o usuário peencheu,
varhrabe		= Request.Form ("horaabe")varusuario		= Request.form ("usuario")varestacao		= Request.form ("estacao")vardescricao	= Request.form ("Descricao")
lembrando que estação é o nome da máquina do cara gsi08 que a página pega via Request.ServerVariables("REMOTE_HOST").Tem que funcionar, pois antes funcionava.. apenas formatou a máquina mas nada foi alterado na pasta onde contém os arquivos da página web.--sabe o que eu estava pensando, insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao), e se eu converter esse campo estacaoid para string, será que dá certo?Seria assim? insert into principal(horaabe,usuarioid,cstr(estacaoid),areaid,descricao)

 

Doce Ana,Ninguém falou que seria fácil! :grin:Bom você disse que esta rotina funcionava antes de formatar a máquina, certo?Bom analisei a a estrutura das tabela que você postou e:Tanto na tabela PRINCIPALNome do campo: EstacaoidTipo: NumeroFormato: Inteiro LongoComo na tabela ComputadorNome do campo: EstacaoidTipo: AutoNumeracaoFormato: Inteiro LingoEstá no formato numero no formato inteiro longo. Assim sendo é impossivel gravar o valor de gsi08 pois é um valor alfanumérico e as regra no bd não aceitariam.Agora já que você disse que funcionava antes a unica ideia que me vem a cabeça seria que talvez o valor da estacaoid foi alterado.Quero dizer não será que após a formatação no nome da máquina não foi trocado?Tipo assim ante de formatar a máquina era identificada no Request.ServerVariables("REMOTE_HOST") por 08.Depois de formatada a máquina era identificada no Request.ServerVariables("REMOTE_HOST") por gsi08 .Isso explicaria o pq que funcionava anteiormente e agora não funciona agora.Mas uma coisa posso afirma da forma como esta modelado hoje você não coseguira inserir o valor gsi08 no campo estacaoid. A não ser que você altere o tipo dele na tabela principal e na tabela computador.No agurado!!t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi.. Mas ai vem a questão..a máquina que foi formatada não foi a máquina gsi08 (máquina do usuário) e sim o servidor que rodava um Windows 2000 iis e agora está com o 2003 (iis) também.e a questão de converter?Seria assim? insert into principal(horaabe,usuarioid,cstr(estacaoid),areaid,descricao).Qual o erro nessa linha?set area_bd = Conexao.execute(" SELECT estacaoid,areaid,ativo FROM computador WHERE estacaoid = "&varestacao&" AND ativo = 1")pois eu andei tentando alterar algumas coisas e agora dá esse erro.. mas só para desencargo de conciencia..Microsoft OLE DB Provider for ODBC Drivers error '80040e10' [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. /suporte/form.asp, line 15

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi.. Mas ai vem a questão..

a máquina que foi formatada não foi a máquina gsi08 (máquina do usuário) e sim o servidor que rodava um Windows 2000 iis e agora está com o 2003 (iis) também.

e a questão de converter?

 

Seria assim? insert into principal(horaabe,usuarioid,cstr(estacaoid),areaid,descricao)

Ana,

 

você pode efetuar o teste da conversão mas não irá adiantar. Faça o teste e você verá que não aceitará pois as regras (constraint) dizem que ele é um campo do tipo numerico e não aceitará letras ou espaçoes em branco.

 

você pode sim usar um cstr para converter o campo do tipo numero mas só na camada de apresentação e não na transacional (onde é feita a persistência dos dados).

 

você tem certeza q não houve nenhuma mudança na base de dados ou na nomenclatura das máquinas da sua rede?

 

Todas as estação esta cadastradas na tabela COMPUTADOR?

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique se os nomes dos campos e das tabelas estao exatamente como no seu DB, pois isso pode ser erro de digitacaose estiverem tudo certo escreve o resultado da SQL ja processada e poste aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estão idênticas... E na rede não houve qualquer mudança na nomenclatura das máquinas. A ÚNICA mudança foi no servidor, como eu disse era um IIS rodando no Windows 2000 e agora é IIS rodando no Windows 2003.

 

Não sei se ajuda.. Nesta linha

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

 

é da forma original.. e dá erro, para passar desse erro eu tenho que alterar WHERE estacaoid para WHERE estacao ai volta a dar esse erro que está dando atualmente de tipo de dados no insert. Mas a linha original é essa set area_bd = Conexao.execute(" SELECT estacaoid,areaid,ativo FROM computador WHERE estacaoid = "&varestacao&" AND ativo = 1") que fui um erro que apareceu antes deste que está aparecendo agora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

de um response.write nisso" SELECT estacaoid,areaid,ativo FROM computador WHERE estacaoid = "&varestacao&" AND ativo = 1"e poste aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique se os nomes dos campos e das tabelas estao exatamente como no seu DB, pois isso pode ser erro de digitacao

 

se estiverem tudo certo escreve o resultado da SQL ja processada e poste aqui

marioufpa

 

A expressão é a seguinte:

insert into principal(horaabe,usuarioid,estacaoid,areaid,descricao) Values ('16:54:11', 741, 'gsi08', '233','sdsd')
O problema é q o campo estacaoid é numérico no formato inteiro longo e o valor que esta sendo gravado é 'gsi08' por isso ocorre o erro de mysmatch.

 

O valor que deveria ser inserido seria o código 159 q provavlemente é um sequencial. Porém a Ana nã tem este código disponivel na pagina pois o valor 'gsi08' é recuperado Request.ServerVariables("REMOTE_HOST").

 

E segundo a Ana isto funcionava corretamente antes da formatação do server.

 

No minimo intrigante!

Compartilhar este post


Link para o post
Compartilhar em outros sites

se é numerico como vem este string?

Compartilhar este post


Link para o post
Compartilhar em outros sites

se é numerico como vem este string?

Vamos por partes!

 

Este último erro relatado é novo!!

 

Vamos tentar entender o problema do insert pq acho q resolveremos tudo.

 

O select posta acima estava retornando um erro de tipos incompativeis.

 

Tava faltando os plics e coisa e tal.

 

Depois de acertar a expressão delimitando as string´s com plics continuo o erro.

 

A Ana postou a estrutura de dados e o campo estacaoid tanto na tabela PRINCIPAL qto na CUMPUTADOR é numero inteiro longo. Assim não é possivel grava o valor 'gsi08' [/]b nele. Depois de vário poste chegamos a conclusão que o valor a ser gravado seria 159 que é o sequencial de 'gsi08' [/]b na tabela COMPUTADOR que é chave estrangeira na PRINCIPAL. O probelma é que a Ana desconhece onde esta sendo armazenado o valor 159 pois a variavel estacaoid esta sendo carregada atraves de Request.ServerVariables("REMOTE_HOST").

 

Entendeu?

 

Agora como isto funfa antigamente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, eu estava pensando uma coisa.. será que essa linha não dá certo devido a questão de resolução de nome DNS no iis?cscript adsutil.vbs set /w3svc/EnableReverseDNS "TRUE"Pois quando eu entrei para mexer nessa página eu nem sabia como era antes.. só peguei depois que formataram o servidor.. e antes eu tive um problema com nome de máquina e foi ai que habilitei o DNS no IIS..será que é por isso que dá erro nessa linha? Pois pode ser que antes estivesse como false e agora true..Na tabela computador eu tenho gravado.estacao = gsi08estacaoid = 159areaid = 233ativo = tem um tick pois o campo é sim/nãoessa tabela computador está relacionada com a principal pelo campo estacaoid.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, eu estava pensando uma coisa.. será que essa linha não dá certo devido a questão de resolução de nome DNS no iis?cscript adsutil.vbs set /w3svc/EnableReverseDNS "TRUE"Pois quando eu entrei para mexer nessa página eu nem sabia como era antes.. só peguei depois que formataram o servidor.. e antes eu tive um problema com nome de máquina e foi ai que habilitei o DNS no IIS..será que é por isso que dá erro nessa linha? Pois pode ser que antes estivesse como false e agora true..

Pode ser.Alguma coisa foi mudada para para de funcionar.Faça a alteração e teste. Mas lembre-se deixe a linha original comentada!!Pelo visto os erro estão se alastrando!! ahahat+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na tabela computador eu tenho gravado.estacao = gsi08estacaoid = 159areaid = 233ativo = tem um tick pois o campo é sim/nãoessa tabela computador está relacionada com a principal pelo campo estacaoid.e na tabela princial eu tenho estacaoid = 233

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.