Ir para conteúdo

POWERED BY:

Arquivado

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

RF programação

[Resolvido] Busca ASP

Recommended Posts

Amigos estou iniciando em ASP, porque preciso de um sistema de buscas. Já fiz um esquema mas sei que tem erros de sintaxe, que puder me ajudar agradeço.

Vejam o script:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

arquivo busca.asp

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

<html>
<body>

<form action="resultado.asp" method="post">
Palavra chave:
<input type="text" name="Palavra" value="" />
<br />
Data Inicial:
<input type="text" name="txtDataInicial" value="" />
<br />
Data Final:
<input type="text" name="txtDataFinal" value="" />
<br />
<input type="submit" value="Buscar" />
</form>
<hr />

</body>
</html>

 

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

arquivo resultado.asp

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

<%
Request.Form("Palavra")
If Request.Form("txtDataInicial")<>"" Then
	  dim dteInicial = Request.Form("txtDataInicial")
	  dim dteFinal = Request.Form("txtDataFinal")

DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtemp=dsntemp & "DBQ=" & server.mappath("dados/db.mdb")
sqlstmt = "select CLIENTE, FORNECEDOR, PRODUTO, ENDERECO from Tabela1 where DATA between '" +  dteInicial + "' and '" + dteFinal + "' "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sqlstmt, DSNtemp, 3, 3
totalrecs = rs.recordcount
if rs.eof = TRUE then
%>
<font face="Verdana" size="2"><b>Nenhum registro encontrado!</b></font><br>
	<br>
<% else 
Do While not rs.eof

%> 
<%
ID = rs("ID")
CLIENTE = rs("CLIENTE")
FORNECEDOR = rs("FORNECEDOR")
PRODUTO = rs("PRODUTO")
ENDERECO = rs("ENDERECO")
DATA = rs("DATA")
%>
<b>Cliente:</b> <%=CLIENTE%>
<br>
<b>Fornecedor:</b> <%=FORNECEDOR%>
<br>
<b>Produto:</b> <%=PRODUTO%>
<br>
<b>Endereço:</b> <%=ENDERECO%>
<br>
<b>Data:</b> <%=DATA%>
<br>

<% 
rs.movenext
loop
end if 
%>
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

 

Obs: Já tenho minha tabela criada com os respectivos

campos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retire os DIM, ele só é usado para declarar as variáveis, quando se atribui valores ele não é permitido. Uma dica, quando for concatenar em string use o & no lugar do +

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço pela ajuda...

O "Request.form("Palavra") está certo no inicio do código?

Acho que o erro pode estar alí.

 

Obs: tirei o dim e troquei os + pelo $

mas ainda dá erro:

 

# Tipo de erro:

Erro de compilação do Microsoft VBScript (0x800A03F6)

'End' esperado

/protocolo/teste/resultado.asp, line 42

 

# Tipo de navegador:

Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1

 

# Página:

POST 67 bytes to /protocolo/teste/resultado.asp

 

# POST Data:

Palavra=h&txtDataInicial=01%2F02%2F2008&txtDataFinal=03%2F05%2F2008

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estava faltando um END IF... tenta o código abaixo.

<%
Dim Palavra
Palavra = Request.Form("Palavra")
If Request.Form("txtDataInicial")<>"" Then
	  dim dteInicial 
	  dteInicial = Request.Form("txtDataInicial")
	  dim dteFinal 
	  dteFinal = Request.Form("txtDataFinal")

DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtemp=dsntemp & "DBQ=" & server.mappath("dados/db.mdb")
sqlstmt = "select CLIENTE, FORNECEDOR, PRODUTO, ENDERECO from Tabela1 where DATA between '" +  dteInicial + "' and '" + dteFinal + "' "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sqlstmt, DSNtemp, 3, 3
totalrecs = rs.recordcount
if Not rs.eof then
%>
<font face="Verdana" size="2"><b>Nenhum registro encontrado!</b></font><br>
	<br>
<% else
Do While not rs.eof

%>
<%
ID = rs("ID")
CLIENTE = rs("CLIENTE")
FORNECEDOR = rs("FORNECEDOR")
PRODUTO = rs("PRODUTO")
ENDERECO = rs("ENDERECO")
DATA = rs("DATA")
%>
<b>Cliente:</b> <%=CLIENTE%>
<br>
<b>Fornecedor:</b> <%=FORNECEDOR%>
<br>
<b>Produto:</b> <%=PRODUTO%>
<br>
<b>Endereço:</b> <%=ENDERECO%>
<br>
<b>Data:</b> <%=DATA%>
<br>

<%
rs.movenext
loop
end if
End if
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho sim...

Meu Banco de dados está assim:

CLIENTE | FORNECEDOR | PRODUTO | ENDERECO | DATA | ID

João Fornecedor1 xxxx R.Laranjeiras 01/01/2008 01

Paulo Fornecedor2 xxxx R.Verde 02/05/2008 02

Maria Fornecedor3 xxxx R.Verde 03/12/2008 03

Compartilhar este post


Link para o post
Compartilhar em outros sites
sqlstmt = "select CLIENTE, FORNECEDOR, PRODUTO, ENDERECO from Tabela1 where DATA between #" +  dteInicial + "# and #" + dteFinal + "# "

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em branco?

 

Abaixo do Do While not rs.eof coloque:

Response.write "Registro encontrado<br />"

 

Poste o resultado. Se entrar no loop deve aparecer essa mensagem quantas vezes ele entrar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continua em branco o resultado... :no:

 

vou postar o código completo:

<%Dim PalavraPalavra = Request.Form("Palavra")If Request.Form("txtDataInicial")<>"" Then	  dim dteInicial 	  dteInicial = Request.Form("txtDataInicial")	  dim dteFinal 	  dteFinal = Request.Form("txtDataFinal")DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "DSNtemp=dsntemp & "DBQ=" & server.mappath("dados/db.mdb")sqlstmt = "select CLIENTE, FORNECEDOR, PRODUTO, ENDERECO from Tabela1 where DATA between #" +  dteInicial + "# and #" + dteFinal + "# "Set rs = Server.CreateObject("ADODB.Recordset")rs.Open sqlstmt, DSNtemp, 3, 3totalrecs = rs.recordcountif Not rs.eof then%><font face="Verdana" size="2"><b>Nenhum registro encontrado!</b></font><br>	<br><% elseDo While not rs.eofResponse.write "Registro encontrado<br/>"%><%ID = rs("ID")CLIENTE = rs("CLIENTE")FORNECEDOR = rs("FORNECEDOR")PRODUTO = rs("PRODUTO")ENDERECO = rs("ENDERECO")DATA = rs("DATA")%><b>Cliente:</b> <%=CLIENTE%><br><b>Fornecedor:</b> <%=FORNECEDOR%><br><b>Produto:</b> <%=PRODUTO%><br><b>Endereço:</b> <%=ENDERECO%><br><b>Data:</b> <%=DATA%><br><%rs.movenextloopend ifEnd if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente não está entrando aqui:

If Request.Form("txtDataInicial")<>"" Then

 

 

Substitua o último END IF por:

Else
	 Response.Write "Data inválida"
End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está dando "data inválida" agora...

Mas a busca ainda dá erro:

 

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe na data na expressão de consulta 'DATA between #01/01//2008# and #01/08/2008#'.

/protocolo/teste/resultado.asp, line 16

 

 

Tipo de navegador:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; FDM)

 

Página:

POST 69 bytes to /protocolo/teste/resultado.asp

 

POST Data:

Palavra=&txtDataInicial=01%2F01%2F%2F2008&txtDataFinal=01%2F08%2F2008

Compartilhar este post


Link para o post
Compartilhar em outros sites
Está dando "data inválida" agora...

Mas a busca ainda dá erro:

 

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe na data na expressão de consulta 'DATA between #01/01//2008# and #01/08/2008#'.

/protocolo/teste/resultado.asp, line 16

 

 

Tipo de navegador:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; FDM)

 

Página:

POST 69 bytes to /protocolo/teste/resultado.asp

 

POST Data:

Palavra=&txtDataInicial=01%2F01%2F%2F2008&txtDataFinal=01%2F08%2F2008

A resposta com o erro já está na própria mensagem de erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Salgado, tinha uma "/" a mais na consulta... mas já tentei de tudo que é jeito.

Está assim: Se eu pesquisar sem adicionar dados, me retorna como data inválida.. se eu preencher corretamente os campos, me retorna uma página em branco...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Página em branco ou "data inválida" ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No inicio do código coloque:

response.write Request.Form("txtDataInicial")
response.end
E poste o resultado.

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.