Ir para conteúdo

Arquivado

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

TeixeiraRamos

Erro de sintaxe

Recommended Posts

Tenho os formulários:

lista.asp com o código:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<% 
 'Dados para a conexão com o banco de dados
 driver   = "{MySql ODBC 3.51 Driver}" ' Drive para conexão ODBC
 servidor = "localhost"                ' Nome DNS OU IP dp seu servidor HTTP
 usuario  = "root"                     ' Nome de usuário para acesso ao MySQL
 senha    = "admin"                    ' Senha de acesso
 banco    = "integracao"               ' Nome do banco de dados

'Cria um objeto de conexão com banco de dados
Set cnnDB = Server.CreateObject("ADODB.Connection")

'Cria a string de conexão
connStr = "driver=" + driver + "; uid=" + usuario + "; "
connStr = connStr + "pwd=" + senha + "; database=" + banco

'Seta a string de conexão, e realiza a conexão
cnnDB.ConnectionString = connStr
cnnDB.Open

'Cria a expressão SQL de consulta
sql = " SELECT * FROM livros ORDER BY livro ASC "

'Cria um objeto para armazenar o retorno da consulta,
'conhecido como ResultSet (Conjunto de Reultado)
Set rs = Server.CreateObject("ADODB.RecordSet")

'Ativa a conexão criada para o ResultSet
Set rs.ActiveConnection = cnnDB

'Execute a expressão SQL no servidor
rs.Open sql
%>

<html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gerenciando Registros</title>
</head>

<body>
Preencha os campos a seguir:
 <table width="80%" border="1" cellpadding="1" cellspacing="0" >
  <tbody>
  <tr align="center" bgcolor="#999999">
   <td>Cód.</td>
   <td>Livro</td>
   <td>Autor</td>
   <td>Editora</td>
  </tr>

<%
'Execute um while para navegar nos registros de retorno
while not rs.EOF
	Codigo   = rs("ID")
	Livro    = rs("LIVRO")
	Autor    = rs("AUTOR")
	Editora  = rs("EDITORA")
%>

 <tr>
  <td width="20%" align="right"><%=Codigo%>
  	<a href="inserir.asp?acao=editar&buscacodigo=<%=Codigo%>">(Editar)</a>
    <a href="gerencia-registro.asp?acao=excluir&buscacodigo=<%=Codigo%>">(Excluir)</a></td>
  <td width="30%"><%=Livro%></td>
  <td width="30%"><%=Autor%></td>
  <td width="35%" ><%=Editora%></td>
 </tr>
 
<%
 'Avança para o próximo registro
 rs.MoveNext
 
 'Fim do while
Wend
%>
</tbody>
</table>
<br /><a href="inserir.asp">Clique aqui para inserir um novo registro.</a><br />
</body>
</html>

Ao abrir a página vejo todos os registros.

Clicando em "editar" que fica do lado de cada registro do formulário lista.asp abre o formulário "inserir.asp.

Nesse é possível alterar um registro de e clicando no botão "Aterar" abre o formulário "gerencia-registro.asp com o código:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!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" lang="pt-br">

<%
'Dados para a conexão com o banco de dados
 driver   = "{MySQL ODBC 3.51 Driver}" ' Driver para conexão ODBC
 servidor = "localhost"                ' Nome DNS ou do seu servido HTTP
 usuario  = "root"                     ' Nome de usuário para acesso ao MySQL
 senha    = "admin"                    ' Senha de acesso
 banco    = "integracao"               ' Nome do banco de dados

'Cria um objeto de conexão com banco de dados
Set cnnDB = Server.CreateObject("ADODB.Connection")

'Cria a string de conexão
connStr = "driver=" + driver + "; uid=" + usuario + "; "
connStr = connStr + "pwd=" + senha + "; database=" + banco

'Seta a string de conexão, e realiza a conexão
cnnDB.ConnectionString = connStr
cnnDB.Open

'Caso ocorra um erro, prossiga até o tratamento de erro
On error resume next

'Verifica se o arquivo foi chamado a partir de um formulário
If Request.QueryString("acao") = "adicionar" then
	sql = " INSERT INTO LIVROS (LIVRO, AUTOR, EDITORA) VALUES ( "
	sql = sql & "'" & Request.Form("FormNomeLivro") & "', "
	sql = sql & "'" & Request.Form("FormNomeAutor") & "', "
	sql = sql & "'" & Request.Form("FormNomeEditora") & "' " 
	sql = sql & ") "

'Executa a expressão SQL no servidor
cnnDB.Execute sql

'Verifica o sucesso da operação, baseada ma variável 'err'
If err.number = 0 then
 Response.Write("Operação realizada com sucesso")
Else
 Response.Write("Erro: " + err.description)
 End if

'Executa a alteração do registro, se solicitada
Elseif Request.QueryString("acao") = "editar" then
	sql = " UPDATE LIVROS SET "
	sql = sql & "LIVRO = '" & Request.Form("FormNomeLivro") & "', "
	sql = sql & "AUTOR = '" & Request.Form("FormNomeAutor") & "', "
	sql = sql & "EDITORA = '" & Request.Form("FormNomeEditora") & "' "
	sql = sql & "WHERE ID = " & Request.Form("FormCodigoLivro") 

'Executa a expressão SQL no servidor
cnnDB.Execute sql 

' Verifica o sucesso da operação, baseada na variável 'err'
If err.number = 0 then
	Response.Write("Operação realizada com sucesso")
Else
	Response.Write("Erro: " + err.description)
 End if 

' Execute a exclusão do registro, se solicitada
Elseif Request.QueryString("acao") = "excluir" then
	sql = " DELETE FROM LIVROS WHERE ID = "
	sql = sql & Request.QueryString("buscacodigo")

' Ececuta a expressão SQL no servidor
cnnDB.Execute sql 

'Verifica o sucesso da operação, baseada na variável 'err'
If err.number = 0 then
	Response.Write("Operação realizada com sucesso")
Else 
	Response.Write("Erro: " + err.description)
 End if

End if

%>

<br /><a href="inserir.asp">Clique aqui para inserir um novo registro.</a>
<br /><a href="lista.asp">Clique aqui para visualizar os registros.</a>

</body>
</html>

Ocorre que nesse momento recebo a mensagem:

Erro: [MySQL][ODBC 3.51 Driver][mysqld-5.7.13-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Clique aqui para inserir um novo registro.
Clique aqui para visualizar os registros.

E o registro não é alterado no banco de dados MySQL.

Apresentam resultados satisfatórios a "Inclusão", "Exclusão" de registros. Somente "Alterar" não funciona (UPDATE)

Compartilhar este post


Link para o post
Compartilhar em outros sites

se entendi bem:

1. poste a pagina inserir.asp

2. utilize o comando response.write nas sqls

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vá até a linha 53 do arquivo "gerencia-registro.asp", cole o código abaixo, execute novamente e em seguida, copie o que aparece na tela do seu navegador e cole aqui no fórum.

 

Response.Write "Query = " & sql

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Executei conforme informado está dando essa mensagem:

 

Citar

Query = UPDATE LIVROS SET LIVRO = 'Celebrando a Palavra', AUTOR = 'Fernando Armellini', EDITORA = 'Editora Ave-Maria' WHERE ID = Erro: [MySQL][ODBC 3.51 Driver][mysqld-5.7.13-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Clique aqui para inserir um novo registro.
Clique aqui para visualizar os registros.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Teixeira!

Me desculpa eu não poder lhe responder com frequência.... Eu também estou com meus problemas e correria..

O seu navegador exibe o detalhe do erro?

Se não exibir o detalhe do erro.... habilita no IIS pra enviar ERRO pro navegador... ai fica mais fácil você ver o que está dando erro.

Editei porque não tinha visto o loop correto.

 

Andei olhando melhor, e acho que tem várias coisas que você não deveria fazer, como por exemplo o Request.form dentro da formação da Query do SQL... pega os dados numa variável antes e tenta tratá-los, verifica se o ID vem correto, e se o nome dos campos estão corretos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 31/01/2017 at 10:11, Fernando C disse:

se entendi bem:

1. poste a pagina inserir.asp

2. utilize o comando response.write nas sqls

 

Em 13/02/2017 at 09:22, luiscarlos5046 disse:

Olá Teixeira!

Me desculpa eu não poder lhe responder com frequência.... Eu também estou com meus problemas e correria..

O seu navegador exibe o detalhe do erro?

Se não exibir o detalhe do erro.... habilita no IIS pra enviar ERRO pro navegador... ai fica mais fácil você ver o que está dando erro.

Editei porque não tinha visto o loop correto.

 

Andei olhando melhor, e acho que tem várias coisas que você não deveria fazer, como por exemplo o Request.form dentro da formação da Query do SQL... pega os dados numa variável antes e tenta tratá-los, verifica se o ID vem correto, e se o nome dos campos estão corretos.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 13/02/2017 at 09:22, luiscarlos5046 disse:

Olá Teixeira!

Me desculpa eu não poder lhe responder com frequência.... Eu também estou com meus problemas e correria..

O seu navegador exibe o detalhe do erro?

Se não exibir o detalhe do erro.... habilita no IIS pra enviar ERRO pro navegador... ai fica mais fácil você ver o que está dando erro.

Editei porque não tinha visto o loop correto.

 

Andei olhando melhor, e acho que tem várias coisas que você não deveria fazer, como por exemplo o Request.form dentro da formação da Query do SQL... pega os dados numa variável antes e tenta tratá-los, verifica se o ID vem correto, e se o nome dos campos estão corretos.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu é que devo pedido de desculpa a vocês. Tive que fazer um cirurgia com urgência. Me recuperei, mas minha mãe com 100 anos e 8 meses pegou um conjuntivite bacteriana. Com isso toda a família está voltada para a saúde dela.

Respondendo: Eu vou verificar, mas meu navegador eu acho que está para exibir detalhes do erro.

Esses formulários são do livro "MySQL - Guia do Programador" - de André Milani. Página 264 e seguintes.

Não gostaria de ficar se aprender criar página ASP com formulário e interagindo com MySQL. É muito importante.

Estou tendo muito dificuldade para encontrar exercícios desse tipo na internet e o livro citado tem esses formulários, mas um, de alteração (importante) vem apresentando problema.

Encontro muita coisa na internet, mas é páginas em PHP interagindo com MySQL.

Já conferir diversas o modelo do livro diversas vezes e não consigo achar o erro. Me parece, não sei bem, mas o problema é um "aspa" ( " ) composta, mas já tirei, coloquei e nada.

Obrigado a todos e vou continuar lutando.   

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 31/01/2017 at 10:11, Fernando C disse:

se entendi bem:

1. poste a pagina inserir.asp

2. utilize o comando response.write nas sqls

Página inserir:

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<%
	'Dados para a conexão com o banco de dados
	driver   = "{MySQL ODBC 3.51 Driver}"   ' Driver para conexão ODBC
	servidor = "localhost"					' Nome DNS ou IP do seu servidor HTTP
	usuario	 = "root"						' Nome de usuário para acesso ao MySQL
	senha 	 = "admin"						' Senha de acesso
	banco	 = "integracao"					' Nome do banco de dados  

' Cria um objeto fr conexão com banco de dados
Set cnnDB = Server.CreateObject("ADODB.Connection")

' Cria a string de conexão
connStr = "driver=" + driver + "; uid=" + usuario + "; "
connStr = connStr + "pwd=" + senha + "; database=" + banco


' Seta a string de conexão, e realiza a conexão
cnnDB.ConnectionString = connStr
cnnDB.Open

' Caso ocorra um erro, prossiga até o tratamento dp erro
On error resume next

' Verifica se o arquivo foi chamado em modo de edição
If Request.QueryString("acao") = "editar" then

' Cria a expressão que captura os dados do registro a ser alterado
sql = " SELECT * FROM Livros WHERE ID = "
sql = sql + Request.QueryString("buscacodigo")
response.write
' Cria um objeto para armazenar o registro da consulta
Set rs = Server.CreateObject("ADODB.RecordSet")

' Ativa a conexão criada para o ResultSet
Set rs.ActiveConnection = cnnDB

' Executa a expressão SQL no servidor
rs.Open sql

' Armazena os valores capturados em variáveis auxiliares, se existir
Codigo  = rs("ID")
Livro   = rs("LIVRO")
Autor  	= rs("AUTOR")
Editora = rs("EDITORA")

End if
%>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gerenciando Registro</title>
</head>

<body>
Preencha os campos a seguir:
<%
 If Request.QueryString("acao") = "editar" then
 	acao = "editar"
 Else
 	acao = "adicionar"
 End if
%>

<form method="post" action="gerencia-registro.asp?acao=<%=acao%>">
<input type="hidden" nome="FormCodigoLivro" value="<%=Codigo%>" />
<table>
	<tr>
    	<td>Nome do Livro</td>
        <td>
        <input name="FormNomeLivro" size="80" maxlength="64" value="<%=Livro%>">
        </td>
    </tr>
    <tr>
    	<td>Nome do Autor:</td>
        <td>
        <input name="FormNomeAutor" size="80" maxlegth="64" value="<%=Autor%>" />
        </td>
    </tr>
    <tr>
    	<td>Nome da Editora:</td>
        <td>
         <input name="FormNomeEditora" size="60" maxlength="60" value="<%=Editora%>"/>
        </td>
    </tr>
    <tr>
    	<td colspan="2" align="right">
     	 <input type="reset" value="Limpar" />
 <%
   If Request.QueryString("acao") = "editar" then
   	NomeBotao = "Alterar"
   Else
    NomeBotao = "Cadastrar"
   End if
%>		
	<input type="submit" value="<%=NomeBotao%>" />
   </td>
 </tr>
 </table>
</form>
</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente o seguinte: nessa linha:

<input type="hidden" nome="FormCodigoLivro" value="<%=Codigo%>" />

mude para:

<input type="hidden" name="FormCodigoLivro" value="<%=Codigo%>" />

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve, salve Fernando C, Boa tarde,

Graças a suas orientações foi resolvido.

Além do "nome" para "name" alterei no banco de dados o Length de 16 para 50.

Pois mesmo alterando o nome para name ainda mostrava erro, considerando que estava alterando digitando a palavra "Editora", logo ficava além 16 caracteres, mas isso você não poderia adivinhar.

Agora ficou tudo bem.

Obrigado a você e a todos.

 

 

 

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.