Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   randomize y firebird (https://www.clubdelphi.com/foros/showthread.php?t=67240)

bothy 07-04-2010 05:45:33

randomize y firebird
 
Hola amigos de nuevo:D
tengo un formulario con 10 label en cada label debe aver una pregunta y tres radiobutton para cada pregunta que en un radiobutton debe estar la repuesta correcta.primero que nada quisiera saber si me pueden ayudar ya que e buscado en sangoogle y no he ayado nada sobre como puedo escoger 10 preguntas aleatorias de una Bd que tengo en firebird en la Bd tengo 100 preguntas pero quisiera saber como puedo llenar mi formulario con 10 preguntas aleatorias de la bd.

duilioisola 07-04-2010 12:15:53

Utiliza Random para obtener un número de 1 a 100 (o el total de registros que tenga la base)
Luego te vas al primer registro y haces Next tantas veces como te haya devuelto Random.

Otra opción es que cada pregunta tengo un número de identificador (un ID).
Con Random eliges un número.
Buscas esa pregunta.

(Por favor, revisa tu ortogradfía antes de emitir los post, gracias)

Caro 07-04-2010 14:28:01

Hola bothy, supongo que te refieres, a la consulta que te devuelva el registro que te da Random, puedes hacerlo de dos formas, utilizando la función Skip o el operador In, para este ultimo necesitas un identificador como te dice duilioisola, el cual tendrá un numero correlativo, para ello primero debes armar la cadena con los registros que quieres:

Código Delphi [-]
Randomize;
for I:=0 to 9 do
begin
  Numero:=Random(100)+1;
  Query.Close;
  Query.Sql.Text := 'Select First 1 * From (Select Skip '+IntToStr(Numero)+' * From Tabla)';
  Query.Open;
  .....................
end;
 
//Para el segundo caso
  Identificadores := '1,20,30,50';
  Query.Close;
  Query.Sql.Text := 'Select * From tabla Where identificador in ('+Identificadores+')';
  Query.Open;

Saluditos

bothy 07-04-2010 21:41:57

Muchas gracias colegas por ayudarme . :)
caral gracias es lo que buscaba.:D

bothy 07-04-2010 21:43:56

Cita:

Empezado por bothy (Mensaje 359673)
Muchas gracias colegas por ayudarme . :)
caral gracias es lo que buscaba.:D

up me equiboque no es caral eres caro muchisimas gracias, es lo que andaba buscando..

bothy 08-04-2010 01:26:13

hola de nuevo caro muchas gracias por la ayuda de nuevo pero me podrias ayudar diciendome como quedaria el codigo si son 10 label donde se mostrarian las pregutas..

Cita:

Empezado por Caro (Mensaje 359604)

Código Delphi [-]Randomize; for I:=0 to 9 do begin Numero:=Random(100)+1; Query.Close; Query.Sql.Text := 'Select First 1 * From (Select Skip '+IntToStr(Numero)+' * From Tabla)'; Query.Open; ..................... end; //Para el segundo caso Identificadores := '1,20,30,50'; Query.Close; Query.Sql.Text := 'Select * From tabla Where identificador in ('+Identificadores+')'; Query.Open;


Saluditos


Caro 08-04-2010 16:29:43

Hola de nuevo bothy, puedes utilizar un Case:

Código Delphi [-]
Randomize;
for I:=0 to 9 do
begin
  Numero:=Random(100)+1;
  Query.Close;
  Query.Sql.Text := 'Select First 1 * From (Select Skip '+IntToStr(Numero)+' * From Tabla)';
  Query.Open;
    
  Case I of
    0 : Label1.Caption := Query.FieldByName('pregunta').AsString;
    1 : Label2.Caption := Query.FieldByName('pregunta').AsString;
    2 : Label3.Caption := Query.FieldByName('pregunta').AsString;
    3 : Label4.Caption := Query.FieldByName('pregunta').AsString;
    ...................................................................................
  end;
end;

Saluditos

bothy 09-04-2010 01:26:07

Hola de Nuevo caro:)
y muchas Gracias Por la ayuda pero tengo un problemita
e puesto el codigo como usted lo puso en el post pero al momento de generar las preguntas no sale nada. y tampoco me marca nigun error.
A qui te dejo el codigo que e puesto
Código Delphi [-]
procedure TForm1.GenerarPreguntasClick(Sender: TObject);
var i,numero:integer;
begin
    Randomize;
for I:=0 to 2 do
begin
  Numero:=Random(100)+1;
  Query1.Close ;
  Query1.SQL.Text := 'Select First 1 * From (Select Skip '+IntToStr(Numero)+' * From MiTabla)';
  Query1.Open ;


  Case I of
    0 : Label1.Caption := Query1.FieldByName('nombre').AsString;
    1 : Label2.Caption := Query1.FieldByName('nombre').AsString;
    2 : Label3.Caption := Query1.FieldByName('nombre').AsString;


  end;
end;

bothy 09-04-2010 01:33:10

hola caro
muchas gracias el problema era que las pregutas no las tenia todabia en la tabla :p
pero me di cuenta :) y ya quedo ..
muchimas gracias caro por la ayuda..:D


La franja horaria es GMT +2. Ahora son las 09:49:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi