Jump to content
Fórum Script Brasil
  • 0

Variáveis E Select...


Husscoffee
 Share

Question

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 to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649k
×
×
  • Create New...