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

Listar con EOF - Se resiste -

Estas en el tema de Listar con EOF - Se resiste - en el foro de ASP Clásico en Foros del Web. Al listar con EOF tengo un problema, al haberle dado una etiqueta anteriormente se repite la función aunque ponga que no se repita RS1 (codigo_portatil ...
  #1 (permalink)  
Antiguo 09/04/2002, 10:39
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 23 años, 1 mes
Puntos: 1
Listar con EOF - Se resiste -

Al listar con EOF tengo un problema, al haberle dado una etiqueta anteriormente se repite la función aunque ponga que no se repita RS1 (codigo_portatil = RS1("cod_portatil")):
------------------------------
<% Do While Not RS1.EOF %>
...
------------------------------
Entonces si no quiero que se repita cierto dato, que debo poner?
----------------------------------
<% Do While Not codigo_portatil.EOF %>
....
----------------------------------
esta ultima me da error de que requiere objeto.


Si alquien me puede ayudar en este tema complicado se lo agradecería.
  #2 (permalink)  
Antiguo 09/04/2002, 10:56
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 6 meses
Puntos: 5
Re: Listar con EOF - Se resiste -

codigo_portatil no es un recordset y por tanto no puedes consultar la propiedad .EOF

<div align="left">
<img src="http://www.sfn.saskatoon.sk.ca/~ad676/moon/img/kissy.gif" border="0">
</div>
  #3 (permalink)  
Antiguo 09/04/2002, 11:06
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 23 años, 1 mes
Puntos: 1
Re: Listar con EOF - Se resiste -

Elvira ayudame porfavor

Entonces si no puedo y si pongo RS1 que no se repita... pq se prepite?
---------------------------------
codigo_portatil = RS1(&quot;-cod_portatil&quot;)
&lt;% Do While Not RS1.EOF %&gt;
...(%=codigo_portatil%)
&lt;% RS1.MoveNext
Loop
%&gt;
---------------------------------


Sabrias decirme pq falla?

Muchas gracias
  #4 (permalink)  
Antiguo 09/04/2002, 11:15
 
Fecha de Ingreso: noviembre-2001
Ubicación: Groningen
Mensajes: 175
Antigüedad: 23 años, 6 meses
Puntos: 0
Re: Listar con EOF - Se resiste -

Hola,

Estas entreverando las variables

Segun veo:
tenes un recordset RS1
tenes un campo dentro del recordset que se llama cod_portatil
tenes una variable codigo_portatil a la cual le asignas el valor de RS1(&quot;cod_portatil&quot;)


de esos tres al unico que le podes preguntar si es eof es al record set
RS1, como bien escribis Do While Not RS1.EOF

PERO NO PODES ESCRIBIR ALGO ASI
Do While Not codigo_portatil.EOF
pues codigo_portatil no es un objeto que soporte esa propiedad.


cuando yo trabajo con recordset'S trabajo con la siguiente sintaxis que funciona mientras no se llegue al final del recordset.

while NOT RS.EOF

acciones a tomar

RS.MoveNext
wend



  #5 (permalink)  
Antiguo 09/04/2002, 11:16
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 6 meses
Puntos: 5
Re: Listar con EOF - Se resiste -

No entiendo a que te refieres con que se repite. ¿Te refieres a que el bucle te escribe repetidamente lo mismo?

Tienes que asignar a codigo_portatil el campo cada vez que incrementes el recordset RS1 y tú sólo lo haces una vez antes de entrar en el bucle. Escribelo así:

&lt;% Do While Not RS1.EOF
codigo_portatil = RS1(&quot;cod_portatil&quot;)
Response.Write(codigo_portatil)
RS1.MoveNext
Loop
%&gt;



¿Ves la diferencia? Ahora en cada iteración del bucle consultas el valor del campo cod_portatil del recordset de cada registro obtenido en tu consulta lo asignas a la variable codigo_portatil y lo imprimes con Response.Write por pantalla.

Te podrias ahorrar asignarlo a la variable codigo_portatil imprimiéndolo por pantalla directamente del recordset RS1. Así:


&lt;% Do While Not RS1.EOF
Response.Write(RS1(&quot;cod_portatil&quot;)
RS1.MoveNext
Loop
%&gt;





<div align="left">
<img src="http://www.sfn.saskatoon.sk.ca/~ad676/moon/img/kissy.gif" border="0">
</div>
  #6 (permalink)  
Antiguo 09/04/2002, 11:18
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 6 meses
Puntos: 5
Re: Listar con EOF - Se resiste -

Oops!! En el segundo código me falta un paréntesis. Quedaría así:


&lt;% Do While Not RS1.EOF
Response.Write(RS1(&quot;cod_portatil&quot;))
RS1.MoveNext
Loop
%&gt;


<div align="left">
<img src="http://www.sfn.saskatoon.sk.ca/~ad676/moon/img/kissy.gif" border="0">
</div>
  #7 (permalink)  
Antiguo 09/04/2002, 11:24
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 6 meses
Puntos: 5
Re: Listar con EOF - Se resiste -

Otra puntualización, si utilizas Do While corres el riesgo de que si la consulta no devuelve ningún registro te dé un error en la primera iteración del bucle.

Utiliza mejor el bucle While tal y como te han dicho en este mismo post. La diferencia entre el While y el Do While es que éste último al menos se ejecuta una vez siempre, es decir, ejecuta el cuerpo del bucle la primera vez independientemente de que se cumpla la condición del bucle o no, mientras que el While hace la comprobación de la condición nada más entrar al bucle.

<div align="left">
<img src="http://www.sfn.saskatoon.sk.ca/~ad676/moon/img/kissy.gif" border="0">
</div>
  #8 (permalink)  
Antiguo 09/04/2002, 11:26
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 23 años, 1 mes
Puntos: 1
Re: Listar con EOF - Se resiste -

Gracias a ambos por las explicaciones, ahora entendí un poco más y estoy profundizando.
Ahora diré algo.
  #9 (permalink)  
Antiguo 09/04/2002, 11:38
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 23 años, 1 mes
Puntos: 1
Re: Listar con EOF - Se resiste -

La diferencia entre el DO y no DO no le entendí del todo, auque si lo quito funciona peor porque la funcion LOOP dice que requiere un DO.

Por otra parte entendí perfectamente que tras hacer un EOF he de recordarle dentro de éste sus res... codigo_portatil = RS1(&quot;cod_portatil&quot;).

Pero la complicación continúa, se puede hacer el EOF con 2 RS distintos a la vez? yo lo hago y a la hora de listar no me lista ninguno.

espero que me hayas entendido.

Por cierto Elvira dejame tu mail aquí a ser posible del messenger.

Gracias por adelantado
  #10 (permalink)  
Antiguo 09/04/2002, 11:48
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 23 años, 1 mes
Puntos: 1
Re: Listar con EOF - Se resiste -

Tengo lo siguiente:
--------------------------------------
&lt;%
DO WHILE NOT RS1.EOF AND RS2.EOF
codigo_portatil = RS1(&quot;cod_portatil&quot;)
modelo_portatil = RS2(&quot;modelo&quot;)
%&gt;

&lt;tr align=&quot;center&quot; valign=&quot;middle&quot;&gt;
&lt;td height=&quot;40&quot;&gt;
&lt;div align=&quot;center&quot;&gt;&lt;i&gt;&lt;font face=&quot;Book Antiqua&quot;&gt;&lt;%=codigo_portatil%&gt;&lt;/font&gt;&lt;/i&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td height=&quot;40&quot;&gt;
&lt;div align=&quot;center&quot;&gt;&lt;i&gt;&lt;font face=&quot;Book Antiqua&quot;&gt;&lt;%=modelo_portatil%&gt;&lt;/font&gt;&lt;/i&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;%
RS1.MoveNext
RS2.MoveNext
Loop
%&gt;
----------------------------------------

De esta manera no lista nada

Si hago lo mismo con sólo el RS1, lista perfectamente el RS1 pero el RS2 se repite el primero continuamente hasta que acaba el listado de RS1.
Pretendo hacer los 2 listados correctamente, Me pueden ayudar?


Gracias
  #11 (permalink)  
Antiguo 09/04/2002, 11:53
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 6 meses
Puntos: 5
Re: Listar con EOF - Se resiste -

Si utilizas el WHILE en vez del DO WHILE el cierre del bucle es con WEND en vez de LOOP:


&lt;% While Not RS1.EOF
Response.Write(RS1(&quot;cod_portatil&quot;))
RS1.MoveNext
WEND
%&gt;


LA diferencia entre el DO WHILE y el WHILE es que con DO WHILE se ejecuta al menos una vez el cuerpo del bucle y con WHILE esto no tiene por que ser así. Es largo de contar, si coincidimos en messenger me extenderé más, ahora no puedo.

Mi dirección de messenger la puedes coger de mi perfil, sólo tienes que hacer clic sobre mi nick que aparece en la esquina superior izquierda de este mensaje. ;) Ahora no estoy conectada porque no funciona muy bien el messenger donde estoy pero mañana por la mañana me pillas seguro.

Respecto a consultar EOF de dos recordset distintos pues claro que lo puedes hacer. Sería algo así:


&lt;% While NOT RS1.EOF AND NOT RS2.EOF
Response.Write(RS1(&quot;cod_portatil&quot;))
RS1.MoveNext
WEND
%&gt;







<div align="left">
<img src="http://www.sfn.saskatoon.sk.ca/~ad676/moon/img/kissy.gif" border="0">
</div>
  #12 (permalink)  
Antiguo 09/04/2002, 13:11
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 23 años, 1 mes
Puntos: 1
Re: Listar con EOF - Se resiste -

No puedo acceder a tu mail del hotmail, lo siento, cuando puedas me lo pasas o me agregas &quot; [email protected] &quot;

Graciiass
  #13 (permalink)  
Antiguo 09/04/2002, 13:23
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 23 años, 5 meses
Puntos: 0
Re: Listar con EOF - Se resiste -

creo ke el problema del amigo se ha ido yendo hacia las ramas y te estas ganando la media confusion

Cita:
------------------------------
&lt;% Do While Not RS1.EOF %&gt;
...
------------------------------
Entonces si no quiero que se repita cierto dato, que debo poner?
----------------------------------
&lt;% Do While Not codigo_portatil.EOF %&gt;
....
----------------------------------
esta ultima me da error de que requiere objeto.
a ver..
los bucles (do while,while,repeat,etc)
te sirven para recorrer el registro donde tienes todo lo que rescataste de una consulta SQl..
el
Código:
  
While Not codigo_portatil.EOF
bla..bla..bla
lo que ahce es recorrer los registros y realizar alguna accion declarada por ti..
el palabras el castellano se podria traducir a:

MIENTRAS NO SEA FIN DE ARCHIVO HACER ..
....
AHORA SI NO QUIERES REPETIR DOS VECES 1 REGISTROS QUE TIENES DENTRO DEL RS LO QUE DEBES HACER ES MODIFICAR TU SQL.
EJ:
Código:
  
&quot;Select Distinct(ciudad) from tabla...&quot;
el distinct te quita todos los registros repetitivos que no quieres mostrar...

entonces despues de eso puedes usar los bucles y mostrar la salida de los registros almacenados segun la consulta..

espero te haya servido y no te haya enredado mas..

nos vemos amigo ;)
  #14 (permalink)  
Antiguo 09/04/2002, 13:26
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 23 años, 5 meses
Puntos: 0
Re: Listar con EOF - Se resiste -

fe de erratas:

sorry por esta linea

Cita:
While Not codigo_portatil.EOF
bla..bla..bla
correccion

While Not RS1.EOF
bla..bla..bla

palos de ciego :-p
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 15:40.