Ir para conteúdo

Arquivado

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

TeixeiraRamos

Erro de sintaxe (operador faltando) expressão de consulta 'LIKE &#

Recommended Posts

Boa Tarde a todos,

Esta ocorrendo a seguinte mensagem de erro:

 

 

Microsoft Office Access Database Engine erro '80040e14'

Erro de sintaxe (operador faltando) na expressão de consulta 'LIKE '%%''.

/serieweb/nasp/pesquisa.asp, linha 15

 

O código é esse:

<%
Response.Expires = 0
DIM conexaoDataBase, sqlDados, rsDados, totalLivros, estilo
Call abreConexao
sqlDados = "SELECT * FROM livros "
sqlDados = sqlDados + " WHERE " + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "
sqlDados = sqlDados + " ORDER BY titulo "
Set rsDados = conexaoDataBase.Execute(sqlDados)
totalLivros = rsDados.recordcount
estilo = "Pesq"
%>

A linha 15 é essa:

 

 

Set rsDados = conexaoDataBase.Execute(sqlDados)

 

Está tudo igual ao exemplo do livro que estou estudando.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde a todos,

Esta ocorrendo a seguinte mensagem de erro:

 

 

O código é esse:

<%
Response.Expires = 0
DIM conexaoDataBase, sqlDados, rsDados, totalLivros, estilo
Call abreConexao
sqlDados = "SELECT * FROM livros "
sqlDados = sqlDados + " WHERE " + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "
sqlDados = sqlDados + " ORDER BY titulo "
Set rsDados = conexaoDataBase.Execute(sqlDados)
totalLivros = rsDados.recordcount
estilo = "Pesq"
%>

A linha 15 é essa:

 

 

Está tudo igual ao exemplo do livro que estou estudando.

 

aprendi aqui no forum a pouco tempo atras a usar o Like com o % mas meu codigo é um pouco diferente do seu fica deste jeito:

 

dim variavel_valor

 

Variavel_valor=request.form("valor")

 

sqlDados= "select * from livros where modo LIKE '%"&variavel_valor&"%' "

 

É complicado au acho a maneira que meu professor em ensinou mt diferente doque a maioria usa aqui no forum por mais que o resultado seja o mesmo, e funcione do mesmo jeito mas seria legal um padrão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rafael,

Eu também concordo com você deveria ser padrão.

E o pior é que o código está exatamente igual ao livro. Dei uma olhada aqui: http://www.w3schools.com/sql/default.asp mas não consegui nada para resolver. Tentei a sua sugestão mas não funcionou no código do livro. Acredito que o autor cria o código de uma forma se tentar alterar alguma coisa não dá certo dentro do código dele. Não sei também se é isso. Eu posso está julgando errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rafael,

Eu também concordo com você deveria ser padrão.

E o pior é que o código está exatamente igual ao livro. Dei uma olhada aqui: http://www.w3schools.com/sql/default.asp mas não consegui nada para resolver. Tentei a sua sugestão mas não funcionou no código do livro. Acredito que o autor cria o código de uma forma se tentar alterar alguma coisa não dá certo dentro do código dele. Não sei também se é isso. Eu posso está julgando errado.

tem algumas coisas importantes qual banco de dados vc ta usando? esse abreconexão oque seria? outra no seu banco de dados o valor esta como? numero ou texto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rafael,

1) Meu bd é Access 2007;

 

2) Call abreConexao - executa a rotina de abertura da conexão com banco de dados que no meu caso é o dbConexao.asp que por sua vez está indicado #Include;

 

3) No caso da pesquisa o campo é tipo texto;

Desculpe, mas acredito que já tenha ou vão postar orientações mais técnicas no fórum sobre este assunto.

 

Bem, meus amigos analisando constatei que:

a) Para pesquisar valores de variáveis alfanuméricas com operador LIKE é usado:

 

LIKE '%" + nome do campo texto + "%'"

 

Para pesquisar valores de variáveis numéricas com os operadores =,>,<=,<.<=, ou <> é usado:

 

="+nome do campo texto

 

Também constatei que a minha página pesquisa.asp não é para ser aberta. Ela é acessada através da página index.asp ou qualquer outra que tenha o campo pesquisa que trabalha com o código:

<select name="modo" class="CaixaCombo">
	<option value="titulo">Título</option>
    <option value="autor">Autor</option>
    <option value="codLivro">ISBN</option>
</select>

<input name="valor" type="text" class="CaixaTexto" size="25" maxlength="50" />
<input name="imageField" type="image" class="CaixaTexto" src="imagens/btn_OkLogo.gif" align="top" width="25" height="20" border="0" />

Onde o nome=modo é citado no código pesquisa.asp.

 

Resumindo o meu problema continua considerando que ao abrir a página index.asp, optar para pesquisar por exemplo por "Autor" e digitar um autor por exemplo "Oliviero" (exemplo do livro) ou qualquer só com parte informa que foi encontrado "0". Porém se for informado o nome do "Autor" completo a página pesquisa.asp é aberta e mostra o(s) livro(s) daquele nome do "Autor" que digitei completo.

Dessa forma acredito que tenha algo errado na página pesquisa.asp que é chamada pelas outras páginas:

O código completo da página pesquisa.asp é:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
option explicit
%>

<!--#Include file="laboratorios/dbConexao.asp"-->

<%
Response.Expires = 0
DIM conexaoDataBase, sqlDados, rsDados, totalLivros, estilo
Call abreConexao
sqlDados = "SELECT * FROM livros "
sqlDados = sqlDados + "WHERE "  + request.form("modo") + " Like  " + "'%" + request.form("valor") + "%' "
sqlDados = sqlDados + "ORDER BY titulo "
Set rsDados = conexaoDataBase.Execute(sqlDados)
totalLivros = rsDados.recordcount
estilo = "Pesq"
%>

<%
estilo = "HOME"
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Faça um Site - ASP (Active Srever Pages)</title>
<link href="estiloSite.asp" rel="stylesheet" type="text/css" />
</head>

<!--Aqui inicio-->
<body>
<table width="758" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">

<form name="form1" method="post" action="pesquisa.asp">
<tr>
<td background="estilos/Home/LogoSup.gif" class="LogoSuperior"><!--#include file="menuPesquisa.asp"--> </td>
</tr>
</form>

<tr>
<td background="estilos/Home/LogoSupData.gif" class="LogoSuperiorData"> <% = formatDateTime(date,1) %> </td>
</tr>

<tr>
<td background="estilos/Pesq/img_BemVindo.jpg" class="LogoImagem"><!--#Include file="menuSup.asp"--></td>
</tr>

<tr>
<td valign="top" background="estilos/Home/PagCentral.gif" class="PaginaCentral">

<table width="758" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="213" valign="top"><!--#Include file="menuCateg.asp"--></td>
<td width="545" valign="top">

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2" classe="Espaco"><br/><br/><br/></td>
<tr/>
<tr>
<td colspan="2" class="NumeroLivros">Sua pesquisa encontrou <b><% = totalLivros %></b>  livro(s)</td>
</tr>
<tr>
<td colspan="2" class="Espaco"><br/><br/><br/></td>
<tr>

<% do While not rsDados.eof %>
<tr>
<td width="13" rowspan="3" valign="top"><div align="right"><img src="Capas/<% = rsDados("codLivro") %>.JPG" width="59" heiht="84" vspace="4" border="1"></div></td>
<td width="87%"><a href="detalhe.asp?codigo=<% = rsDados("codLivro") %>&categ=<% = rsDados("categoria") %>" class="LinkTituloLivro"><% = rsDados("titulo") %></a></td>
</tr>
<tr>
<td class="NomeAutor"><% = rsDados("autor") %></td>
</tr>
<tr>
<td class="ResenhaLivro"><% = rsDados("resenha") %></td>
<tr>
<td colspan="2" class="Espaco"><br/><br/><br/><td>
</tr>
<%
rsDados.MoveNext
loop
%>
</table>


</td>
</tr>
</table>


</td>
</tr>
<!--#Include file="rodape.asp"-->
</table>

</body>
</html>
<%
rsDados.close
Call fechaConexao
Set rsDados = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

este eero pode ser de 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. e também veja se os tipos de dados estão corretos. Dá um response.write na sua srting SQL para ver o que esta sendo passado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já fiz dezenas de conferencias e continua. Igual ao livro eu tenho certeza.

A pesquisa só é feita com nomes completos por parte não faz. Ainda não descobrir onde está o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já fiz dezenas de conferencias e continua. Igual ao livro eu tenho certeza.

A pesquisa só é feita com nomes completos por parte não faz. Ainda não descobrir onde está o erro.

Teixeira bem vindo ao clube tbm uso o access como bd, td mundo fala que esta ultrapassado e blabla bla mas é oke aprendi no curso to lendo sobre mysql ae no meu trabalho(trabalho no setor de informatica de uma multinacional) o pessoal do bussines falou pra nao estudar mysql e ja estudar sql server direto o problema é ke nao vou usar nem tao cedo a nao ser ke eles me contratem antes de terminar a faculdade. mas vamos la ao seu caso:

 

tambem aprendi a usar um arquivo de conexão neste caso o meu chamo de conn.asp e uso o include para "chama lo" nas paginas, como ja disse antes tenho dificuldade ainda de ler e enteder seu codigo por completo vou postar o meu aqui derrepente você tem esse dom amis apurado que o meu tente adaptar para ver se funciona com o seu bd se funcionar sabemos que é coisa mais simples.

conn.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Dim ConnectString, conn
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/dados/CYDER.mdb")' esse negrito você precisa mudar para o caminho do seu arquivo de dados
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnectString

 

%>
a pagina com o codigo like
quadro_kp_consulta_departamento.asp
<!-- #include file="conn.asp" -->
<%
var_status =("ATI")
var_pesq = request.form("vconsultar")
vSql = "SELECT * FROM TAB_QUADRO_Keppel where DEPARTAMENTO LIKE'%"&VAR_pesq&"%' AND status='"&VAR_STATUS&"' order by departamento,usuario asc"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
if myRst.BOF and myRSt.EOF then
Response.Write("<script language='JavaScript'>alert('Consulta não encontrada!');location.href='quadro_kp.html';</script>")
end if
%>

agora so adaptar para o seu banco de dados o campo em negrito

outra coisa importante ja aconteceu cmg copiar e colar direto da erro é chato mas as vezes e preciso digitar td de novo

Compartilhar este post


Link para o post
Compartilhar em outros sites
Igual ao livro eu tenho certeza.

 

também tenho esse livro..

amigo.. não é por nada não, mas.. habitue-se a abstrair código desnecessário, testar variáveis e “pegar” a lógica..

nessa pesquisa, o "pulo do gato" está na pg 213, especialmente as linhas em negrito do item 5..

bom, tente assim:

 

1. pg HTML simples com 1 form simples p/ pesquisa:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Faça um Site</title>
</head>

<body>
<p>Pesquise por parte do nome do autor ou titulo do livro:</p>
<form name="form1" method="post" action="pesquisa2.asp">
  <label>Nome:
  <input type="text" name="cxnome">
  </label>
  <br>
<br>
<select name="modo">
    <option value="titulo">Título</option>
    <option value="autor">Autor</option>
</select>
<br>
<br>
<label>
<input type="submit" name="Submit" value="Submit">
</label>
</form>

</body>
</html>

pg pesquisa2.asp:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%
dim cxnome,modo

cxnome=request.form("cxnome")
modo=request.form("modo")

response.write cxnome&"<p>"
response.write modo&"<p>"

%>

Se as variáveis estiverem ok, as sqls ficam assim:

if modo="autor" then
consulta="Select * from livros where nomeAutor like '%"+cxnome+"%' "

'OU
'consulta="Select * from livros where nomeAutor like '%"&cxnome&"%' "
end if

if modo="titulo" then
consulta="Select * from livros where nomeLivro like '%"+cxnome+"%' "
end if

perceba que a ideia é testar as variáveis (para isso os "ifs"), ok?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fernando,

 

o "pulo do gato" está na pg 213, especialmente as linhas em negrito do item 5.. bom, tente assim:

Não sei se é outra edição (a minha é a 3ª) mas no meu não existe na página 213, as linhas em negrito do item 5. Na página só tem em negrito as palavras: "estilo", "Home" e "estiloSite.asp". Essa página 213, analisa a página modelo.asp. Já voltei diversas vezes em outras páginas para observar...mas nada. Estou na página 240, final do livro.

Você acha que antes de postar já não voltei em outras página buscando uma resposta? Vendo uma lógica no código? Se for a mesma edição por favor, observe a página 160. Contudo não estou conseguindo não é por falta de empenho. E o pior que não encontrei o "pulo do gato". Mas valeu! Tentei o seus exemplos mas não deu certo mas vou conseguir. Vou continuar tentando Fernando. Já me sugeriram testar as variáveis também mas não aceito esse erro se for do livro. Para você ter uma ideia, justamente essa página é que tenho maior interesse em aprender para criar no meu blog uma página de pesquisa. Todas as etapas do livro acredito que venci e aprendi. Tive sim uma dúvida mas postei e foi logo esclarecido, mas nessa pesquisa ainda não tive êxito.

Mas valeu Fernando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

testando a sql direto no bd.

 

Select * from livros where nomeAutor like '%"&cxnome&"%' "

 

o que ela resulta ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu código é esse:

<%
Response.Expires = 0
DIM conexaoDataBase, sqlDados, rsDados, totalLivros, estilo
Call abreConexao
sqlDados = "SELECT * FROM livros "
sqlDados = sqlDados + " WHERE " + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "
sqlDados = sqlDados + " ORDER BY titulo "
Set rsDados = conexaoDataBase.Execute(sqlDados)
totalLivros = rsDados.recordcount
estilo = "Pesq"
%>

Você pede para colocar aonde essa linha:

Select * from livros where nomeAutor like '%"&cxnome&"%' "

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fernando,

Tentei acompanhar a sua sugestão mas não obtive êxito:

 

No seu exemplo informa que a sql vai ficar assim:

if modo="autor" then
consulta="Select * from livros where nomeAutor like '%"+cxnome+"%' "

Ocorre que no exemplo do livro está assim:

<%
Response.Expires = 0
DIM conexaoDataBase, sqlDados, rsDados, totalLivros, estilo
Call abreConexao
sqlDados = "SELECT * FROM livros "
sqlDados = sqlDados + " WHERE "  + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "
sqlDados = sqlDados + " ORDER BY titulo "
Set rsDados = conexaoDataBase.Execute(sqlDados)
totalLivros = rsDados.recordcount
estilo = "Pesq"

%>

O erro do livro está aqui?

sqlDados = sqlDados + " WHERE "  + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "

O livro consta " LIKE ";

Se for possível de um exemplo de teste de variável considerando as minhas variáveis.

Os testes que fiz informa variável não encontrada.

Resumindo devo está colocando algo errado. Gostaria de aprender fazer o teste mas não estou conseguindo.

Um exemplo com o meu código vou aprender.

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque a SQL assim: Select * from livros where nomeAutor like '%"&cxnome&"%' "

Compartilhar este post


Link para o post
Compartilhar em outros sites

xanburzum

 

coloque a SQL assim: Select * from livros where nomeAutor like '%"&cxnome&"%' "

Por favor, veja as sql que tenho:

<%
Response.Expires = 0
DIM conexaoDataBase, sqlDados, rsDados, totalLivros, estilo
Call abreConexao
sqlDados = "SELECT * FROM livros "
sqlDados = sqlDados + " WHERE "  + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "
sqlDados = sqlDados + " ORDER BY titulo "
Set rsDados = conexaoDataBase.Execute(sqlDados)
totalLivros = rsDados.recordcount
estilo = "Pesq"

%>

Substituo esse?

sqlDados = "SELECT * FROM livros "

Essa?

sqlDados = sqlDados + " WHERE "  + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "

Ou essa?

"sqlDados = sqlDados + " ORDER BY titulo "

Lembra que informei que a pesquisa está sendo feita perfeitamente só não faz se colocar parte do nome do "autor".

Não estou conseguindo entender.

Colunas, ou melhor, campos do bando de dados:

 

CodLivro;

categoria

Titulo

Autor

NPaginas

Formato

Preco

resenha

Lancamento

dataPub

CÓD

 

O menupesquisa.asp que é justamente aonde é digitado o que você deseja pesquisar, que por sua vez fica na parte superior de todas as páginas tem esse código:

<select name="modo" class="CaixaCombo">
	<option value="titulo">Título</option>
    <option value="autor">Autor</option>
    <option value="codLivro">ISBN</option>
</select>

<input name="valor" type="text" class="CaixaTexto" size="25" maxlength="50" />
<input name="imageField" type="image" class="CaixaTexto" src="imagens/btn_OkLogo.gif" align="top" width="25" height="20" border="0" />

Observe que trabalha com os campos "titulo"; "autor" e "codLivro" não vejo erro nos nomes dos campos.

Não entendo porque só não pesquisa por parte de nome do "autor". Esse é o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

xanburzum

Por favor, veja as sql que tenho:

<%
Response.Expires = 0
DIM conexaoDataBase, sqlDados, rsDados, totalLivros, estilo
Call abreConexao
sqlDados = "SELECT * FROM livros "
sqlDados = sqlDados + " WHERE "  + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "
sqlDados = sqlDados + " ORDER BY titulo "
Set rsDados = conexaoDataBase.Execute(sqlDados)
totalLivros = rsDados.recordcount
estilo = "Pesq"

%>

Substituo esse?

sqlDados = "SELECT * FROM livros "

Essa?

sqlDados = sqlDados + " WHERE "  + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "

Ou essa?

"sqlDados = sqlDados + " ORDER BY titulo "

Lembra que informei que a pesquisa está sendo feita perfeitamente só não faz se colocar parte do nome do "autor".

Não estou conseguindo entender.

Colunas, ou melhor, campos do bando de dados:

 

O menupesquisa.asp que é justamente aonde é digitado o que você deseja pesquisar, que por sua vez fica na parte superior de todas as páginas tem esse código:

<select name="modo" class="CaixaCombo">
	<option value="titulo">Título</option>
    <option value="autor">Autor</option>
    <option value="codLivro">ISBN</option>
</select>

<input name="valor" type="text" class="CaixaTexto" size="25" maxlength="50" />
<input name="imageField" type="image" class="CaixaTexto" src="imagens/btn_OkLogo.gif" align="top" width="25" height="20" border="0" />

Observe que trabalha com os campos "titulo"; "autor" e "codLivro" não vejo erro nos nomes dos campos.

Não entendo porque só não pesquisa por parte de nome do "autor". Esse é o problema.

teixeira em cima doke vc perguntou ao xanbur é para substituir as 3 partes sendo que ele so nao colocou a orden que será exibido a busca que no seu caso é pelo titulo.

 

sqlDados = "SELECT * FROM livros "

sqlDados = sqlDados + " WHERE " + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "

sqlDados = sqlDados + " ORDER BY titulo "

 

menupesquisa.asp nesta pagina vc ta usando uma cx de seleção onde a pessoa escolhe entre titulo,autor,codlivro(modo) e depois coloca o nome que vai consultar(valor)

é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Sim, tem uma caixa de seleção.

<select nome-"modo" class="CaixaCambo">

1-uma coisa da um response.write dos dois campos para ver oque esta retornando

modo=request.form("modo")

valor=request.form("valor")

response.write(modo)

response.write(valor)

response.end

 

 

2-tenta fazer o select direto como teste sem ser pela pagina (menupesquisa.asp) escrevendo os campos

 

<%

Response.Expires = 0

DIM conexaoDataBase, sqlDados, rsDados, totalLivros, estilo,valor

valor=request.Form("valor")

Call abreConexao

sqlDados = "SELECT * FROM livros "

sqlDados = sqlDados + " WHERE " + "autor" + " LIKE " + "'%" + "valor" + "%' "

sqlDados = sqlDados + " ORDER BY titulo "

Set rsDados = conexaoDataBase.Execute(sqlDados)

totalLivros = rsDados.recordcount

estilo = "Pesq"

%>

 

ae você coloca parte do nome do autor

Exe:. mont (monteiro lobato)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

enta fazer o select direto como teste sem ser pela pagina (menupesquisa.asp) escrevendo os campos

Caríssimo eu nunca fiz o select pela pagina menupesquisa.asp desde o início informei que tenho que abrir e digitar "qualquer coisa" na pagina index.asp.Nada mais lógico ue digitar algo na pagina menupesquisa.asp e gerar um arro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caríssimo eu nunca fiz o select pela pagina menupesquisa.asp desde o início informei que tenho que abrir e digitar "qualquer coisa" na pagina index.asp.Nada mais lógico ue digitar algo na pagina menupesquisa.asp e gerar um arro.

teixeira desculpe kra so tava tentando ajudar realmente escrevi errado a pagina menupesquisa.asp recolhe os dados para ser pesquisado pelo select. o uso do response.write e response.end seria so para confirmar se os dados estao passando certos. mas blz boa sorte com sua duvida ae.

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.