random en grid

Como indica el nombre del foro en el moveremos todos los temas de dudas que se resuelvan con exito .
Este foro no tendra permisos de escritura.
hola que tal amigos de AMSSPECIALIST espero puedan ayudarme con un problema que se me presento fíjense que tengo una lista de personas en un grid y mediante un boton quiero hacer el random de la lista de personas que se encuentran en el grid y me las muestre en el mismo grid pero ya aleatoriamente no se si me explique bien pero espero que sip.
Bueno aquí va un ejemplo basado en un script que pille en IR y me ha funcionado muchas veces , de todas formas según como tengas tu estructurado el grid habrá que adaptar el código.

El código crea una tabla desordendad a partir de los datos del grid usando Math.Random
tbforrandom ={};
for x = 1,Grid.GetRowCount("Grid1")-1 do

	repeat
		exist=false
		mathrow = Math.Random(Grid.GetRowCount("Grid1")-1);
		for i,v in pairs (tbforrandom) do
			if (Grid.GetCellText("Grid1", mathrow, 1) ==  v )or (Grid.GetCellText("Grid1", mathrow, 1) == "")then
					exist = true;
			
			end
		end
		
	until not exist;
	
tbforrandom[x]= Grid.GetCellText("Grid1", mathrow, 1);
end

for i,v in pairs (tbforrandom) do
	Grid.SetCellText("Grid1", i, 1, v, true);
end
Descarga Apz:

HIDE: ON
Hidebb Message Hidden Description
A ver que hay....
gracias le echare un vistazo al codigo 
rafaxplayer escribió:Bueno aquí va un ejemplo basado en un script que pille en IR y me ha funcionado muchas veces , de todas formas según como tengas tu estructurado el grid habrá que adaptar el código.

El código crea una tabla desordendad a partir de los datos del grid usando Math.Random
tbforrandom ={};
for x = 1,Grid.GetRowCount("Grid1")-1 do

	repeat
		exist=false
		mathrow = Math.Random(Grid.GetRowCount("Grid1")-1);
		for i,v in pairs (tbforrandom) do
			if (Grid.GetCellText("Grid1", mathrow, 1) ==  v )or (Grid.GetCellText("Grid1", mathrow, 1) == "")then
					exist = true;
			
			end
		end
		
	until not exist;
	
tbforrandom[x]= Grid.GetCellText("Grid1", mathrow, 1);
end

for i,v in pairs (tbforrandom) do
	Grid.SetCellText("Grid1", i, 1, v, true);
end
Descarga Apz:

HIDE: ON
Hidebb Message Hidden Description

hola rafaxplayer gracias por el codigo me ha servido de mucho pero se me presento un problema con el codigo que no lo puedo solucionar se que el problema esta en el bucle repeat.

si en el grid tengo datos duplicados o + de 1 campo vacio se me traba la aplicacion al ejecutar el codigo desdeel boton ya trate de querer solucionarlo pero no me sale jejeje
Bueno ya te dije que se debería adaptar a tu proyecto , aunque seguro que requiere de pocos ajustes , el tema datos duplicados si te dará problemas porque es la forma en que comprueba para re ordenar la tabla , pero aunque alguna columna se repitan los datos..debe haber alguna que sean únicos como un id o algo no?

Deberías subir el apz de tu proyecto o algo para ver de que se trata ;)
rafaxplayer escribió:Bueno ya te dije que se debería adaptar a tu proyecto , aunque seguro que requiere de pocos ajustes , el tema datos duplicados si te dará problemas porque es la forma en que comprueba para re ordenar la tabla , pero aunque alguna columna se repitan los datos..debe haber alguna que sean únicos como un id o algo no?

Deberías subir el apz de tu proyecto o algo para ver de que se trata ;)
hola rafaxplayer mira te subo mi aplicacion para que te des una idea de lo que quiero hacer e pensado en eliminar duplicados y campos vacios del grid para asi no tener el problema que te havia comentado. bueno espero y halla una solucion jeje y muchas gracias por tu ayuda

https://dl.dropbox.com/u/63389896/My%20Project.apz
Haber si esta bien asi... he eliminado lineas vacias de los textos csv(que no son csv pero bueno) ;)

HIDE: ON
Hidebb Message Hidden Description
thanks
rafaxplayer escribió:Haber si esta bien asi... he eliminado lineas vacias de los textos csv(que no son csv pero bueno) ;)

HIDE: ON
Hidebb Message Hidden Description

hola rafaxplayer lo de los archivos .csv(sin son csv lo que pasa es que en exel si solo tienen datos en una sola columna pues no pone el delimitado por comas jejeje) claro que van a ir mas columnas en los archivos .csv puesto que faltan los apellidos de lo nombres jejeje pero bueno lo de las lineas vacias las puse yo para que vieras el problema que al extraer el texto del archivo al grid genera lineas vacias tambien en el grid pero al eliminar las lineas vacias del archivo tambien hay datos duplicados en el archivo por lo cual seguira el error jeje de trabarse el programa por que el bucle queda infinito pero ya pude solucionarlo ya que el codigo que me pasastes pude hacer que un que haya datos duplicados y lineas vacias aga el Random al Grid jeje muchas gracias por tu ayuda rafaxplayer

Bueno dejo el codigo por si a alguien le sirve
local Random ={};
local Confilas = Grid.GetRowCount("Grid1") - 1;

if Confilas > 1 then

for x = 1, Confilas do
     
       Random[x] = Grid.GetCellText("Grid1",x, 1);

  end

  for x = 1, Confilas do
   
        repeat
        
            exist=false
            
            mathfilas = Math.Random(Confilas); 
       
            if Random[mathfilas] ~= nil then
           
		      Grid.SetCellText("Grid1", x, 1, Random[mathfilas], true);
		      Random[mathfilas] = nil;
		       
               exist = true;
               
            end                
           
       until  exist == true;

   end

end

]