Ir para conteúdo
Fórum Script Brasil
  • 0

Variáveis E Select...


Husscoffee

Pergunta

Olá pessoal, estou começando a desenvolver meus próprios códigos agora, estou entendendo um pouco mais sobre asp, mais dessa vez já passou dos meus conhecimento hehehehe

O problema é o seguinte: Tenho um código que recebe de 0 a 3 variáveis de um formulário, p/ cada variável ou combinações entre elas eu gostaria de fazer o select, mais por algum motivo que não sei qual é, não esta dando certo, olhen o código:

<!--#include file="conexao.asp"-->

<%

Call abre_conexao

Dim conexao,str,rs,x

cat = request.form("categoria2")

subcat = request.Form("subcat")

busca = request.Form("busca")

%>

<%

if cat = "" and subcat = "" and busca = "" then x = 0 end if

if cat = "" and subcat <> "" and busca = "" then x = 1 end if

if cat = "" and subcat = "" and busca <> "" then x = 2 end if

if cat <> "" and subcat <> "" and busca = "" then x = 3 end if

if cat <> "" and subcat = "" and busca <> "" then x = 4 end if

if cat = "" and subcat <> "" and busca <> "" then x = 5 end if

if cat <> "" and subcat = "" and busca = "" then x = 6 end if

if cat <> "" and subcat <> "" and busca <> "" then x = 7 end if

%>

<%

select case x

case 0

str="Select * from registro order by registro"

case 1

str="Select * from registro where subcat = '"&subcat&"' order by registro"

case 2

str="Select * from registro where busca like '"&busca&"' order by registro"

case 3

str="Select * from registro where cat = '"&cat&"' and subcat = '"&subcat&"' order by registro"

case 4

str="Select * from registro where cat = '"&cat&"' and busca like '%"&busca&"%' order by registro"

case 5

str="Select * from registro where subcat = '"&subcat&"' and busca like '%"&busca&"%' order by registro"

case 6

str="Select * from registro where cat = '"&cat&"' order by registro"

case 7

str="Select * from registro where cat = '"&cat&"' and subcat = '"&subcat&"' and busca like '%"&busca&"%'" & " order by registro"

case else

str="Select * from registro order by registro"

end select

set rs=conexao.execute(str)'<-- linha 45

%>

quando não tem variável nenhuma ele lista normalmento todos os itens.

O erro que aparece quando ele recebe qualquer variável é:

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)

[Microsoft][Driver ODBC para Microsoft Access] Parâmetros insuficientes. Eram esperados 1.

/Cortinaro/Site/sistema/exibir.asp, line 45

Me parece que o erro é porque não esta recebendo as variáveis mais eu dei um "response.write" e ele dá os valores postados.

Acho que estou errando no select case, nãi sei, mais será que não consigo colocar essas condiçoes diretamento no Select *???

Desde já agredeço! :)

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

voce pode fazer assim:

<%
select case x
case 0
str="order by registro"
case 1
str="where subcat = '"&subcat&"' order by registro"
case 2
str="where busca like '"&busca&"' order by registro"
case 3
str="where cat = '"&cat&"' and subcat = '"&subcat&"' order by registro"
case 4
str="where cat = '"&cat&"' and busca like '%"&busca&"%' order by registro"
case 5
str="where subcat = '"&subcat&"' and busca like '%"&busca&"%' order by registro"
case 6
str="where cat = '"&cat&"' order by registro"
case 7
str="where cat = '"&cat&"' and subcat = '"&subcat&"' and busca like '%"&busca&"%'" & " order by registro"
case else
str="order by registro"
end select

str = "Select * from registro " & str
response.write str
response.end
set rs=conexao.execute(str)
%>

veja se a SQL está recebendo os valores corretamente

Link para o comentário
Compartilhar em outros sites

  • 0
<%
select case x
case 0
str="Select * from registro order by registro"
case 1
str="where subcat = '"&subcat&"' order by registro"
case 2
str="where busca like '"&busca&"' order by registro"
case 3
str="where cat = '"&cat&"' and subcat = '"&subcat&"' order by registro"
case 4
str="where cat = '"&cat&"' and busca like '%"&busca&"%' order by registro"
case 5
str="where subcat = '"&subcat&"' and busca like '%"&busca&"%' order by registro"
case 6
str="where cat = '"&cat&"' order by registro"
case 7
str="where cat = '"&cat&"' and subcat = '"&subcat&"' and busca like '%"&busca&"%' order by registro"
case else
str="Select * from registro order by registro"
end select

set rs=conexao.execute(str)
%>

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Andreia, então, coloquei o código da mesma maneira que você postou, e do jeito que o Marcos RJ postou

também não rolou.... tentei fazer assim agora, sem o select:

<!--#include file="conexao.asp"-->

<%

Call abre_conexao

Dim conexao,str,rs,x

cat = request.form("categoria2")

subcat = request.Form("subcat")

busca = request.Form("busca")

%>

<%

if cat = "" and subcat = "" and busca = "" then str="Select * from registro order by registro" end if

if cat = "" and subcat <> "" and busca = "" then str="select * from registro where subcat = '"&subcat&"' order by registro" end if

if cat = "" and subcat = "" and busca <> "" then str="select * from registro where busca like '"&busca&"' order by registro" end if

if cat <> "" and subcat <> "" and busca = "" then str="select * from registro where cat = '"&cat&"' and subcat = '"&subcat&"' order by registro" end if

if cat <> "" and subcat = "" and busca <> "" then str="select * from registro where cat = '"&cat&"' and busca like '%"&busca&"%' order by registro" end if

if cat = "" and subcat <> "" and busca <> "" then str="select * from registro where subcat = '"&subcat&"' and busca like '%"&busca&"%' order by registro" = 5 end if

if cat <> "" and subcat = "" and busca = "" then str="select * from registro where cat = '"&cat&"' order by registro" end if

if cat <> "" and subcat <> "" and busca <> "" then str="select * from registro where cat = '"&cat&"' and subcat = '"&subcat&"' and busca like '%"&busca&"%' order by registro" end if

%>

<%

set rs=conexao.execute(str)'<-- linha24

%>

Mais ainda tá dando o mesmo erro... :(

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)

[Microsoft][Driver ODBC para Microsoft Access] Parâmetros insuficientes. Eram esperados 1.

/Cortinaro/Site/sistema/exibir.asp, line 24

Link para o comentário
Compartilhar em outros sites

  • 0

Então, verifiquei as tabelas mudei alguns nomes das tabelas, não está mais dando o erro, mais como tudo na vida não é fácil, vamos lá a ajuda de você´s está sendo ótima....

quando ele envia a "cat" que é da comparação c/ a tabela categoria, não lista nenhum registro (e tem registros cadastrados)...

Só a variável busca, está ok mas qundo tem busca + cad, já não lista nada também...(também tem registros cadastrados)

Será que isso tem a ver com a ordem das condições do "if"???

Link para o comentário
Compartilhar em outros sites

  • 0

vê se funciona:

<%
if cat = "" and subcat = "" and busca = "" then
str="Select * from registro order by registro"

Elseif cat = "" and subcat <> "" and busca = "" then
str="Select * from registro where subcat = '"&subcat&"' order by registro"

Elseif = "" and subcat = "" and busca <> "" then
str="Select * from registro where busca like '"&busca&"' order by registro"

if cat <> "" and subcat <> "" and busca = "" then
str="Select * from registro where cat = '"&cat&"' and subcat = '"&subcat&"' order by registro"

if cat <> "" and subcat = "" and busca <> "" then
str="Select * from registro where cat = '"&cat&"' and busca like '%"&busca&"%' order by registro"

if cat = "" and subcat <> "" and busca <> "" then
str="Select * from registro where subcat = '"&subcat&"' and busca like '%"&busca&"%' order by registro"

if cat <> "" and subcat = "" and busca = "" then
str="Select * from registro where cat = '"&cat&"' order by registro"

if cat <> "" and subcat <> "" and busca <> "" then
str="Select * from registro where cat = '"&cat&"' and subcat = '"&subcat&"' and busca like '%"&busca&"%' order by registro"

else
str="Select * from registro order by registro"
end if

set rs = conexao.execute(str)
%>

Link para o comentário
Compartilhar em outros sites

  • 0

Marcos RJ, tá dando o mesmo erro que descrevi acima... mesmo tendo registros p/ condição da "cat", ele não dá erro, mais também não lista os registros...:(

não sei bem de funcionamento do Select *, mais será que não tem como colocar essas condições direto no select!??

Sei lá tipo:

str="Select * from registro (if cat <> "" then response.write '" where cat = '"&cat&"'"') order by registro"

Só um exemplo tá gente hehehehe, não seria possível?

Link para o comentário
Compartilhar em outros sites

  • 0

Ow gente queria agrade quem me ajudo

consegui da um jeito aqui

if busca = "" then
    if     cat = "" then
        str="Select * from registro order by registro" 
    end if
    if cat <> "" and subcat <> "" then
        str="Select * from registro where subcat = '"&subcat&"' order by registro"
    end if
        if cat <> "" and subcat = "" then
        str="Select * from registro where categoria = '"&cat&"' order by registro"
    end if
end if    


if busca <> "" then
    if     cat = "" then
        str="Select * from registro where registro like '%"&busca&"%' order by registro" 
    end if
    if cat <> "" and subcat <> "" then
        str="Select * from registro where subcat = '"&subcat&"' and registro like '%"&busca&"%' order by registro"
    end if
        if cat <> "" and subcat = "" then
        str="Select * from registro where categoria = '"&cat&"' and registro like '%"&busca&"%' order by registro"
    end if
end if    

Vlw ai Galera

T+

Pode fechar o tópico!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...