Ver Mensaje Individual
  #10 (permalink)  
Antiguo 19/10/2010, 09:01
Avatar de verinchi
verinchi
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: arreglos en asp

Por lo que pude ver, las puertas que deseas controlar ya las tenés de antemano.

Cita:
set rsx = Server.CreateObject("ADODB.Recordset")

Sql2 = " SELECT person1euid, object1euid"
Sql2 = Sql2 & " from pub.journal "
Sql2 = Sql2 & " where "
Sql2 = Sql2 & " person1euid <>'' "
Sql2 = Sql2 & " and object1euid IN(3423, 3424, 3874, 3875, 4922, 4923, 5346, 5347) "

rsx.Open Sql2, oConn, 1, 1

dim puerta ()
Redim puerta(10)

if not rsx.eof then
Do While not rsx.EOF
puerta(0)= rsx("person1euid")
puerta(1)= rsx("object1euid")

rsx.MoveNext
'xx=rsx.RecordCount

LOOP
Con lo que no necesitas ponerlo en un arreglo para trabajar. Pero supongamos que no lo sabes y que tenés en puerta, los diferentes nros de puerta, como ser: puerta(0)=3423
puerta(1)=3424
y así sucesivamente.

Habíamos dicho también que el segundo arreglo (personas) pero por lo que veo no va a ser necesario siquiera declararlo.

entonces trabajamos así:
supongo que no se el nro de puertas que voy a usar, entonces declaro acumuladores, uno para cada puerta

Código:
for i=0 to ubound(puertas)
  dim varPuerta&puerta(i) 'esto te quedaría por ejemplo: varPuerta3423 como variable.
next
luego, recorremos el resultado para acumular
Código:
while not rsx.eof
select case rsx("object1euid")
 for i=0 to ubound(puertas)
   case puertas(i): varPuerta&puerta(i)=varPuerta&puerta(i)+1 'cuenta una persona que pasó por esa puerta
  next
 end select
'no ponemos case else, pero podrías poner alguno para caso de error.
rsx.movenext()
wend
Con esto estarías sumando una a una, cada persona que pasa por una puerta.

para mostrarlo luego, simplemente volvés a recorrer el vector de puertas, pero mostrando en cada caso el acumulador correspondiente así:

Código:
for i=0 to ubound(puertas)
  response.write(puerta"&puertas(i))&" = "&varPuerta&puertas(i)
next
De todas maneras, por lo que veo las puertas ya sabes cuales son, con lo que no necesitas trabajar con arreglos, sino simplemente declarar un acumulador para cada puerta y recorrer haciendo un select case del resultado de tu consulta. Si rsx(puerta)=la puerta que buscas, entonces acumulas en la variable que declaraste para ese acumulador. Siempre contando de a un elemento, iniciando todos en cero.

Además, traes la información de la persona y la puerta cuando la persona no te importa, porque solo querés contar cuatos pasaron por cada puerta.

Otra más fácil es, cargar las puetas en un arreglo fijo "puertas" y luego:

declaras el objeto recordset, con su conexión.
Antes de abrirlo haces un loop en puertas de la siguiente forma:

for i=0 to ubound(puertas)
rsx.source= "select count * as tot from pub.journal where person1euid <>'' and object1euid ="&puertas(i)
rsx.open()
personasp(i)=rsx("tot")
rsx.close()
next

Con esto estarías usando un objeto para contar las personas por puertas, un arreglo fijo conlas puertas y un arreglo de las mismas dimensiones con las personas
entonces, por cada puerta se ejecuta la consulta count y el resultado se almacena en personasp correspondiente.


Espero que alguna de estas te sirva, por como pusiste el caso me parece que la ultima es la mas viable.

No te preocupes por usar el mismo recordset varias veces ya que dentro del loop lo abrís, lo usas y lo volvés a cerrar, así que no fallará.

Saludos.
__________________
Why can't we not be sober?
www.partitorium.com.ar