Ir para conteúdo

POWERED BY:

Arquivado

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

zoldax

Erro de sintaxe (operador faltando) na expressão de consulta

Recommended Posts

Salve Salve, galera eu tenho aqui um livro de visita, quando entro na parte de admin e tento Atualizar ou deletar recebo o seguinte erro:

 

Tipo de erro:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na expressão de consulta 'id = 25nome=Monica'.
/livro01/administracao.asp, line 179

Na linha 179 da minha pagina administracao.asp na linha 179 :

 

rs.Open sql, conn

Meu script completo:

 

<%if Session("livro") <> "logado" then
Response.Redirect "logar.asp"
else%>
<html>

<head>
<title>Deletar ou Atualizar MENSAGENS</title>
<style>
a{text-decoration:none;color:#000000}
a:hover{text-decoration:underline}

/*Barra de Rolagem*/
body {
scrollbar-face-color: #ffffff;
scrollbar-highlight-color: #c0c0c0; 
scrollbar-shadow-color: #000000;
scrollbar-3dlight-color: #000000;
scrollbar-arrow-color: #000000; 
scrollbar-darkshadow-color: #000000; 
scrollbar-base-color: #000000;}

table {font-size:11}
body{font-family:verdana;font-size:11;color:#000000;cursor:default}

#barra {border:2px outset #336699;background-color:#336699;font-size:13;color:#ffffff;width:100%;text-align:center;font-family:verdana;font-weight:bold}

#bot {background-color:#BFE2FF;color:#ff0000;font-weight:bold;font-family:verdana;font-size:11;text-align:center;border:2px solid #000080}
#caixa {font-family:verdana;font-size:11;color:#ff0000;background-color:#f1f1f1;border:1px solid #000000}
</style>
</head>

<body topmargin="5">
<%
tipo = request.querystring("tipo")
If IsEmpty(tipo) or tipo = "" then
%>
<center>
<table width="650">
<tr>
  <td style="background-color: #e3e3e3; font-weight: bold; color: #ff0000; padding: 3" valign="top" align="center" width="148">
    Novela
  </td>
  <td style="background-color: #e3e3e3; font-weight: bold; color: #ff0000; padding: 3" valign="top" align="center" width="70">
    Data
  </td>
  <td style="background-color: #e3e3e3; font-weight: bold; color: #ff0000; padding: 3" valign="top" align="center" width="231">
    MENSAGEM
  </td>
  <td style="background-color: #e3e3e3; font-weight: bold; color: #ff0000; padding: 3" valign="top" align="center" width="91">
    ATUALIZAR
  </td>
  <td style="background-color: #e3e3e3; font-weight: bold; color: #ff0000; padding: 3" valign="top" align="center" width="108">
    DELETAR
  </td>
</tr>
<%
DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
          DSNtemp=dsntemp & "DBQ=" & server.mappath("livro.mdb")
          sqlstmt = "SELECT * FROM assinantes ORDER BY data DESC"
          Set rs = Server.CreateObject("ADODB.Recordset")
          rs.Open sqlstmt, DSNtemp, 3, 3
TotalRecs = rs.recordcount
x = 0
For x = 1 to 9999
	If rs.eof then
		Exit For
	Else
   %>
    <tr>
      <td style="background-color: #f1f1f1; padding: 3" valign="top" align="left" width="148">
        <span style="color:#336699;font-weight:bold"><%=rs("nome")%></span><br>
      </td>
      <td style="background-color: #f1f1f1; padding: 3" valign="top" align="center" width="70">
        <%=rs("data")%>
      </td>
      <td style="background-color: #f1f1f1; border: 1px solid #000000; padding: 3" valign="middle" align="left" width="266">
        <%=rs("mensagem")%>
      </td>
      <td style="background-color: #f1f1f1; padding: 3" valign="middle" align="center" width="91">
        <a OnMouseOver="window.status='ATUALIZAR mensagem postada por <%=rs("nome")%>:: Data <%=rs("data")%>'; return true" href="administracao.asp?tipo=atualiza1&id=<%=rs("id")%>nome=<%=rs("nome")%>&mensagem=<%=rs("mensagem")%>&site<%=rs("site")%>&email=<%=rs("email")%>">ATUALIZAR</a>
      </td>
      <td style="background-color: #f1f1f1; padding: 3" valign="middle" align="center" width="108">
        <a OnMouseOver="window.status='DELETAR mensagem postada por <%=rs("nome")%>:: Data <%=rs("data")%>'; return true" href="administracao.asp?tipo=deleta&id=<%=rs("id")%>">DELETAR</a>
      </td>
    </tr>
    <%
rs.MoveNext
End If
Next%>
  <tr>
    <td colspan="3" valign="top" align="right" style="background-color: #f1f1f1; padding: 3" width="228">
      Total de Gravações do banco:
    </td>
    <td valign="top" align="center" style="background-color: #f1f1f1; padding: 3" colspan="2" width="330">
     <span style="color:#ff0000;font-weight:bold"><%=TotalRecs%></span>
    </td>
  </tr>
</table>
<%
rs.close
set rs = nothing
%>
</center>
<p>
<%
end if
if tipo = "atualiza1" then
id = request.querystring("id")
if IsEmpty(id) or id = "" then
response.write "<br><br><br><br><center style=""width:310;background-color:#e3e3e3;color:#ff0000;border:1px solid #000000;padding:3;font-weight:bold"">"
response.write "Algum título deve ser selecionado para ser APAGADO do branco de dados!</center>"
else
nome = request.querystring("nome")
mensagem = request.querystring("mensagem")
site = request.querystring("site")
email = request.querystring("email")
%>
<center>
<form action="administracao.asp?tipo=atualiza" method="post">
<table width="450" colspan="2">
  <tr>
    <td style="background-color: #e3e3e3; font-weight: bold; color: #ff0000; padding: 3" valign="top" align="center" colspan="2" width="438">
      Atualizar dados do livro
    </td>
  </tr>
  <tr>
    <td style="background-color: #f1f1f1; padding: 3" valign="middle" align="right" width="85">
      Nome:      
    </td>
    <td  style="background-color: #f1f1f1; padding: 3" valign="middle" align="left" width="343">
      <input type="text" name="novela" size="53" id="caixa" value="<%=nome%>">
    </td>
  </tr>
  <tr>
    <td style="background-color: #f1f1f1; padding: 3" valign="middle" align="right" width="85">
      E-mail:      
    </td>
    <td  style="background-color: #f1f1f1; padding: 3" valign="middle" align="left" width="343">
      <input type="text" name="novela" size="53" id="caixa" value="<%=email%>">
    </td>
  </tr>
  <tr>
    <td style="background-color: #f1f1f1; padding: 3" valign="middle" align="right" width="85">
      Site:      
    </td>
    <td  style="background-color: #f1f1f1; padding: 3" valign="middle" align="left" width="343">
      <input type="text" name="novela" size="53" id="caixa" value="<%=site%>">
    </td>
  </tr>
  <tr>
    <td style="background-color: #f1f1f1; padding: 3" valign="top" align="right" width="85">
      Mensagem:      
    </td>
    <td  style="background-color: #f1f1f1; padding: 3" valign="middle" align="left" width="343">
      <textarea name="descricao" size="53" id="caixa" rows="4" cols="52"><%=mensagem%></textarea>
    </td>
  </tr>
    <td  style="background-color: #f1f1f1; padding: 3" valign="middle" align="center" colspan="2" >
      <input type="submit" value="Atualizar dados" id="bot">
    </td>
  <input type="hidden" name="id" value="<%=id%>">
</table>
</center>
</form>
<%
end if
end if
if tipo = "atualiza" then

mensagem = request.form("mensagem")
nome = request.form("nome")
id = request.form("id")

strCon = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("livro")
Set conn = Server.CreateObject("ADODB.Connection")
conn.open strCon
sql = "UPDATE assinantes SET nome = '" & nome & "', mensagem = '" & mensagem & "' WHERE id = " & id & ""
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn

if err.Number <> "0" then
Response.Write "<center style=""width:250"">Algo de errado aconteceu e as informaçães nã foram ATUALIZADAS</center>"
else
Response.Write "<br><br><br><center style=""width:250;background-color:#f1f1f1;padding:3;border:1px solid #ff0000"">Informações ATUALIZADAS com sucesso!"
Response.Write "<br><br><a href=""administracao.asp?tipo=redireciona""><b>Clique aqui</b> para atualizar ou deletar outra mensagem!</a></center><br><br><br><br><br><br><br>"
end if
end if%>
<%
if tipo = "deleta" then
id = request.querystring("id")
DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
          DSNtemp=dsntemp & "DBQ=" & server.mappath("livro.mdb")
			sql = "DELETE * FROM assinantes WHERE id = " & id & ""
			Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, DSNtemp
rs.close
set rs = nothing
%>
<br><br><br><center><span style="font-size:12;font-weight:bold;background-color:#f1f1f1;width:250;text-align:center;border:1px solid #000000;padding:5">
O registro<br><b><%=id%></b><br>foi deletado com sucesso!<br><br>
<a href="administracao.asp?tipo=redireciona">Clique aqui para deletar ou atualizar outro</a></span></center><br><br><br><br><br><br><br>
<%end if
if tipo = "redireciona" then
response.redirect "administracao.asp"
end if
end if%>
</body>
</html>
Desculpe por colocar o codigo inteiro aqui, ma sé apena so codigo da pagina que esta dando o erro, ficarei grato com a compreenção.

 

Att:

 

Geasi Felipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta errada a sintaxe dessa query

sql = "UPDATE assinantes SET nome = '" & nome & "', mensagem = '" & mensagem & "' WHERE id = " & id & ""

 

coloca assim

sql = "UPDATE assinantes SET nome = '" & nome & "', mensagem = '" & mensagem & "' WHERE id = " & id

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Dee Souza: fiz o que você me disse alterei mas da o mesmo erro,

 

veja abaixo:

 

Tipo de erro:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na expressão de consulta 'id = 25nome=Monica'.
/livro01/administracao.asp, line 179
nessa minha linha 179 : rs.Open sql, conn ja coloquei rs.Open sql, conn, 3, 3 mas também nao rolo, a sintaxe tava errada mesmo nem vi :) brigadao, se puder me ajuda ficarei grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dee: o numero de identificação no banco de dados:

 

veja minha pagina pra assinar o livro de visita:

 


<html>

<head>
<title>Livro de Visitas</title>
<style>
a{text-decoration:none}
body{font-family:verdana;font-size:12;color:#000000}
table{font-family:verdana;font-size:12;color:#000000}

.1{background-color:#c0c0c0;text-align:center;font-weight:bold;padding:3}
.2{background-color:#f1f1f1;font-weight:normal;padding:3}
.caixa{background-color:#f1f1f1;font-family:verdana;fotn-size:12;color:#ff0000;border:1px solid #000000}

#bot {background-color:#BFE2FF;color:#ff0000;font-weight:bold;font-family:verdana;font-size:11;text-align:center;border:2px solid #000080}

body {
scrollbar-face-color: 336699;
scrollbar-highlight-color: #ffff00; 
scrollbar-shadow-color: #ffff00;
scrollbar-3dlight-color: #0718ff;
scrollbar-arrow-color: #ffff00; 
scrollbar-darkshadow-color: #0718ff; 
scrollbar-base-color: #ffff00;}

#link {font-family:Verdana;font-size:11;color:#000000;font-weight:bold}
#link a{font-family:Verdana;font-size:11;color:#000000;font-weight:bold;width:100%;padding:3;border:1px solid #000000;cursor:default}
#link a:hover{font-family:Verdana;font-size:11;color:#000000;font-weight:bold;text-decoration:none;cursor:default;background-color:#ffff00}
</style>
</head>

<body topmargin="0">

<%
tipo = request.querystring("tipo")
If IsEmpty(tipo) or tipo = "" then
%>
<center>
<form action="assina.asp?tipo=insere" method="post">
<table colspan="2" width="500" style="border:1px solid #000000">
  <tr>
    <td colspan="2" class="1" width="488">
      Livro de Visitas
    </td>
  </tr>
  <tr>
    <td width="102" class="2" valign="middle" align="right">
      <b>Nome</b>:
    </td>
    <td width="384" class="2" valign="middle" align="left">
      <input type="text" name="nome" value="" class="caixa" size="44">
    </td>
  </tr>
  <tr>
    <td width="102" class="2" valign="middle" align="right">
      <b>E-mail</b> *:
    </td>
    <td width="384" class="2" valign="middle" align="left">
      <input type="text" name="email" value="" class="caixa" size="44">
    </td>
  </tr>
  <tr>
    <td width="102" class="2" valign="middle" align="right">
      <b>Site</b>:
    </td>
    <td width="384" class="2" valign="middle" align="left">
      <input type="text" name="site" value="http://" class="caixa" size="44">
    </td>
  </tr>
  <tr>
    <td width="102" class="2" valign="top" align="right">
      <b>Mensagem</b> *:
    </td>
    <td width="384" class="2" valign="middle" align="left">
      <textarea cols="44" rows="4" class="caixa" name="mensagem"></textarea>
    </td>
  </tr>
  <tr>
    <td colspan="2" class="2" style="text-align:center;font-size:12" valign="top">
      <input type="submit" value="Assinar" id="bot">   <input type="reset" value="Limpar" id="bot">
    </td>
  </tr>
  <tr>
    <td colspan="2" class="2" style="text-align:left;font-size:12" valign="top">
      <table width="100%">
        <tr>
          <td width="50%" id="link" valign="middle" align="center" bgcolor="#FFFFFF">
            <a href="assina.asp">Assinar no livro</a>
          </td>
          <td width="50%" id="link" valign="middle" align="center" bgcolor="#FFFFFF">
            <a href="mensagem.asp">Ver mensagens postadas</a>
          </td>
        </tr>        
      </table>
    </td>
  </tr>
  <tr>
    <td colspan="2" class="2" style="text-align:left;font-size:12" valign="top">
      ATENÇÃO: Os campos marcados com " <b>*</b> " são
      de preenchimento obrigatório!
    </td>
  </tr>
</table>
</form>
</center>
<%
'Aqui finaliza a parte onde mostra ao internauta a pagina de assinatura
end if
'Aqui comea a pagina onde vai inserir os dados
if tipo = "insere" then

'AQUI BUSCA AS INFORMACOES DO FORMULARIO
Session.LCID = 1046
nome = request.form("nome")
email = request.form("email")
site = request.form("site")
mensagem = request.form("mensagem")
data = date()
hora = Hour(time) + 3 & ":" & Minute(time) & ":" & Second(time)
ip = request.servervariables("REMOTE_ADDR")
mensagem = Replace(mensagem, chr(39), """)
mensagem = Replace(mensagem, "<", "<")
mensagem = Replace(mensagem, ">", ">")
mensagem = Replace(mensagem, VbCrLf, "<br>")

'MODIFICA DADOS NAO OBRIGATORIOS
If IsEmpty(nome) or nome = "" then
nome = "Anônimo"
else
nome = nome
end if
If site = "http://" then
site = "0" 
else
site = site
end if

'AQUI NOTIFICA A ALGUM CAMPO OBRIGATORIO VAZIO
If email = "" or mensagem = "" then
response.write "<center><br><br><br><table width=""250""><tr><td align=""center"" valign=""center"" class=""1"">Erro!</td></tr>"
response.write "<tr><td align=""center"" valign=""center"" class=""2"">ALGUM CAMPO OBRIGATÓRIO NÃO FOI PREENCHIDO!<BR>"
response.write "<BR><a href=""javascript:history.go(-1);"">CLIQUE AQUI PARA VOLTAR E PREENCHE-LO</a></td></table><br><br><br><br><br><br></center>"
else

'AQUI ESTA ABRINDO O BANCO E INSERINDO AS INFORMACOES NO MESMO!
SET marcos = CreateObject("ADODB.Connection")
meuLivro = "DRIVER={Microsoft Access Driver (*.mdb)};"
meuLivro = meulivro &"DBQ="& Server.MapPath("livro.mdb")
marcos.open meuLivro
SQL = "INSERT INTO assinantes(nome, email, site, mensagem, data, hora, ip)"
SQL = SQL & "VALUES('"& nome &"','"& email &"','"& site &"','"& mensagem &"','"& data &"','"& hora &"','"& ip &"')"
set GRAVAR = marcos.EXECUTE(SQL)

'AQUI REDIRECIONA A PAGINA DA MENSAGENS JA INSERIDA NO BANCO DE DADOS!
response.redirect "mensagem.asp"

'AQUI TERMINA A NOTIFICACAO DE ALGUM CAMPO VAZIO
end if
'AQUI TERMINA DE RODAR A PAGINA DE INSERSAO DE DADOS
end if
%>
</body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique a ortografia. pode ser um nome de coluna Invalido 'sua_coluna'. A coluna a qual você se refere na Base de Dados não foi encontrada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Moderador: Bixo verifiquei tuda a ortografica não encontrei nada muito errado em relação ao erro que esta acontecendo o erro apresentado.

 

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na expressão de consulta 'id = 24nome=Murilo'.

/livro01/administracao.asp, line 182

 

 

na linha 182 do minha pagina administracao.asp é : rs.Open sql, conn

 

Teria com eu usar outra sintaxe ?

 

att: Geasi Felipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua strign SQL, para ver o que esta sendo passada

 

response.write(SQL)

response.end()

 

e verifique se o tipo de campo esta correto, se é texto,numérico etc

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá

 

Moderador: fioz assim ó

 

strCon = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("livro")
Set conn = Server.CreateObject("ADODB.Connection")
conn.open strCon
sql = "UPDATE assinantes SET nome = '" & nome & "', mensagem = '" & mensagem & "' WHERE id = " & id & ""
Set rs = Server.CreateObject("ADODB.Recordset")
response.write(SQL)
response.end()
rs.Open sql, conn

Quando clico em atualizar não apresent ao erro mas aparece :

 

UPDATE assinantes SET nome = '', mensagem = '' WHERE id = 24nome=Murilo

 

Só isso na pagina sera que terei que verificar os campo se são numericos ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

"UPDATE assinantes SET nome = '" & nome & "', mensagem = '" & mensagem & "' WHERE id = " & id & ""

 

do jeito que esta passando , nome,mensagem são string e id numérico e perceba que não esta passando valor para nome e mensagem

verifique se esta sendo recuperado informações (dados) para essas variaveis

Compartilhar este post


Link para o post
Compartilhar em outros sites

Moderador: Bixo acho que vo verificar tudo do inicio eu peguei esse script de um amigo que baixou da net e tá muito complicado o codigo do cara compreende, mas valeu pela ajuda, caso eu tenha alguma outra duvida postarei outro Post. se tiver como colocar esse Post como finalizada ficarei grato. []´

Compartilhar este post


Link para o post
Compartilhar em outros sites

é bom dar uma analisada no code, para poder otimizar e melhorá-lo, mas ele não esta recebendo o valor das variaveis que mencionei acima, existem também, ótimos exemplos no fórum pode te ajudar, e olha este exemplo

Compartilhar este post


Link para o post
Compartilhar em outros sites

aparentemente esta faltama um AND ou OR na sua query pois está unindo tudo de forma incorreta

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro esta na SQL UPDATE , que não esta recebendo dados completos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, amigo, beleza, e havendo dúvidas, não deixe de postar,

 

até mais

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.