Foros del Web » Programando para Internet » ASP Clásico »

Ayuda con codigo

Estas en el tema de Ayuda con codigo en el foro de ASP Clásico en Foros del Web. hola, Tengo bd access y una tabla con los campos : -corredor (nombre del corredor)(tipo texto) -carrera (nombre de la carrera)(tipo texto) -posicion en carrera ...
  #1 (permalink)  
Antiguo 22/11/2004, 18:15
 
Fecha de Ingreso: septiembre-2003
Mensajes: 24
Antigüedad: 20 años, 8 meses
Puntos: 0
Ayuda con codigo

hola,
Tengo bd access y una tabla con los campos :

-corredor (nombre del corredor)(tipo texto)
-carrera (nombre de la carrera)(tipo texto)
-posicion en carrera (lo dicho:1,2,3...1 si quedó 1º,2 si quedó 2º,blabla)(tipo texto también)
-fecha (idem)

La cosa es que quiero mostrar las posiciones de ambos corredores cuando coincidan en el campo "carrera",es decir,que ambos corredores hayan estado en la misma carrera,mi forma de conseguirlo es mediante este humilde codigo(soy mu novato):

var1=request.form("corredor1")
var2=request.form("corredor2")
SQL1 = "SELECT carrera FROM tabla WHERE corredor LIKE '%"&var1&"%' ORDER BY Fecha"
SQL2 = "SELECT carrera FROM tabla WHERE corredor LIKE '%"&var2&"%' ORDER BY Fecha"
rs1.Open SQL1, cn, 3, 3
rs2.Open SQL2, cn, 3, 3
if rs1.Fields("carrera")=rs2.Fields("carrera") then
SQL1 = "SELECT carrera FROM tabla WHERE corredor LIKE '%"&var1&"%' ORDER BY Fecha"
else
response.write ("")
While Not rs1.EOF
While Not rs2.EOF
end if

y despues mostrar el resultado con <%=rs1.Fields("Posicion")%> y el otro corredor con <%=rs2.Fields("Posicion")%>

se que esta mal porque no sale y no se si el error está en el IF o en la forma de hacer el codigo,y a ver si me podéis decir como hacerlo porque tal vez estoy ofuscado de hacerlo así y hay una forma más sencilla de hacerlo.

Muchas gracias por todo y un saludo.
  #2 (permalink)  
Antiguo 22/11/2004, 20:28
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Bueno, no te pude contestar en tu MP, porque he estado un poco ocupado je je, pero aquí trataremos de hacerlo, primero que nada no te vayas a ofender, pero se me hace un muy mal diseño de la DB, que te puede llevar con el tiempo a serias inconsistencias, búscate en la red normalización de bases de datos, encontrarás muy buenos ejemplos, ahora, volviendo a tu pregunta, me parece que todo se puede resolver mediante una consulta...

Estás buscando:
Un corredor que sea IGUAL var1
Un corredor que sea IGUAL var2
DONDE
ambos participan en una misma carrera, y mejor si tienes una variable de carrera
carrera = trim(request.form("carrera"))
ENTONCES
Código:
strSQL = "SELECT * FROM carrera WHERE corredor ='" & var1 & "' OR corredor= '" & var2 & "' AND carrera='" & carrera & "' ORDER BY '" & fecha & "'"
Desde luego que como el campo fecha es de texto te hará extraños a la hora de ordenar...bueno, después puedes crearte un arreglo y pones el corredor1 en el indice 0 y el corredor2 en el índice 1, para después crear tu HTML.
Código:
Dim arrCorredores(1)
While not rs.EOF
  If rs("corredor") = var1 Then
     arrCorredores(0) = arrCorredores(0) & rs("posicion") & "<br>"
  ElseIf rs("corredor") = var2 Then
     arrCorredores(1) = arrCorredores(1) & rs("posicion") & "<br>"
  End If
  rs.MoveNext
Wend
Luego con este arreglo puedes imprimir:
Código:
<table border=1 cellpadding=2 cellspacing=0 align=center width=70%>
  <tr>
    <td colspan=2 width=100%>
       <%=carrera%>
    </td>
  </tr>
  <tr>
    <td align=center>
        <%=var1%>
    </td>
    <td align=center>
        <%=var2%>
    </td>
  </tr>
  <tr>
     <td align=center>
        Posición<br>
        <%=arrCorredores(0)%>
     </td>
     <td align=center>
        Posición<br>
        <%=arrCorredores(1)%>
     </td>
  </tr>
</table>

De nuevo, debido a la inconsistencia en esta tabla, este código no es ni con mucho óptimo, aunque mas o menos debería funcionar, no está probado

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway

Última edición por u_goldman; 22/11/2004 a las 20:30
  #3 (permalink)  
Antiguo 23/11/2004, 09:02
 
Fecha de Ingreso: septiembre-2003
Mensajes: 24
Antigüedad: 20 años, 8 meses
Puntos: 0
Muchisimas gracias U_Goldman,lo he hecho como dices y me salen las carreras en la que ambos coinciden pero los arrays no salen ya que ocurre que los resultados de un corredor me los añade todos es decir:

en la primera fila me aparece que quedó 6º
en la segunda fila sale 6º y 5º
en la tercera 6º,5º,y 3º

es decir que a cada fila le va añadiendo los resultados acumulándose,y lo que quiero es que cada fila tenga un resultado y que el salto de linea en la tabla no provoque que se añadan todos uno tras otro.
Al mismo tiempo no me pasa al array del segundo corredor y su columna queda vacía ,así que no tengo ni idea donde puede no funcionar

un saludo y gracias por todo.
  #4 (permalink)  
Antiguo 23/11/2004, 12:09
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Bueno, cambiemos la técnica:

Código:
temp1 = ""
temp2 = ""
While not rs.EOF
  If rs("corredor") = var1 Then
     temp1 = temp1 & rs("posicion") & "<br>"
  ElseIf rs("corredor") = var2 Then
     temp2 = temp2 & rs("posicion") & "<br>"
  End If
  rs.MoveNext
Wend
Y donde va el código para imprimir la tabla sustituye los índices del arreglo por temp1 y temp2

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 23/11/2004, 17:53
 
Fecha de Ingreso: septiembre-2003
Mensajes: 24
Antigüedad: 20 años, 8 meses
Puntos: 0
no va tampoco, ,me da el mismo error

pongo el codigo por si acaso he escrito algo mal:

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<table width="100%" border="0" bgcolor="#000000" cellspacing="1">
<tr>
<td bgcolor="#333333"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"></font><font size="1" face="Verdana, Arial, Helvetica, sans-serif"></font></td>
<td bgcolor="#FFCC00">
<div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><b><font size="2"></font><font size="2"><%=Request.Form("lala")%></font></b></font></div>
</td>
<td bgcolor="#FFCC00">
<div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><%=Request.Form("lala1")%></font></div>
</td>
</tr>
<tr bgcolor="#333333">
<td><b><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF">carrera</font></b></td>
<td><b><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF">Posicion</font></b></td>
<td><b><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF">Posicion</font></b></td>
</tr>
<%
Dim cn, rs, var1, var2, var3
ruta=Server.MapPath("mibase.mdb")
Set cn = Server.CreateObject ("ADODB.Connection")
cn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="+ruta+";"
Response.Write path
Set rs = Server.CreateObject ("ADODB.RecordSet")
var1=request.form("lala")
var2=request.form("lala1")
var3=request.form("lala2")
strSQL = "SELECT * FROM mitabla WHERE corredor='" & var1 & "' OR corredor='" & var2 & "' AND carrera='" & var3 & "' ORDER BY Fecha"
rs.Open strSQL, cn, 3, 3
temp1= ""
temp2= ""
While not rs.EOF
If rs("carrera") = var1 Then
temp1 = temp1 & rs("Posicion") & "<br>"
ElseIf rs("carrera") = var2 Then
temp2 = temp2 & rs("Posicion") & "<br>"
End If
%>
<tr bgcolor="#CCCCCC">
<td><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><%=rs.Fields("carrera")%></font></td>
<td><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><%=temp1%></font></td>
<td><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><%=temp2%></font></td>
</tr>
<% rs.MoveNext
Wend
rs.close
Set rs = Nothing
cn.Close
Set cn = Nothing
%>
</table>
</body>
</html>
  #6 (permalink)  
Antiguo 24/11/2004, 14:45
 
Fecha de Ingreso: septiembre-2003
Mensajes: 24
Antigüedad: 20 años, 8 meses
Puntos: 0
Help!?

un saludo
  #7 (permalink)  
Antiguo 27/11/2004, 07:25
 
Fecha de Ingreso: septiembre-2003
Mensajes: 24
Antigüedad: 20 años, 8 meses
Puntos: 0
alguna ayuda?alguien?algo?

un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:59.