Ir para conteúdo

POWERED BY:

Arquivado

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

Castelo

SELECT com vários keywords

Recommended Posts

Galera... to com um problema :huh: "bobo" :huh: num select.

A grande jogada no sistema é ele ler "todos" os keywords da variável. Neste casos são números, códigos.

 

No SELECT uso

ASP [/tr][tr]"select * from turmas where cod_turma LIKE '%"&turmas&"%' order by cod_turma"[/tr]

 

onde o campo turmas traz as seguintes informações 112,111,121,122,131 e assim sucessivamente como determinado no cadastro do usuário.

 

esse select irá retornar apenas as turmas que o usuário tiver acesso.

 

Quando passo apenas um "código" ele funciona sem problemas.

Porém quando passo mais de um "código" não retorna nada.

 

Alguém pode ajudar ai. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi bem seu problema mas lá vai minha ideia

 

quebra este valor num array e usa um laço FOR pra gera sua SQL

 

tipo assim

 

Codigos = SPLIT(turmas,",")

bem como você já tem os codigos nos indices do array

 

STRSQL = "SELECT * FROM turmas WHERE "FOR I = LBOUND(Codigos) TO UBOUND(Codigos)   IF I <> LBOUND(Codigos) THEN       STRSQL = STRSQL &  " AND "   END IF   STRSQL = STRSQL &  "cod_turma = " & Codigos(I)NEXTSTRSQL = STRSQL &  " ORDER BY cod_turma"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Xi :blink:

 

Objeto Response erro 'ASP 0106 : 80020005' Tipo incompatível /notas2004/notas.asp, line 0 Um tipo de dados não identificado foi encontrado
a variável "turmas" é passada por uma session("turmas")

o campo que traz os valores para a variável session("turmas") é texto e o campo cod_turma é número...

 

pode ter sido isto?

 

Fiz um teste trocando a propriedade da variável turmas para número (apagou os dados do campo).

ASP [/tr][tr]set rs=server.createobject("adodb.recordset")

 

turmas=session("turmas")

 

Codigos = SPLIT(turmas,",")

 

STRSQL = "SELECT * FROM turmas WHERE "

 

FOR I = LBOUND(Codigos) TO UBOUND(Codigos)

IF I <> LBOUND(Codigos) THEN

STRSQL = STRSQL & " AND "

END IF

STRSQL = STRSQL & "cod_turma = " & Codigos(I)

NEXT

 

STRSQL = STRSQL & " ORDER BY cod_turma"

 

rs.open STRSQL,conn

[/tr]

 

fiz um "RESPONSE.WRITE CODIGOS" e não retornou nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ve se ta pegando direito pelo menos...

 

depois do split por o seguinte

 

response.write("turmas = " & turmas & "<br>")FOR I = LBOUND(Codigos) TO UBOUND(Codigos)response.write("codigo(" & I & ") = " & Codigos(I) & "<br>")NEXT

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que testei por aqui... agora os dados estão passando corretamente.

 

Usei

ASP [/tr][tr]response.write("turmas = " & turmas & "<br>")

FOR I = LBOUND(Codigos) TO UBOUND(Codigos)

response.write("codigo(" & I & ") = " & Codigos(I) & "<br>")

NEXT

[/tr]

 

e ele me passou

 

turmas = 111,112,113,114codigo(0) = 111codigo(1) = 112codigo(2) = 113codigo(3) = 114
no banco de dados, na tabela "TURMAS" o campo "COD_TURMA" é número.

ASP [/tr][tr]STRSQL = "SELECT * FROM turmas WHERE "

FOR I = LBOUND(Codigos) TO UBOUND(Codigos)

IF I <> LBOUND(Codigos) THEN

STRSQL = STRSQL & " AND "

END IF

STRSQL = STRSQL & "cod_turma = " & Codigos(I)

NEXT

STRSQL = STRSQL & " ORDER BY cod_turma"

[/tr]

 

Usei o SELECT acima indicado pelo MARIOUFPA. Como faço pra mostrar os resultados... estou usando

<select size="1" name="TURMA"><% while not rs.eof %>            <option value="<%=rs("cod_turma")%>"><%=rs("serie")%> <%=rs("turma")%></option><%rs.movenextwend%>          </select>
mas não esta preenchendo os "select".

 

Alguma sugestão? :D :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

não está dando nenhuma mensagem de erro???

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.