AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit Radom ~ Frage
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Radom ~ Frage

Ein Thema von aerotech · begonnen am 23. Jun 2004 · letzter Beitrag vom 23. Jun 2004
Antwort Antwort
aerotech

Registriert seit: 27. Mai 2004
124 Beiträge
 
#1

Problem mit Radom ~ Frage

  Alt 23. Jun 2004, 11:06
Hi Leute, wir haben folgendes Problem, das Programm sucht sich durch Radndom eine Zufallsfrage aus und gibt diese aus. Wenn man auf den Richtigen Button geklickt hat (wenn in der TB_Tabelle eine 1 steht) dann soll automatisch eine neue Frage sowie dessen Anwortmöglichkeiten erscheinen.
Leider haben wir jetzt das Problem, wenn das Programm irgendwann die letzte Frage ganz unten in der DB ausgewählt hat, dann geht der Button nicht mehr,...sozusagen er geht nicht zurück und sucht sich ne' neue aus. Egal ob er erstmal ne' Frage 2 mal aussucht,...es soll funzen! :/

Delphi-Quellcode:
procedure TForm1.DBText1Click(Sender: TObject);
begin
if tquizfragen.FieldByName('L1').AsInteger = 1 then tquizfragen.moveby(random(tquizfragen.RecordCount))
else
showmessage('Diese Antwortmöglichkeit war leider Falsch');
end;

procedure TForm1.DBText2Click(Sender: TObject);
begin
if tquizfragen.FieldByName('L2').AsInteger = 1 then tquizfragen.moveby(random(tquizfragen.RecordCount))
else
showmessage('Diese Antwortmöglichkeit war leider Falsch');
end;

procedure TForm1.DBText3Click(Sender: TObject);
begin
if tquizfragen.FieldByName('L3').AsInteger = 1 then tquizfragen.moveby(random(tquizfragen.RecordCount))
else
showmessage('Diese Antwortmöglichkeit war leider Falsch');
end;

procedure TForm1.DBText4Click(Sender: TObject);
begin
if tquizfragen.FieldByName('L4').AsInteger = 1 then tquizfragen.moveby(random(tquizfragen.RecordCount))
else
showmessage('Diese Antwortmöglichkeit war leider Falsch');
end;
  Mit Zitat antworten Zitat
Benutzerbild von BluesKid
BluesKid

Registriert seit: 2. Sep 2003
Ort: NRW
133 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Problem mit Radom ~ Frage

  Alt 23. Jun 2004, 11:25
Moin moin

wie wärs mit:

Delphi-Quellcode:
if tquizfragen.FieldByName('L1').AsInteger = 1 then begin
  tquizfragen.first; //<-
  tquizfragen.moveby(random(tquizfragen.RecordCount));
  end else
    showmessage('Diese Antwortmöglichkeit war leider Falsch');
end;
Analog dann bei den anderen Buttons.

schönen Gruß

Sam
  Mit Zitat antworten Zitat
AlphaBug

Registriert seit: 2. Mär 2004
Ort: hinterm Transistor 246 gleich links
46 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Problem mit Radom ~ Frage

  Alt 23. Jun 2004, 11:33
Hi aerotech ,

Da der Quellcode ein "Random" enthält, hoffe ich, dass vorher (nur) 1 mal "Randomize" aufgerufen wurde (im FormCreate oder so).

Des weiteren kann "RecordCount" 0 zurückliefern, wenn die jeweilige Tabelle zu viele Felder (oder Datensätze ? ) enthält.

Aber das eigentliche Problem:

Das "MoveBy" ändert den Datensatz relativ zum aktuellen Datensatz !
Da "RecordCount" aber keine negativen Werte liefert, springt er immer weiter vorwärts, bis (irgendwann) zum letzten Datensatz.
Versuchs mal so:
Delphi-Quellcode:
procedure TForm1.DBText1Click(Sender: TObject);
begin
  if TQuizfragen.FieldByName('L1').AsInteger = 1 then
  begin
    TQuizfragen.First; // <-- Setzt das DataSet auf den 1. Datensatz zurück.
    // Jetzt kann er sich den Datensatz aussuchen ...
    TQuizfragen.MoveBy(Random(TQuizfragen.RecordCount));
  end
  else
    Showmessage('Diese Antwortmöglichkeit war leider Falsch');
end;


[edit]
war mal wieder zu langsam ...
... aber doppelt hält besser !
[/edit]
Delphi 4ever !
  Mit Zitat antworten Zitat
aerotech

Registriert seit: 27. Mai 2004
124 Beiträge
 
#4

Re: Problem mit Radom ~ Frage

  Alt 23. Jun 2004, 14:54
Danke, funzt!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz