Ir para conteúdo

POWERED BY:

Arquivado

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

Legionario-rs

Select em ASP

Recommended Posts

Bom dia pessoal,

 

Tenho o seguinte código:

 

<%
Dim lojaDB
set lojaDB = Server.CreateObject("ADODB.Connection")
lojaDB.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Inetpub\wwwroot\Projetos\Lojas Adri\Projeto Lojas Adri\banco\loja.mdb"
lojaDB.open
%>
<center>
<table class=topo border=0 width="720" cellpadding=2 cellspacing=2>

		
	<td valign=middle align=right width="720"><p>
	<form action=listaprod.asp method=query target="principal">
	<font face="verdana" size="2" color="white"><b>
		   Buscar  <input type=text size=20 name=nome>  em  <input type=text size=20 name=nome>  <input type=button value=Buscar onclick="submit();">
		<input type=hidden name=lista value=busca>
		</form></p>
	</td>
</tr>
</table>

Preciso que este código além de realizar a busca que já faz com perfeição tenha um campo select para que o usuário possa indicar no dropdown a categoria que deseja pesquisar. No banco existe uma tabela com o nome de categorias mas não é a mesma tabela onde estão os cadastrados os produtos. Não consigo nada que funcione para executar este script corretamente, será que algum dos amigos do Fórum pode me ajudar?

 

Obrigado e abraç oa todos!

 

Legionario

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas na tabela onde esta o produtos cadastrados nao tem relação com as categorias ???? Pois se tiver um o campo que faz ligação entre as duas tabelas, exe:

 

categorias

id nome

 

produtos

id id_cat nome_produtos

 

Se for dessa forma, o campo que esta fazendo ligação entre as tabelas é o id_cat , onde é resgatado o valor da categorias para produtos.

 

Se puder explicar melhor como esta o seu bd e seu select, da pra analisar melhor a situação...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Sim o que faz a ligação entre tabelas é o id_cat porque em uma tabela chamada categorias há os campos id e nome e na tabela produtos existem os campos id, cat_id, nome, descricaop, descricaog, descricaoh, condicoes, preco, imagem, disp, chcpromocao e chclancamento. Então o cat_id na tabela de produtos é o mesmo id na tabela de categorias. Preciso do seguinte este script mostra um campo para digitação do produto e um botão de busca, ele deve ter o campo de digitação um dropdown com os itens da tabela categorias e o botão ok para o cliente poder digitar o que procura, selecionar em que categoria quer pesquisar e clicar no botão ok para proceder com a busca. Só o que falta é o dropdownlistando as categorias e é isto que não consigo adaptar.

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria + - assim:

 

<select size="1" name="filtro">
<% 
set conexao = createobject("adodb.connection")
constr = "Driver={Microsoft Access Driver (*.mdb)};DBQ="& server.mappath("banco/loja.mdb")
conexao.open constr
Set rs=Conexao.Execute("SELECT produtos.cat_id, categorias.nome,categorias.id FROM produtos INNER JOIN categorias ON produtos.cat_id=categorias.id ORDER BY categorias.nome asc")
While not rs.EOF
Response.Write "<option value="&rs("cat_id")&">"&rs("nome")&"</option>"
rs.Movenext
Wend %>
</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde pessoal,

 

fiz algumas modificações mas continua dando erro poderiam me ajudar???

 

<%
Dim lojaDB
set lojaDB = Server.CreateObject("ADODB.Connection")
set rs = server.CreateObject ("adodb.recordset")
lojaDB.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Inetpub\wwwroot\Sites\Projeto Lojas Adri\Novo Layout\banco\loja.mdb"
'lojaDB.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Inetpub\wwwroot\Sites\Projeto Lojas Adri\Novo Layout\banco\loja.mdb"
'lojaDB.open
sql="Select id, nome from categorias order by nome"
rs.open sql1,conn,3,3
'response.write("Escolha a categoria: ")
'response.write("<select name='categorias'>")'
'do while not rs.EOF
'response.write("<option value='" & rs("id") & "'>" & rs("nome") & "</option>")
'rs.MoveNext
'loop
'response.write("</select>")
%>

<center>
<table class=topo border=0 width="720" cellpadding=2 cellspacing=2>

		
	<td valign=middle align=right width="720"><p>
	<form action=listaprod.asp method=query target="principal">
	<font face="verdana" size="2" color="white"><b>
		   Buscar  <input type=text size=20 name=nome>  em  <input type=text size=20 name=nome> 
		<select name="atendimento" >
		<option value=""> Escolha uma categoria</option>
		<%do while not rs.EOF%>
		<option value=<%= rs("id")%>><%= rs("nome")%> </option>
		<%rs.movenext
		loop%>
		
		</select>
		  
		<input type=button value=Buscar onClick="submit();">
		<input type=hidden name=lista value=busca>
	  </form></p>
	</td>
</tr>
</table>

Retorna o erro:

 

Tipo de erro:

Erro de tempo de execução do Microsoft VBScript (0x800A01F4)

Variável não definida: 'rs'

/Projeto Lojas Adri/Novo Layout/topo.inc, line 4

 

Obrigado desde já!

 

Legionario.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Declare a variável antes utilizá-la.

 

Dim rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outro erro...

 

 

Tipo de erro:

Erro de tempo de execução do Microsoft VBScript (0x800A01F4)

Variável não definida: 'sql'

/Projeto Lojas Adri/Novo Layout/topo.inc, line 8

 

E agora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perceba que a mensagem "Variável não definida" significa que você não reclarou a variável.

 

Logo a frente é informada a variável, no caso acima "sql".

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza declarei todas...

O erro agora é esse...

 

Tipo de erro:

ADODB.Recordset (0x800A0BB9)

Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito.

/Projeto Lojas Adri/Novo Layout/topo.inc, line 9

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza declarei todas...

O erro agora é esse...

 

Tipo de erro:

ADODB.Recordset (0x800A0BB9)

Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito.

/Projeto Lojas Adri/Novo Layout/topo.inc, line 9

Aponte a linha que esta dando o erro ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

para forçar a declaracao explicita de todas as variaveis, e como esta sua String SQL, posta ela para analisarmos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia pessoal, consegui adaptar outro código e fiz funcionar o motor de busca mas o que acontece agora com este script que vou postar abaixo é que em alguns produtos que são listados aparece o seguinte erro:

 

Tipo de erro:
ADODB.Field (0x800A0BCD)
BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.
/Projeto Lojas Adri/Novo Layout/detalheprod.inc, line 57

Lembrando é somente em alguns produtos.

 

O script:

 

<link rel=stylesheet href=loja.css type=text/css>
<table border=0 width=100% cellspacing="0" cellpadding="10">

<%
Dim lojaDB
set lojaDB = Server.CreateObject("ADODB.Connection")
lojaDB.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Inetpub\wwwroot\Sites\Projeto Lojas Adri\Novo Layout\banco\loja.mdb"
lojaDB.open
%>

<%
Dim lista_produtos,malha1,temp1,lista_categoria,lista,cat_id
Select Case Request.QueryString("lista")
	Case "busca"
		Select Case Request.QueryString("campo")
			Case "todos" 
				set lista_categoria = lojaDB.Execute("SELECT id FROM categorias WHERE nome LIKE '%" & Request.QueryString("procurar") & "%'")
				If lista_categoria.EOF Then cat_id = "a" Else cat_id = lista_categoria("id") End If
				set lista_produtos = lojaDB.Execute("SELECT * FROM produtos WHERE id LIKE '%" & Request.QueryString("procurar") & "%' OR cat_id LIKE '%" & cat_id & "%' OR cat_id LIKE '%" & Request.QueryString("procurar") & "%' OR nome LIKE '%" & Request.QueryString("procurar") & "%' OR descricaop LIKE '%" & Request.QueryString("procurar") & "%' OR descricaog LIKE '%" & Request.QueryString("procurar") & "%' OR preço LIKE '%" & Request.QueryString("procurar") & "%' OR imagem LIKE '%" & Request.QueryString("procurar") & "%' OR disp LIKE '%" & Request.QueryString("procurar") & "%'")
			Case "cat_id" 
				set lista_categoria = lojaDB.Execute("SELECT id FROM categorias WHERE nome LIKE '%" & Request.QueryString("procurar") & "%'")
				If lista_categoria.EOF Then cat_id = "a" End If
				set lista_produtos = lojaDB.Execute("SELECT * FROM produtos WHERE cat_id LIKE '%" & cat_id & "%'")
			Case Else
				set lista_produtos = lojaDB.Execute("SELECT * FROM produtos WHERE " & Request.QueryString("campo") & " LIKE '%" & Request.QueryString("procurar") & "%'")
		End Select
		If lista_produtos.EOF Then
			%>
			<tr width=100%><td width=100%><h5>Nenhum resultado para esta pesquisa!</h5></td></tr>
			<%
			lista = "não"
		End If
	Case "order"
		set lista_produtos = lojaDB.Execute("SELECT * FROM produtos ORDER BY "& Request.QueryString("orderby") & " " & Request.QueryString("ord"))
		If lista_produtos.EOF Then
			%>
			<tr width=100%><td width=100%><h5>Nenhum resultado para esta pesquisa!</h5></td></tr>
			<%
			lista = "não"
		End If
	Case Else
	lista = "não"
End Select
If Not (lista = "não") Then
	%>
	<table border=0 width="100%" cellspacing="20" cellpadding="10">
	<% 
	malha1 = "sim"
	temp1 = 0 
	While not lista_produtos.EOF 
	set lista_categoria = lojaDB.Execute("SELECT nome FROM categorias WHERE id=" & lista_produtos("cat_id"))
	%>
		<tr width=100% class=<%=malha1%>><td align=center><a href="detalheprod.asp?prod_id=<%=lista_produtos("id")%>">
		<img src=./images/<%=imagem%> width="130" border=0 alt="Clique no produto para ver sua descrição"></a></td>
		<td><%
			If lista_categoria.EOF Then
				%>
				<font color=red><b>Sem Categoria</b></font>
				<% 
				Else
			End If
			%>
		<b>Departamento: <%=lista_categoria("nome")%><br><br><b><%=lista_produtos("nome")%><br><font color=red><b> por apenas R$ <%=formatnumber(lista_produtos ("preço"),2)%></td>
		
	<%  
	temp1 = temp1 + 1
		lista_produtos.MoveNext
	If malha1 = "sim" Then malha1 = "não" Else malha1 = "sim" End If
	Wend
	%>
	</table>
	<tr width=100%><td><font size=1 face=verdana color=white>aaaa<font size=2 face=verdana color=black><b>Total de produtos nesta pesquisa: <%=temp1%></td></tr>
	<%
End If
%>
</font>
</table>

Obrigado a quem poder ajudar, abraço.

 

Legionario.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um reponse.write na sua string SQL, para vermos o que esta sendo passado

response.write(stringSQL)
response.End()

Compartilhar este post


Link para o post
Compartilhar em outros sites

StringSQL="SELECT nome FROM categorias WHERE id=" & lista_produtos("cat_id"))"
response.write(stringSQL)
response.End()

assim podemos ver o que esta sendo passado de valores na sua consulta.

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.