Ir para conteúdo

POWERED BY:

Arquivado

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

Rodrigo F.

Selecionando aonde buscar.

Recommended Posts

Valeu rodrigo.

É que o meu problema há algum tempo é fazer umabusca commais de um campo, havendo a possibilidade do usuário selecionar um campo, ou dois, ou três, deixando os outros em branco e montar o SELECT de acordo com o que vem do form, ignorando os campos em brancos. Dá uma olhada lá. Valeu pela atenção cara.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No meu caso ele faz a busca em todas as tabelas normalmente.. Ou seja.. Se buscarem por "Leonardo" serão resultados tudo que contiver leonardo. Seja no titulo original, traduzido, ator, diretor ou sinopse... E eu estou tentando adicionar a possibilidade do usuário especificar aonde quer buscar.. tipo.. "Ator" => Leonardo.. Só vai ser consultadas as tabelas de ator. Ignorando as demais. entende?

Na teoria é simples, mais na pratica semprre passa um if desapercebido ou alguma ". Só com a ajuda mesmo pra ir matando os erros, até pq esse é um código herdado e pelo que estudei de ASP, vi que ele ta muito bagunçado. :{

Compartilhar este post


Link para o post
Compartilhar em outros sites

Corrigi o erro do expression e me veio o erro:

 

Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression '(sinopse LIKE '%AAAAZZZZCXCAAJAJA%') AND id_genero ='.

/busca_simples_teste.asp, line 78

Asp é intrigante, mais tem de ter atenção 100%

E as vezes (99%) os erros são primários mesmo, aspas ou parenteses.. Mais o olho não capta tudo :{

Compartilhar este post


Link para o post
Compartilhar em outros sites

os nomes dos campos estao corretos ?

Verifique se nao esta passando um valor testo em um campo numerico,

precisa substituir a aspa

dá um

 

response.write sql

response.end()

 

para ver o que esta sendo passado na SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta tudo "certinho" (aparentemente)

 

A "resposta" foi uma página em branco

 

Ja olhei no BD access os nomes das tabelas e ta tudo exatamente como está la...

Ja revisei isso em papel, impresso mesmo, na caneta :{

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sinceramente não sei mais o que fazer.Vou acabar desistindo dessa mudança.

Passei o dia todo olhando o arquivo de ponta cabeça e não decifrei a pendenga :{

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já devem estar de saco cheio de mim aqui.. Mais estou me esforçando...

 

Seguindo as dicas, peguei o cod. de uma busca que tem aqui no laboratório de scripts, fiz as devidas modificações e o erro ficou:

 

Microsoft JET Database Engine error '80040e0c'

Command text was not set for the command object.

/busca_simples_teste.asp, line 68

 

[65] filme.CursorType = 0

[66] filme.CursorLocation = 2

[67] filme.LockType = 3

[68] filme.Open()

[69] filme_numRows = 0

 

O código atualmente está assim:

 

<%
Dim filme__MMColParam
filme__MMColParam = "AAAAZZZZCXCAAJAJA"
if (Request.QueryString("titulo") <> "") then filme__MMColParam = Request.QueryString("titulo")
%>

<%
	function preparaPalavra(str)
	preparaPalavra = replace(str,"a","[a,á,à,ã,â,ä]")
	preparaPalavra = replace(preparaPalavra,"e","[e,é,è,ê,ë]")
	preparaPalavra = replace(preparaPalavra,"i","[i,í,ì,î,ï]")
	preparaPalavra = replace(preparaPalavra,"o","[o,ó,ò,õ,ô,ö]")
	preparaPalavra = replace(preparaPalavra,"u","[u,ú,ù,û,ü]")
	preparaPalavra = replace(preparaPalavra,"c","[c,ç]")
	preparaPalavra = preparaPalavra
	end function


	ip = Request.ServerVariables("REMOTE_ADDR")
	Dim categoria__MMColParam
	categoria__MMColParam = Trim(Request.QueryString("mode"))

	set filme = Server.CreateObject("ADODB.Recordset")
	filme.ActiveConnection = MM_Cinepipoca_STRING

	If Request.QueryString("mode") = "titulo" Then
		
		filme.Source = "SELECT * FROM filme WHERE Title LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR titulo_original LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' ORDER BY titulo ASC"
	
	else
	
	If Request.QueryString("mode") = "ator" Then
		
		filme.Source = "SELECT * FROM filme WHERE atores1 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores2 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores3 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores4 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores5 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores6 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores7 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores8 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores9 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores10 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' ORDER BY titulo ASC"
	
	else

	If Request.QueryString("mode") = "diretor" Then
		
		filme.Source = "SELECT * FROM filme WHERE direcao LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' ORDER BY titulo ASC"
	
	else

	If Request.QueryString("mode") = "sinopse" Then
		
		filme.Source = "SELECT * FROM filme WHERE sinopse LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' ORDER BY titulo ASC"
	
	End if
   End if
  End if	
End if

filme.CursorType = 0
filme.CursorLocation = 2
filme.LockType = 3
filme.Open()
filme_numRows = 0
%>

 

Vou editar meus posts anteriores e remover os cods para evitar flood...

vlws

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este erro pode ser é causado por um vazio SQL

 

da um response.write na SQL

e tenta usar assim

SQL = "SELECT * FROM filme WHERE Title LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR titulo_original LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' ORDER BY titulo ASC
filme.open SQL,conexao,2,3

é na onde você esta fazendo a conexao ???

Set conexao=Server.CreateObject("ADODB.Connection")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Microsoft VBScript compilation error. Nome redefinido. Esse tipo de erro ocorre ao declarar uma variável 2 vezes na mesma página. Preste atenção se você estiver utilizando um include onde o mesmo abre a conexão com a Base de Dados, por exemplo, é aberta a conexão na página atual com as devidas variáveis e essas mesmas variáveis são declaradas no include, neste caso a variável é declarada uma vez no include e outra na página que contém o include. É correto retirar a declaração das variáveis da página e deixar que prevaleçam as variáveis do include, onde as mesmas estão sendo utilizadas em outras páginas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu havia olhado isso antes de postar aqui, pesquisei até a informação de erro.

Verifiquei as includes e não tem variavel duplicada.

 

mesmo assim, obrigado por ajudar..

 

O erro ta assim:

 

Microsoft JET Database Engine error '80040e0c'

Command text was not set for the command object.

/busca_simples_teste.asp, line 67 [/quote]

A linha informada é a linha filme.open()

[code]filme.CursorType = 0
filme.CursorLocation = 2
filme.LockType = 3
filme.Open()
filme_numRows = 0

O cod de consulta ficou assim

<%
Dim filme__MMColParam
filme__MMColParam = "AAAAZZZZCXCAAJAJA"
if (Request.QueryString("titulo") <> "") then filme__MMColParam = Request.QueryString("titulo")
%>

<%
	function preparaPalavra(str)
	preparaPalavra = replace(str,"a","[a,á,à,ã,â,ä]")
	preparaPalavra = replace(preparaPalavra,"e","[e,é,è,ê,ë]")
	preparaPalavra = replace(preparaPalavra,"i","[i,í,ì,î,ï]")
	preparaPalavra = replace(preparaPalavra,"o","[o,ó,ò,õ,ô,ö]")
	preparaPalavra = replace(preparaPalavra,"u","[u,ú,ù,û,ü]")
	preparaPalavra = replace(preparaPalavra,"c","[c,ç]")
	preparaPalavra = preparaPalavra
	end function


	ip = Request.ServerVariables("REMOTE_ADDR")
	Dim categoria__MMColParam
	categoria__MMColParam = Trim(Request.QueryString("selecionado"))

	set filme = Server.CreateObject("ADODB.Recordset")
	filme.ActiveConnection = MM_Cinepipoca_STRING

	If Request.QueryString("selecionado") = "titulo" Then
		
		filme.Source = "SELECT * FROM filme WHERE Title LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR titulo_original LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' ORDER BY titulo ASC"
	
	else
	
	If Request.QueryString("selecionado") = "ator" Then
		
		filme.Source = "SELECT * FROM filme WHERE atores1 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores2 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores3 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores4 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores5 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores6 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores7 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores8 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores9 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores10 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' ORDER BY titulo ASC"
	
	else

	If Request.QueryString("selecionado") = "diretor" Then
		
		filme.Source = "SELECT * FROM filme WHERE direcao LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' ORDER BY titulo ASC"
	
	else

	If Request.QueryString("selecionado") = "sinopse" Then
		
		filme.Source = "SELECT * FROM filme WHERE sinopse LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' ORDER BY titulo ASC"
	
	End if
   End if
  End if	
End if

filme.CursorType = 0
filme.CursorLocation = 2
filme.LockType = 3
filme.Open()
filme_numRows = 0
%>

E o formulário ficou assim:

 

<tr>
							<td height="30">
							  <form name="titulo" method="GET" action="busca_simples_teste.asp">
								<table width="313" border="0" cellspacing="0" cellpadding="0">
								  <tr>
									<td width="210">
									  <input type="text" style="font-family : Verdana;font-size : 12px;width : 206px;" name="titulo">
									</td>
									  <td height="33" align="left" style="font-size: 12px; font-weight: bold" width="77"><select style="font-family : Verdana;font-size : 8pt; color:#046EBB; font-weight:bold" name="selecionado">
									<option name="selecionado" value="ator">Ator</option>
									<option name="selecionado" value="audio">Áudio</option>
									<option name="selecionado" value="diretor">Diretor</option>
									<option name="selecionado" value="sinopse">Sinopse</option>
									<option name="selecionado" value="titulos" selected>Titulo</option>

									</select></td>
									<td width="26">
									  <input type="image" border="0" name="Buscar" src="images/buscar.jpg" onClick="FDK_AddNonBlankValidation('titulo','document.titulo.titulo',true,'\'Digite o título do filme !\'');FDK_Validate('titulo',true,false,'Atenção! Club Video Locadora');return document.MM_returnValue">
									</td>
								  </tr>
								</table>
							  </form>
							</td>
						  </tr>

Tentei passo-a-passo localizar o que pode estar errado e não consegui, vou acabar deixando com a busca geral mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca embaixo de cada filme.source assim

 

Response.Write filme.source

Response.End

 

Poste o que mostrar na tela.

 

 

Obs. não remova o conteúdo do tópico. Se algum moderador entender que é flood, o mesmo fará o que achar necessário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca embaixo de cada filme.source assim

 

Response.Write filme.source

Response.End

 

Poste o que mostrar na tela.

 

 

Obs. não remova o conteúdo do tópico. Se algum moderador entender que é flood, o mesmo fará o que achar necessário.

 

Obrigado amigo hargon, e desculpa ter removido o post inicial, só não queria atrapalhar.. Desculpa mesmo..

 

Vou fazer o teste hoje, pois estou no trabalho, agradeço a ajuda, pois a coisa parou mesmo.. E sem muito tempo pra estudar, tenho de ir mais no tato mesmo.

 

Abração e muito obrigado.

 

--------- Respondendo

 

Microsoft JET Database Engine error '80040e0c'

Command text was not set for the command object.

/busca_simples_teste2.asp, line 71

Onde a linda 71 é:

 

filme.CursorType = 0

filme.CursorLocation = 2

filme.LockType = 3

filme.Open()

filme_numRows = 0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este erro é geralmente causado por um SQL vazio (e não necessariamente lidar com explícita objeto ADODB.Command ).

 

como esta sua instrucao SQL ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

A conexão

 

<%
Dim MM_Cinepipoca_STRING
caminho_banco = Server.MapPath("datacine/cine.mdb")
MM_Cinepipoca_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & caminho_banco
%>

 

<%
Dim filme__MMColParam
filme__MMColParam = "AAAAZZZZCXCAAJAJA"
if (Request.QueryString("titulo") <> "") then filme__MMColParam = Request.QueryString("titulo")
%>

[size="5"][b] A consulta SQL[/b][/size]

<%
	function preparaPalavra(str)
	preparaPalavra = replace(str,"a","[a,á,à,ã,â,ä]")
	preparaPalavra = replace(preparaPalavra,"e","[e,é,è,ê,ë]")
	preparaPalavra = replace(preparaPalavra,"i","[i,í,ì,î,ï]")
	preparaPalavra = replace(preparaPalavra,"o","[o,ó,ò,õ,ô,ö]")
	preparaPalavra = replace(preparaPalavra,"u","[u,ú,ù,û,ü]")
	preparaPalavra = replace(preparaPalavra,"c","[c,ç]")
	preparaPalavra = preparaPalavra
	end function


	ip = Request.ServerVariables("REMOTE_ADDR")
	Dim categoria__MMColParam
	categoria__MMColParam = Trim(Request.QueryString("selecionado"))

	set filme = Server.CreateObject("ADODB.Recordset")
	filme.ActiveConnection = MM_Cinepipoca_STRING

	If Request.QueryString("selecionado") = "titulo" Then
		
		filme.Source = "SELECT * FROM filme WHERE Title LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR titulo_original LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' ORDER BY titulo ASC"
	
	else
	
	If Request.QueryString("selecionado") = "ator" Then
		
		filme.Source = "SELECT * FROM filme WHERE atores1 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores2 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores3 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores4 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores5 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores6 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores7 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores8 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores9 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' OR atores10 LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' ORDER BY titulo ASC"
	
	else

	If Request.QueryString("selecionado") = "diretor" Then
		
		filme.Source = "SELECT * FROM filme WHERE direcao LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' ORDER BY titulo ASC"
	
	else

	If Request.QueryString("selecionado") = "sinopse" Then
		
		filme.Source = "SELECT * FROM filme WHERE sinopse LIKE '%" + Replace(preparaPalavra(filme__MMColParam), "'", "''") + "%' ORDER BY titulo ASC"
	
	End if
   End if
  End if	
End if

filme.CursorType = 0
filme.CursorLocation = 2
filme.LockType = 3
filme.Open()
filme_numRows = 0
%>

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.