Ir para conteúdo

POWERED BY:

Arquivado

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

marcelocardoso

if + select

Recommended Posts

Amigos Salgado, Jonathan e Marioufpa e outros camaradas de plantão!

 

Como sempre me ajudaram, venho solicitar a um de vocês a gentileza de me ajudarem neste código abaixo.

<!--#include file="conexao.asp" --><HTML><HEAD><TITLE></TITLE><link href="css.css" rel="stylesheet" type="text/css" /></HEAD><BODY><br><br><br><br><br><table width="90%" height="84%" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF"><tbody>						<tr>			  <td valign="middle"><table width="98%" border="0" align="center" cellpadding="2" cellspacing="2">				<tr>				  <td><%SQL1	= "SELECT * FROM ADMIN_Tipo ORDER BY ID"SET RS1 = Server.CreateObject("ADODB.Recordset")	RS1.CursorLocation = 3	RS1.CursorType	 = 0	RS1.LockType	   = 1	RS1.Open SQL1, CXIF NOT RS1.EOF THEN %><table width="100%" border="0" cellpadding="5" cellspacing="5"><%		  RS1.MoveFirstWHILE NOT RS1.EOF%><td height="18" valign="top"><span class="FonteNoticiasTitulo2"><br><%=RS1("TipoNome")%></span><br><br><%  SET VERIFICADOR = CX.Execute("SELECT * FROM ADMIN_Arquivos WHERE CODMATRIZ='"& Session("CODMATRIZ") &"'")  IF VERIFICADOR.EOF THEN			   			   Categoria = Session("CODCAT")			   	   			IF Categoria = "10" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E10=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF								IF Categoria = "12" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E12=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF								IF Categoria = "15" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E15=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF								IF Categoria = "40" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E40=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF								IF Categoria = "41" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E41=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF								IF Categoria = "42" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E42=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF								IF Categoria = "43" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E43=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF			  ELSE		  SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE Tipo="& RS1("TipoCAT")& " AND CODMATRIZ="& Session("CODMATRIZ") &""    END IF 	  SET RS2 = Server.CreateObject("ADODB.Recordset")		  RS2.CursorLocation = 3		  RS2.CursorType	 = 0		  RS2.LockType	   = 1		  RS2.Open SQL2, CX   IF NOT RS2.EOF THEN 		  RS2.MoveFirstWHILE NOT RS2.EOF%><table width="90%" border="0" align="center" cellpadding="2" cellspacing="2">  <tr>	<td class="FonteProdutosTexto"><%=RS2("Descricao")%></td>  </tr></table><%RS2.MoveNext	WEND ELSE%><%END IF%></td></tr><%RS1.MoveNext	WEND ELSE%><%END IF%></table><%RS1.closeRS2.close%></td></tr></table></td></tr></tbody></table></BODY></HTML>
Este código está funcionando perfeitamente, pois ele serve para selecionar LINKS por categoria!

Mas só que meu problema é para resolver esta parte do IF aqui em baixo:

 

Vejam:

<%  SET VERIFICADOR = CX.Execute("SELECT * FROM ADMIN_Arquivos WHERE CODMATRIZ='"& Session("CODMATRIZ") &"'")  IF VERIFICADOR.EOF THEN			   			   Categoria = Session("CODCAT")			   	   			IF Categoria = "10" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E10=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF								IF Categoria = "12" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E12=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF								IF Categoria = "15" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E15=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF								IF Categoria = "40" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E40=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF								IF Categoria = "41" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E41=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF								IF Categoria = "42" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E42=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF								IF Categoria = "43" THEN					SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E43=TRUE AND Tipo="& RS1("TipoCAT")& ""					END IF			  ELSE		  SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE Tipo="& RS1("TipoCAT")& " AND CODMATRIZ="& Session("CODMATRIZ") &""    END IF 	  SET RS2 = Server.CreateObject("ADODB.Recordset")		  RS2.CursorLocation = 3		  RS2.CursorType	 = 0		  RS2.LockType	   = 1		  RS2.Open SQL2, CX   IF NOT RS2.EOF THEN 		  RS2.MoveFirstWHILE NOT RS2.EOF%>
Notem que tentei fazer um IF para selecionar os diversos tipos de seleção para cada campo, e portanto preciso fazer o seguinte:

 

1) PRECISO PRIMEIRAMENTE verificar se o campo CODMATRIZ na tabela ADMIN_Arquivos está vazia, se estiver ele passa para um dos IF's abaixo discriminado alí. ok (Pois até aí funciona bem, quando está vazio o codmatriz)

 

2) Mas se ele não está vazio, tenho que SELECIONAR por ele MESMO campo na tabela chamada de CODMATRIZ, como fiz no IF do VERIFICADOR. Mas só que não está funcionando este IF

 

Só funciona quando o CODMATRIZ está vazio, se está cheio ele não faz isso abaixo:

 

 

SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE Tipo="& RS1("TipoCAT")& " AND CODMATRIZ="& Session("CODMATRIZ") &""

 

 

 

Gostaria da ajuda dos senhores?

Só não levem em conta a programação do IF que fiz, só tentei fazer...

Pois sempre me quebro com IFs....

 

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim

SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE Tipo="& RS1("TipoCAT")& " AND CODMATRIZ="& cint(Session("CODMATRIZ")) &""
Dica....como você tem diversos IF, aconselho utilizar Select Case

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jonathan!

 

Está me dando este erro!

Microsoft JET Database Engine erro '80040e07' Tipo de dados imcompatível na expressão de critério. /teste/lista.asp, line 78

 

A linha 78 é esta parte aqui:

RS2.Open SQL2, CXE

 

 

se eu te mandar os 4 arquivos deste meu teste por email, poderia me ajudar????

Se puder te mandar, para qual email posso te enviar???

Compartilhar este post


Link para o post
Compartilhar em outros sites

imageinei que codmatriz fosse campo do tipo inteiro, troque para

SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE Tipo="& RS1("TipoCAT")& " AND CODMATRIZ='"& cstr(Session("CODMATRIZ")) &"'"
se possivel coloque response.write(seu sql) antes de executar para ver como está sendo montado, se for o caso coloque response.end para parar o script

Compartilhar este post


Link para o post
Compartilhar em outros sites

JOnathan!

 

Agora estou postando como ficou meu código inteiro, mas preciso que me ajude por gentileza em mais alguma coisinha.

Pois não sei como fazer para de acordo com a categoria se for 1, me mostre o campo VALIDADE, que seria data.

 

Não sei se estou certo, mas tipo assim um contador.... acho que é isso.

 

Pois tenho 3 categorias, uma chamado de licença=1, manual=2, outros=3.

 

Gostaria que se fosse licença, CODCAT=1 me mostrasse o campo do bd VALIDADE, e os demais que não fossem CODCAT=1 não mostrasse na tela junto a .

<td class="FonteProdutosTexto"><%=RS2("Descricao")%></td>

 

Tem como fazer isso??????

 

 

SEGUE MEU CODIGO FUNCIONANDO:

<!--#include file="conexao.asp" --><HTML><HEAD><TITLE></TITLE><link href="css.css" rel="stylesheet" type="text/css" /></HEAD><BODY><%SQL1	= "SELECT * FROM ADMIN_Tipo ORDER BY ID"SET RS1 = Server.CreateObject("ADODB.Recordset")	RS1.CursorLocation = 3	RS1.CursorType	 = 0	RS1.LockType	   = 1	RS1.Open SQL1, CXIF NOT RS1.EOF THEN %><table width="90%" border="0" align="center" cellpadding="5" cellspacing="5"><%		  RS1.MoveFirstWHILE NOT RS1.EOF%><td height="18" valign="top"><span class="FonteNoticiasTitulo2"><br><%=RS1("TipoNome")%></span><br><br><%  SET VERIFICADOR = CX.Execute("SELECT * FROM ADMIN_Arquivos WHERE CODMATRIZ='"& Session("CODMATRIZ") &"'")  IF VERIFICADOR.EOF THEN			   						   Categoria = Session("CODCAT")			   SELECT CASE Categoria			   					  CASE "10"							SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E10=TRUE AND Tipo="& RS1("TipoCAT")& ""												  CASE "12"							SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E12=TRUE AND Tipo="& RS1("TipoCAT")& ""												  CASE "15"							SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E15=TRUE AND Tipo="& RS1("TipoCAT")& ""												  CASE "40"							SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E40=TRUE AND Tipo="& RS1("TipoCAT")& ""												  CASE "41"							SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E41=TRUE AND Tipo="& RS1("TipoCAT")& ""												  CASE "42"							SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E42=TRUE AND Tipo="& RS1("TipoCAT")& ""												  CASE "43"							SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE E43=TRUE AND Tipo="& RS1("TipoCAT")& ""			   END SELECT			 ELSE	  SQL2 = "SELECT * FROM ADMIN_Arquivos WHERE Tipo="& RS1("TipoCAT")& " AND CODMATRIZ='"& cstr(Session("CODMATRIZ")) &"'" END IF 	  SET RS2 = Server.CreateObject("ADODB.Recordset")		  RS2.CursorLocation = 3		  RS2.CursorType	 = 0		  RS2.LockType	   = 1		  RS2.Open SQL2, CX   IF NOT RS2.EOF THEN 		  RS2.MoveFirstWHILE NOT RS2.EOF%><table width="90%" border="0" align="center" cellpadding="2" cellspacing="2"><tr><td class="FonteProdutosTexto"><%=RS2("Descricao")%></td></tr></table><%RS2.MoveNext	WEND ELSE%><%END IF%></td></tr><%RS1.MoveNext	WEND ELSE%><%END IF%></table><%RS1.closeRS2.close%></BODY></HTML>
Desde já te agradeço muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites
if cstr(rs2("CODCAT")) = "1" thenresponse.write(rs2("validade"))end if
isso fica dentro do LOOP

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.