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

Registros aleatorios no repetidos

Estas en el tema de Registros aleatorios no repetidos en el foro de ASP Clásico en Foros del Web. No me enojo, rápidamente repasemos la creación de una clase, que finalmente es un objeto, el cual tiene propiedades, métodos y eventos, hasta ahora lo ...

  #31 (permalink)  
Antiguo 27/03/2005, 14:28
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
No me enojo, rápidamente repasemos la creación de una clase, que finalmente es un objeto, el cual tiene propiedades, métodos y eventos, hasta ahora lo que hemos hecho con nuestra clase, son métodos no? es decir, hemos hecho que nuestra clase ejecute ciertas cosas, pero también podemos asignarle propiedades, vamos a decir, la propiedad nombre de una clase...
Código:
Class estudiante
  Private m_nombre
      
   Public Property Get nombre()
     nombre = m_nombre
   End Property
   Public Property Let nombre(p_data)
     m_nombre = p_data
   End Property

   Public Sub GetRec(intID)
     dim, ObjConn, qry, rs, param, cmd
     Set ObjConn = Server.CreateObject("ADODB.COnnection")
     Set rs = Server.CreateObject("ADODB.Recordset")
     Set cmd = Server.CreateObject("ADODB.Command")
     qry = "SELECT nombre FROM tbl_estudiantes WHERE estudiante_id = ? "
     Set param = cmd.CreateParameters("estudiante_id", adVarchar, adParamInput, intID)
     cmd.Parameters.Append(param)
     ObjConn.Open strConnect
     cmd.ActiveConnection = ObjConn
     cmd.CommandType = adCmdText
     cmd.CommandText = qry
     rs.CursorType = 3
     rs.Open cmd
     If not rs.EOF Then
       m_nombre = rs("nombre")
     Else
       m_nombre = Null
     End If
     ObjConn.Close
     Set ObJConn = Nothing
     Set rs = Nothing
     Set param = Nothing
     Set cmd = Nothing
   End Sub
End Class
Ok, hasta aqui tenemos una clase con una propiedad y un método no es así? la propiedad nombre de la clase, y un método GetRec, que hasta ahora nos regresa solamente una propiedad de la clase, nuestra única propiedad que tenemos ok?

Supongamos pues que tenemos ya mediante cualquier proceso un ID válido para un estudiante, mediante ese ID, podremos saber todas sus propiedades, nombre, apellido, dirección, etc...llamando a nuestro método GetRec de la clase estudiante....

'Instanciamos a nuestra clase
estudiante_id = 15
Set ObjEstudiante = New Estudiante
'Llamamos a nuestro método GetRec
ObjEstudiante.GetRec(estudiante_id)
'Imprimimos el nombre del estudiante
Response.Write ObjEstudiante.Nombre

Y eso es todo, solo necesitaremos tener tantas propiedades como queramos, como ya habíamos mencionado, las propiedades tienen 2 estados, un estado interno y otro externo(m_nombre, nombre), o sea que para cada propiedad necesitas instanciarla como Private variable_interna, necesitas un Get y un Let...checa la asignación de valor a la propiedad dentro de la clase.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #32 (permalink)  
Antiguo 28/03/2005, 11:04
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 23 años, 2 meses
Puntos: 2
u_goldman, estooooooooo..... no sé como ensamblar lo que teníamos hasta ahora con el código de tu último mensaje. Te prometo que me he tirado dos horas pero no consigo nada.

Veamos, lo que yo he conseguido hacer funcionar es esto:

Código:
<!--#include file="conexion.inc" -->

<%

Class RandomRS
	'=================================================    =========
	Private Function RandomPwd ( length, repeat )

	'----------------------------------------------------------
	Dim vPass(), I, J ' our vector plus two counters
	Dim vNumbers()	  ' vector to store
	Dim n, bRep		  
	Dim vChars	  ' vector where possible chars are

	vChars = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0")

	'Vector's length
	Redim vPass(Length-1)
	'Y del vector auxiliar que guarda los caracteres ya escogidos
	Redim vNumbers(Length-1)
	I = 0
	'Starting random
	Randomize
	'Till if finds all of the chars
	do until I = length
		'Finding a numbre between 0 & the maximum number
		' from the char's vector
		n = int(rnd*Ubound(vChars))
		'If can't repeat...
		if not Repeat then
			bRep = False
			'Looking for the number among the chosen ones
			for J = 0 to UBound(vNumbers)
				if n = vNumbers(J) then
				'If it's there, we point it
					bRep = True
				end if
			next
			'If it was there, we need to repeat it
			
			if bRep then 
				I = I - 1
			else
				vNumbers(I) = n
				vPass(I) = vChars(n)	
			end if
		else
		'I don't care if it's repeated
			vNumbers(I) = n
			vPass(I) = vCaracteres(n)
		end if
	'Next Char!
	I = I + 1
	loop

	'Returning the string. Joining the array's indexes
	'Let's use the second parameter as a separator, nothing in this case -> "".
	RandomPwd = Join(vPass, "")

	End Function 'Random Pwd
	'=================================================    =========



'Funcion para ordenar arreglo, metodo de la burbuja, recibe un arreglo
	Function OrdenaArreglo(arreglo)
		Dim x, y, temp
                'Si es arreglo el valor que recibe la función
		If isArray(arreglo) Then
			'Dim temp
                        'Desde que x vale 0 hasta el máximo índice del arreglo
			For x = 0 to uBound(arreglo)
                                'Desde y = índice del arreglo en x + 1, hasta  el máximo índice del arreglo
				For y = x + 1 to uBound(arreglo)	
                                        'Si matriz en fila de x, columna 0 es mayor que fila de y, columna 0	
					If arreglo(x, 0) > arreglo(y, 0) Then
                                                'Guarda valores temporales
						temp = arreglo(x, 0)
						temp2 = arreglo(x, 1)
                                                'Intercambia los valores, se manejan dos columnas, 0 y 1, ya que estamos trabajando con una matriz
						arreglo(x, 0) = arreglo(y, 0)
						arreglo(x, 1) = arreglo(y, 1)
						arreglo(y, 0) = temp
						arreglo(y, 1) = temp2
					End If
				Next
			Next
                'Si no es arreglo, regresa un nulo
		Else
			OrdenaArreglo = Null
		End If
                'La función regresa a la matriz ordenada, de acuerdo a la columna 0
		OrdenaArreglo = arreglo
	End Function

	'Función que recibe una sentencia SQL, intenta regresar una matriz con la columna 0, un valor aleatorio, columna 1, el índice resultante de un recordset
	Public Function GetRandomRS(qry)
                'Dimensionamos las variables necesarias
		Dim ObjConn
		Dim rs 
		Dim cmd
		Dim arrRandom 
		Dim mtxRandom
		Dim j
		
                'Instanciamos los objetos necesarios, utilizaremos un comando parametrizado para abrir el recordset
		'Set ObjConn = Server.CreateObject("ADODB.Connection")
		Set rs = Server.CreateObject("ADODB.Recordset")
		Set cmd = Server.CreateObject("ADODB.Command")
		'ObjConn.Open strConnect
		cmd.ActiveConnection = Conn
		'cmd.CommandType = adCmdText
		cmd.CommandText = qry
		rs.CursorType = 3
                'Ejecutamos el comando al abrir el recordset
		rs.Open cmd
                'Si se encontraron registros entonces
		if not rs.EOF then
                         'utilizamos el método GetRows del recordset para trabajar con un arreglo
			arrRandom = rs.GetRows()
                        'Redimensionamos un arreglo y lo convertimos en la matriz, con esta matriz trabajaremos durante todo el proceso
			Redim mtxRandom(uBound(arrRandom,2), 1)
                        'Desde j =0 hasta el número de filas de nuestra matriz anterior
			For j = 0 to uBound(arrRandom,2)
                                'Matriz actual(fila de j, columna 0) = número aleatorio regresado de la función RandomPwd
				mtxRandom(j,0) = RandomPwd(4, false)
                                'Matriz actual(fila de j, columna de 1 = getrows en fila de 0, columna de j)
				mtxRandom(j,1) = arrRandom(0,j)
                        'Itera
			Next
                        'Solo por consistencia trasladamos nuestra matriz a arrRandom
			arrRandom = mtxRandom
                         'Borramos la matriz mtxRandom, no la necesitamos mas
			erase mtxRandom
                         'Envíamos la matriz a ordenarse de acuerdo al índice de 0, que es nuestro valor aleatorio
			arrRandom = OrdenaArreglo(arrRandom)
                 'Si no hay registros, regresamos un string vacio, en realidad por consistencia de la aplicación podríamos regresar un nulo
		else
			arrRandom = ""
		end if
                 'Regresamos nuestra matriz ordenada
		GetRandomRS = arrRandom
	End Function

End Class

Set ObjRandom = New RandomRS
ds = ObjRandom.GetRandomRS("SELECT * FROM yacimientos")
if isArray(ds) then
	For i = 0 to 9
		Response.Write(ds(i,0) & " | " & ds(i,1) & "<br>")
	Next
else
	response.Write("no")
end if

	%>
Ejecutando el código me da la pareja de nºs de 4 cifras y de ids aleatorios:

2576 | 41
2698 | 48
3725 | 40
4362 | 36
4956 | 44
5934 | 47
6273 | 45
7469 | 46
8265 | 43
9728 | 42

Supongo que habría que sustituir la función GetRandomRS(qry) por el sub GetRec(intID) que has puesto en el mensaje nuevo, pero no estoy del todo seguro. Lo he probado, pero no llego a ningún lado.

Por cierto, el código que he puesto funciona tanto si el select es "SELECT * FROM yacimientos" como si es "SELECT id FROM yacimientos".
  #33 (permalink)  
Antiguo 28/03/2005, 11:40
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Lo ultimo que te deje es un NUEVO metodo que tienes que hacer dentro de la clase, y lo vas a utilizar con la matriz que ahora imprimes, por cada indice llamaras a esa funcion para obtener los registros de "x" indice, recuerda utilizar el indice en matriz(x, 1)

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #34 (permalink)  
Antiguo 01/04/2005, 11:27
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 23 años, 2 meses
Puntos: 2
No consigo poner en marcha este asunto, lo reconozco, soy muy torpe, , pero estoy ya mareado de intentarlo , por favor, un empujonicto más.
  #35 (permalink)  
Antiguo 01/04/2005, 11:28
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Bueno si, pero antes de eso, cuentanos cual es el problema que has tenido?

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #36 (permalink)  
Antiguo 01/04/2005, 11:43
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 23 años, 2 meses
Puntos: 2
Pues que no sé cómo engarzar la nueva clase dentro del código que ya funcionaba.

Es decir, yo tengo el recordset ds, que funciona bien, en él está almacenado el random de ids, pero... cómo engancho esto con la nueva clase?
  #37 (permalink)  
Antiguo 01/04/2005, 12:02
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
No, no, lo que vas a hacer es crear una funcion GetRec y encapsularla dentro de la clase que ya existe...regularmente por cada campo en tu tabla tendras una propiedad nueva, y lo que hace es nada mas devolverte los valores de cada campo, la clase que puse es solo un ejemplo de como se haria el metodo o funcion...estamos?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #38 (permalink)  
Antiguo 01/04/2005, 14:52
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 23 años, 2 meses
Puntos: 2
Pero no entiendo el select de la nueva clase,
qry = "SELECT nombre FROM tbl_estudiantes WHERE estudiante_id = ? "

A qué id se refiere? Yo lo que quiero es sacar varios registros a partir de las ids que hay en el recorset ds?
  #39 (permalink)  
Antiguo 01/04/2005, 14:57
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Eso nada mas es una parametrizacion, por cada ? existe un param, es una forma mas de trabajar un recordset, pero en si quieres lo puedes omitir y pasarle la variable a tu recordset, como estas acostumbrado:

qry = "SELECT nombre FROM tbl_estudiantes WHERE estudiante_id = " & variable

Y nada mas le quitas todo el show del cmd.Parameter

Que de hecho viendo el ejemplo, esta mal

Set param = cmd.CreateParameters("estudiante_id", adVarchar, adParamInput, intID)

Si es un tipo de dato entero, deberia recibir un adInteger, pero te repito, si quieres tu puedes abrir tu rs pasandole directamente la variable a la SQL

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; 01/04/2005 a las 14:59
  #40 (permalink)  
Antiguo 02/04/2005, 02:43
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 23 años, 2 meses
Puntos: 2
A mí lo único que se me ocurre para llegar a donde yo quiero a partir del primer código y con mi actual nivel de asp (califiqúemoslo benévolamente como nivel 'intuitivo-chapucero') es lo siguiente:

almacenar en un array id() las ids aleatorias que saco de aplicar la función RAMDOM RS. Luego, con este vector yo lo único que sabría hacer es un bucle-chapuza (recuerdese mi nivel actual de asp) que repetiría el rs tantas veces como elementos tenga el vector (es decir, tantas veces como númeor de registros aleatorios queramos obtener. O sea, desde esto:


Set ObjRandom = New RandomRS
ds = ObjRandom.GetRandomRS("SELECT id FROM excavaciones")
dim id(9)
if isArray(ds) then
For i = 0 to 9
id(i) = ds(i,1)
Next
else
response.Write("no")
end if


Luego haría esto:

For i = 0 to 9

strSQL = "select * from excavaciones where id = "& id(i) &" "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, conn

Response.write rs("yacimiento") & " | " & rs("ciudad") & " | ,etc"
rs.close
set rs nothing

Next


Creo que funcionaría, todavía no lo he probado, pero sería una chapuza, ya que tendría que abrir y cerrar rs tantas veces como registros aleatorios quiera obtener.

Última edición por mrgubu; 02/04/2005 a las 02:51
  #41 (permalink)  
Antiguo 02/04/2005, 19:35
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años
Puntos: 9
A mi me funciona realmente bien... y es muy simple

No me voy a poner a leer todos los mensajes, pero yo cuando habia empezado con esto de ASP (hace cerca de treinta dias... todo un novato) lo primero que me intereso fue poder sacar registros aleatorios, y pude sacar una forma para hacer que los registros me salgan aleatorios... probrando y probando la encontre, y la sigo utilizando y me funciona realmente de maravillas, recuerdo que tenia una tabla con 30 registros al principio, le pedia un randomize de 25 y me devolvia todos absolutamente sin repetir. Viendo la enorme cantidad de lineas de codigo que ustedes han utilizado, me veo obligado a replantearme si es tan simple como lo hice yo o si funcionaria con muchos mas registros. asi que .. te paso el codigo para que lo veas y me digas si te funciona.

set conexion = Server.CreateObject("ADODB.Connection")
conexion.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("Negocios.mdb")

set RS = Server.CreateObject("ADODB.RecordSet")
RS.CursorType = 1
SQL = "SELECT * FROM Productos"
RS.Open SQL, conexion

for i=1 to 25
randomize()
valor_aux = Int(RND * 5)
randomize()
num_aleatorio = Int(RND * RS.RecordCount)

RS.MoveFirst
RS.Move(num_aleatorio)

response.write RS("Nombre")&"<br>"

next

Espero que entiendan que soy nuevo en esto, y a mi me sirve, simplemente quise ayudar. Sinceramente espero que te funcione.
  #42 (permalink)  
Antiguo 03/04/2005, 11:03
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 23 años, 2 meses
Puntos: 2
mariano, he probado tu código, pero da registros repetidos.
  #43 (permalink)  
Antiguo 05/04/2005, 10:24
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
mrgubu, lei tu MP, como te comente lo unico que tienes que hacer es crear otro metodo dentro de la clase para obtener todos los datos que necesitas, y la solucion seria muy similar a la que planteas, haz intentado hacer el metodo que te dije que hicieras?
Pon aqui el codigo que tienes.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #44 (permalink)  
Antiguo 05/04/2005, 11:59
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 23 años, 2 meses
Puntos: 2
Hola, lo que tengo hasta ahora es lo siguiente, pero ya digo que creo que habría que optimiar el código para no tener que incluir dentro del último bucle la apertura y el cierre del recordset.

Código:
<!--#include file="conexion.inc" -->

<%

Class RandomRS
	'=================================================    =========
	Private Function RandomPwd ( length, repeat )

	'----------------------------------------------------------
	Dim vPass(), I, J ' our vector plus two counters
	Dim vNumbers()	  ' vector to store
	Dim n, bRep		  
	Dim vChars	  ' vector where possible chars are

	vChars = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0")

	'Vector's length
	Redim vPass(Length-1)
	'Y del vector auxiliar que guarda los caracteres ya escogidos
	Redim vNumbers(Length-1)
	I = 0
	'Starting random
	Randomize
	'Till if finds all of the chars
	do until I = length
		'Finding a numbre between 0 & the maximum number
		' from the char's vector
		n = int(rnd*Ubound(vChars))
		'If can't repeat...
		if not Repeat then
			bRep = False
			'Looking for the number among the chosen ones
			for J = 0 to UBound(vNumbers)
				if n = vNumbers(J) then
				'If it's there, we point it
					bRep = True
				end if
			next
			'If it was there, we need to repeat it
			
			if bRep then 
				I = I - 1
			else
				vNumbers(I) = n
				vPass(I) = vChars(n)	
			end if
		else
		'I don't care if it's repeated
			vNumbers(I) = n
			vPass(I) = vCaracteres(n)
		end if
	'Next Char!
	I = I + 1
	loop

	'Returning the string. Joining the array's indexes
	'Let's use the second parameter as a separator, nothing in this case -> "".
	RandomPwd = Join(vPass, "")

	End Function 'Random Pwd
	'=================================================    =========



'Funcion para ordenar arreglo, metodo de la burbuja, recibe un arreglo
	Function OrdenaArreglo(arreglo)
		Dim x, y, temp
                'Si es arreglo el valor que recibe la función
		If isArray(arreglo) Then
			'Dim temp
                        'Desde que x vale 0 hasta el máximo índice del arreglo
			For x = 0 to uBound(arreglo)
                                'Desde y = índice del arreglo en x + 1, hasta  el máximo índice del arreglo
				For y = x + 1 to uBound(arreglo)	
                                        'Si matriz en fila de x, columna 0 es mayor que fila de y, columna 0	
					If arreglo(x, 0) > arreglo(y, 0) Then
                                                'Guarda valores temporales
						temp = arreglo(x, 0)
						temp2 = arreglo(x, 1)
                                                'Intercambia los valores, se manejan dos columnas, 0 y 1, ya que estamos trabajando con una matriz
						arreglo(x, 0) = arreglo(y, 0)
						arreglo(x, 1) = arreglo(y, 1)
						arreglo(y, 0) = temp
						arreglo(y, 1) = temp2
					End If
				Next
			Next
                'Si no es arreglo, regresa un nulo
		Else
			OrdenaArreglo = Null
		End If
                'La función regresa a la matriz ordenada, de acuerdo a la columna 0
		OrdenaArreglo = arreglo
	End Function

	'Función que recibe una sentencia SQL, intenta regresar una matriz con la columna 0, un valor aleatorio, columna 1, el índice resultante de un recordset
	Public Function GetRandomRS(qry)
                'Dimensionamos las variables necesarias
		Dim ObjConn
		Dim rs 
		Dim cmd
		Dim arrRandom 
		Dim mtxRandom
		Dim j
		
                'Instanciamos los objetos necesarios, utilizaremos un comando parametrizado para abrir el recordset
		'Set ObjConn = Server.CreateObject("ADODB.Connection")
		Set rs = Server.CreateObject("ADODB.Recordset")
		Set cmd = Server.CreateObject("ADODB.Command")
		'ObjConn.Open strConnect
		cmd.ActiveConnection = Conn
		'cmd.CommandType = adCmdText
		cmd.CommandText = qry
		rs.CursorType = 3
                'Ejecutamos el comando al abrir el recordset
		rs.Open cmd
                'Si se encontraron registros entonces
		if not rs.EOF then
                         'utilizamos el método GetRows del recordset para trabajar con un arreglo
			arrRandom = rs.GetRows()
                        'Redimensionamos un arreglo y lo convertimos en la matriz, con esta matriz trabajaremos durante todo el proceso
			Redim mtxRandom(uBound(arrRandom,2), 1)
                        'Desde j =0 hasta el número de filas de nuestra matriz anterior
			For j = 0 to uBound(arrRandom,2)
                                'Matriz actual(fila de j, columna 0) = número aleatorio regresado de la función RandomPwd
				mtxRandom(j,0) = RandomPwd(4, false)
                                'Matriz actual(fila de j, columna de 1 = getrows en fila de 0, columna de j)
				mtxRandom(j,1) = arrRandom(0,j)
                        'Itera
			Next
                        'Solo por consistencia trasladamos nuestra matriz a arrRandom
			arrRandom = mtxRandom
                         'Borramos la matriz mtxRandom, no la necesitamos mas
			erase mtxRandom
                         'Envíamos la matriz a ordenarse de acuerdo al índice de 0, que es nuestro valor aleatorio
			arrRandom = OrdenaArreglo(arrRandom)
                 'Si no hay registros, regresamos un string vacio, en realidad por consistencia de la aplicación podríamos regresar un nulo
		else
			arrRandom = ""
		end if
                 'Regresamos nuestra matriz ordenada
		GetRandomRS = arrRandom
	End Function

End Class

Set ObjRandom = New RandomRS
ds = ObjRandom.GetRandomRS("SELECT id FROM excavaciones")
dim id(9)
if isArray(ds) then
	For i = 0 to 9
		id(i) = ds(i,1)
	Next
else
	response.Write("no")
end if


'y por fin...
For i = 0 to 9

strSQL = "select * from excavaciones where id = "& id(i) &" "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, conn

Response.write rs("yacimiento") & " | " & rs("ciudad") & " | ,etc"
rs.close
set rs nothing

Next

	%>
  #45 (permalink)  
Antiguo 05/04/2005, 12:08
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Cuestion de probar...hazte un string mediante un ciclo, que te devuelva los ids separados por "," y trata de hacer un recordset mediante una sentencia SQL WHERE id IN(" & variable_id & ") pero no estoy seguro de que funcione, nunca lo he hecho asi, mas bien me parece que los ordenaria como se le da la gana, con lo cual no hay manera de escapar de las iteraciones, yo lo haria con el metodo dentro de la clase para que fuera mas limpio, pero bueno...lo importante es que funciona, a partir de esto, creo que puedes ingeniartelas para hacer el proceso mejor

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #46 (permalink)  
Antiguo 14/05/2006, 14:04
Avatar de GaboMaKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Viña del Mar - Chile
Mensajes: 323
Antigüedad: 22 años, 5 meses
Puntos: 2
Si usas SQL Server, vasta con esto como dice más arriba

Select * from tabla order by NEWID()

eso es todo...
__________________
Exito!!
:censura:
Visita Uganet.cl
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 11:52.