Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/05/2007, 04:28
tammander
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Duda con el objeto Recordset

Hola Shilfild,

como te expliqué en el post del CASE (http://www.forosdelweb.com/f15/error-sintaxis-case-484627/) El problema es que necesitas un recordset para averiguar:

1 - Cual es el registro maximo que tiene la tabla destacados.
2 - Una vez averiguado, tomar el valor del campo id_destacado de ese registro en concreto

Asi:
Código:
intra2=new ActiveXObject("ADODB.RecordSet");
intra3=new ActiveXObject("ADODB.RecordSet");
varmax="Select max(id_destacado) from destacados";
' Esto te va a abrir un rs con registro
intra2.Open(varmax,cone,adOpenStatic,adCmdTable);
if (! intra2.EOF) {
      vartabla="Select tipo_nombre from tipos where id_tipo=(select destacados_tipo from destacados where id_destacado="+ intra2.fields[0].value +")";
      intra3.Open(vartabla,cone,adOpenStatic,adCmdTable);
}
  %>
Como ves varmax es siempre una cadena porque contiene la sentencia SQL. Sin embargo, intra2 es un objeto recordset con los datos (si los hay) de esa sentencia SQL. O sea, que si hay un valor maximo en la tabla destacados se guardará en el recordset intra2.

Comprobamos que no esté vacio (!intra2.EOF) y volvemos a buscar un registro en la BD pero esta vez en la tabla tipos.


En el nuevo codigo que has puesto buscas los 4 ultimos destacados de la tabla destacado y luego buscar el campo tipo_nombre de la tabla tipos cuyo campo id_tipo de dicha tabla tipos sea igual al campo destacados_tipo de la tabla destacados cuyo campo id_destacados sea de los pertenecientes a esos 4 ultimos destacados.


Código:
<%@ language="JScript" %>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<!-- Hay que cambiar esto por el diseño de la propia página -->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../Intranet/web/intranet.css" rel="stylesheet" type="text/css">
<link href="../Intranet/web/scroll.css" rel="stylesheet" type="text/css">
</head>

<body>
<!-- #INCLUDE file="ADOJAVAS.inc" -->
<%
    cone=Server.CreateObject("ADODB.Connection");
    cone.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="+Server.MapPath("portaljoven.mdb"));
    rstIntranet=new ActiveXObject("ADODB.RecordSet");
    intra2=new ActiveXObject("ADODB.RecordSet");
    intra3=new ActiveXObject("ADODB.RecordSet");
    sentencia="Select top 4 * from destacados order by id_destacado desc";
    rstIntranet.Open(sentencia,cone,adOpenStatic,adCmdTable);    
    %>

    <table border=0>
    <%

    while (!rstIntranet.eof){
        %><tr>
            <% 
            
            vartabla="Select tipo_nombre from tipos where id_tipo=(select destacados_tipo from destacados where id_destacado='"+ rstIntranet.Fields["id_destacado"].value
 +"')";
            intra3.Open(vartabla,cone,adOpenStatic,adCmdTable); 
              
                switch(Case intra3.Fields["tipo_nombre"].Value) {
              case "comics":
                  Response.Write("hola");
                              break;
                default:
                  Response.Write("adios")                
            }
            
                    
        %>
        </tr>            
        <%
             rstIntranet.Movenext();
        
        
    }
    %>
</table>
<%rstIntranet.close();
cone.close();%>
</body>
</html>
Copia y pega y me cuentas. Por cierto quiero recordarte que JScript es case-sensitive O sea, distingue entre mayusculas y minusculas (no es lo mismo Ramon que ramon)


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -