Ir para conteúdo

POWERED BY:

Arquivado

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

ewb

[Resolvido] Filtrando por intervalo de CODIGO e DATA

Recommended Posts

Bom dia

 

O que esta errado nesta sql ?

 

 

 

DIM cod_ini , cod_final

 

cod_ini = Request.Form("campo_cod_inicial")

cod_final = Request.Form("campo_cod_final")

 

IF cod_ini and cod_final <> "" THEN

 

DIM sql_filtro , objRS

 

 

sql_filtro = "SELECT * FROM Tabela WHERE (id >= '" & cod_ini & "') and (id <= '" & cod_final & "')"

 

 

 

 

e como faria se quisesse definir um filtro com intervalo para DATAS

 

 

Muito obrigado

 

 

 

*ps

Em algumas situacoes tive problemas para abrir o forum no meu tópico... erros....

Isto esta acontecendo cerca de uma ou duas semanas ( as vezes - instável ) ... alteraram algo?

 

-----------

 

Proxy Error

The proxy server received an invalid response from an upstream server.

The proxy server could not handle the request GET /index.php.

 

Reason: Error reading from remote server

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

"SELECT * FROM Tabela WHERE id BETWEEN #" & cod_ini & "# AND #" & cod_final  & "#"
Se der erro, poste ele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado... mas nao deu certo.... retorna erro

 

 

Fiz desta forma de deu certo:

 

mySQL ="SELECT * FROM tabela1 WHERE id BETWEEN " & var_cod_ini & " AND " & var_cod_fim & ""

 

Por que você esta usando "#" ?

 

Como filtro intervalo de datas ?

 

 

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi mal... esqueci que se tratava de número... tenta assim

"SELECT * FROM Tabela WHERE id BETWEEN " & cod_ini & " AND " & cod_final

# você utiliza para informar que é data.

"SELECT * FROM Tabela pedido WHERE data BETWEEN #"&var_cod_ini&"# and #"&var_cod_fim&"#"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Hargon, bacana deu certo. Muito obrigado.

 

Como poderia fazer uma sql onde poderia aceitar CÓDIGO e ou a DATA... juntar estes dois códigos?

 

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sql = "SELECT * FROM Tabela WHERE "

if isnumeric(cod_ini) then

sql = sql & " id BETWEEN " & cod_ini & " AND " & cod_final

else

sql = sql & " data BETWEEN #"&var_cod_ini&"# and #"&var_cod_fim&"#"

end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Hargon, muito obrigado... ficou show!!!

 

Se não for escolhido um CÓDIGO e nem uma DATA listasse TODOS os registros.

 

onde incluo -->> "Select * from tabela1 order by nome asc"

 

preciso de um ELSE... ????

 

 

sql = "SELECT * FROM Tabela1 WHERE "

if isnumeric(var_cod_ini) then
   sql = sql & " id   BETWEEN " & var_cod_ini & " AND " & var_cod_fim 
   sql = sql & " order by id asc "
else
   sql = sql & " data BETWEEN #" & var_cod_ini&"# and #" & var_cod_fim & "#" 
   sql = sql & " order by data asc "
end if

 

Muito obrigado - Namaste

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai precisar sim, e de uma readaptação também:

sql = "SELECT * FROM Tabela "
if isnumeric(cod_ini) then
	  sql = sql & " WHERE id BETWEEN " & cod_ini & " AND " & cod_final
elseif isData(cod_ini) then
	  sql = sql & " WHERE data BETWEEN #"&var_cod_ini&"# and #"&var_cod_fim&"#"
else
	  sql = sql & " order by nome asc "
end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hi there

 

Obrigado pela rapidez.

 

Uhhhh nao deu certo....

 

Se os dois campos ficarem em branco / sem preencher e clicar no botao SUBMIT deverá listar TODOS os registros...

 

 

obs: isDate()

 

Thank you

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troca isData por isDate. hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algo ainda esta errado...

 

isDate()... ok alterado...

 

 

* Se os dois campos ficarem em branco e clicar no botao SUBMIT deverá listar TODOS os registros em ordem alfabetica... mas nao acontece...

 

sql = "SELECT * FROM Tabela1 WHERE "

if isnumeric(var_cod_ini) then
   sql = sql & " id   BETWEEN " & var_cod_ini & " AND " & var_cod_fim 
   sql = sql & " order by id asc "
elseif isDate(var_cod_ini) then
   sql = sql & " data BETWEEN #" & var_cod_ini&"# and #" & var_cod_fim & "#" 
   sql = sql & " order by data asc "
else 
	sql = sql & " order by nome asc "
end if

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok... mas o que está acontecendo? Está exibindo alguma mensagem de erro? Está ordenando por data? Não exibe nenhum registo?

 

Após o IF dê um response.write sql e poste o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algo na sql... veja abaixo... obrigado

 

 

- se eu deixo os dois campos em branco e clico no botao submit quer dizer que quero listar todos os registros,

 

- se digitar um codigo inicial e um codigo final, quero que liste este intervalo ( de 1 - 10 )

 

- se digitar uma data inicial e uma data final, quero que liste este intervalo de data ( de 01/01/2008 - 10/01/200 )

 

 

 

Veja codigo completo abaixo

 

<%

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db.mdb") 

DIM var_cod_ini, var_cod_fim
var_cod_ini = Request.Form("campo_cod_ini")
var_cod_fim = Request.Form("campo_cod_fim")

IF campo_cod_ini <> "" THEN

DIM sql, objRS

sql = "SELECT * FROM Tabela1 WHERE "

if isnumeric(var_cod_ini) then
   sql = sql & " id   BETWEEN " & var_cod_ini & " AND " & var_cod_fim 
   sql = sql & " order by id asc "
elseif isDate(var_cod_ini) then
   sql = sql & " data BETWEEN #" & var_cod_ini&"# and #" & var_cod_fim & "#" 
   sql = sql & " order by data asc "
else 
	sql = sql & " order by nome asc "
	response.write sql 
end if 

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open SQL, objConn

%>

<table width="80%" cellpadding="3" cellspacing="3">
<tr>
  <td bgcolor="#003366"><span class="style5">Código</span></td>
<td bgcolor="#003366"><span class="style5">Nome</span></td>
</tr>
<% DO WHILE NOT objRS.EOF %>
<tr><td><%=objRS("id")%></td><td><%=objRS("nome")%></td></tr>
<%
objRS.MoveNext
Loop
%>
</table>
<%
ELSE
   Response.Write "Nenhum registro foi encontrado, obrigado."
   Response.Write "Voltar topo"
END IF 
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você colocou o response.write no lugar errado. É abaixo do IF

 

if isnumeric(var_cod_ini) then
sql = sql & " id BETWEEN " & var_cod_ini & " AND " & var_cod_fim
sql = sql & " order by id asc "
elseif isDate(var_cod_ini) then
sql = sql & " data BETWEEN #" & var_cod_ini&"# and #" & var_cod_fim & "#"
sql = sql & " order by data asc "
else
sql = sql & " order by nome asc "
end if

response.write sql
response.end
Posta o resultado informando os campos vazios.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce viu meu código.... esta tudo ali... mas nao esta funcionando...

 

a sql retona isto.... ---> order by nome asc

 

 

e agora ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vi seu código sim... mas ali ele está sendo montado e armazenado na variável SQL.

 

Se você der o response.write na variável SQL, vai mostrar como ele foi realmente montado, assim vai dar para entender melhor seu problema.

 

Faça isso e poste.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hargon... suadeira.... fiz algo aqui e deu certo...

 

Faça seus comentários

 

sql = "SELECT * FROM Tabela1 WHERE "

If isnumeric(var_cod_ini) Then
sql = sql & " id BETWEEN " & var_cod_ini & " AND " & var_cod_fim
sql = sql & " order by id asc "
Else
If isDate(var_cod_ini) then
sql = sql & " data BETWEEN #" & var_cod_ini&"# and #" & var_cod_fim & "#"
sql = sql & " order by data asc "
Else
If var_cod_ini = "" And var_cod_fim = "" Then
sql = " SELECT * FROM Tabela1 "
End If
End If
End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi o seu erro. Você não copiou o que postei.

http://forum.imasters.com.br/index.php...t&p=1041776

 

Veja que quando coloquei a nova condição que você pediu, eu retirei o WHERE da linha do SELECT.

 

Você só copiou a nova parte e não alterou todo o código conforme eu enviei.

http://forum.imasters.com.br/index.php...t&p=1041820

 

Mas se já resolveu, beleza.

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.