Hola, gracias por responderme, me estuve mirando los links y he sacado buenas ideas, pero ahora me surge un problema:
El proceso es el siguiente:
Establezco un número de tags a aparecer (30 por ejemplo)
Verifico que el número introducido sea menor o igual a las palabras contenidas en la base de datos
Crear array
Cojo números aleatorios
Recorrer el array para verificar que no se ha introducido con anterioridad (si ya se ha introducido no lo almacena y coje otro al azar, hasta que encuentre uno que no se haya introducido, entonces lo almacenará y pasaremos al siguiente elemento del array)
El problema viene al comprobar que si me mete números duplicados, no debo hacer bien la verificación...
No hagais caso a comentarios del tipo "escribir físicamente el array" que es código sin terminar...
Mirad donde pone en comentario FORMA1 y FORMA2
Código:
Num=int(request.Form("text1"))
'Verificamos que Num no sea mayor que el total de registros
SQL0="Select * From Nube_Tags"
Set RS0 = Server.CreateObject("ADODB.Recordset")
RS0.Open SQL0, cn,1,1
Registros=RS0.RecordCount
if(Num>Registros) then
Num=Registros
end if
RecorridoTotal=0
'Cogemos el máximo valor de la BD
SQL1="Select max(id) as maximo From Nube_Tags"
Set RS1 = Server.CreateObject("ADODB.Recordset")
RS1.Open SQL1, cn,1,3
Maximo=RS1("maximo")
Response.Write("Máximo: "& Maximo)
'Creamos el array
Dim vector()
Redim vector(Num-1)
Response.Write("<br>Aleatorios<br><br>")
while(RecorridoTotal<Num)
'Hallamos números aleatorios
Randomize
Rand = Int((Maximo) * Rnd)
'Hacer sql para coger un número al azar
SQL2="Select * From Nube_Tags where Id="&Rand
Set RS2 = Server.CreateObject("ADODB.Recordset")
RS2.Open SQL2, cn,1,3
Incluido=0
if not RS2.EOF then
'Recorrer el array para verificar que no se ha introducido con anterioridad
'FORMA 1 <<<----ESTO!!!!
'For i=0 to ubound(vector)
'if (vector(i)=Rand) then
'Incluido=1
'end if
'next
'FORMA 2 <<<----ESTO!!!!
for each valor in vector
if (valor=Rand) then
Incluido=1
end if
next
If(Incluido=0) then
'Agregarlo al array
vector(total)=Rand
'Escribir fisicamente el array
Response.Write(Rand&"<br>")
RecorridoTotal=RecorridoTotal+1
End if
End if
wend
Gracias por vuestro tiempo