![]() |
AW: Datenbank- Quiz programmieren
Zitat:
|
AW: Datenbank- Quiz programmieren
Wahrscheinlich ist es noch niemanden aufgefallen:
Delphi-Quellcode:
So wird immer die zweite Antwort verarbeitet. Wenn es nur eine Gibt, macht es bumm!
Datamodule1.ADOQuery6.First;
while not Datamodule1.ADOQuery6.Eof do begin Datamodule1.ADOQuery6.Next; //Frage in "Titel" rg.Caption:= Datamodule1.ADOQuery6.Fields[0].AsString; //Antworten in Radiobuttons rg.Items.Clear; rg.Items.Add(Datamodule1.ADOQuery6.Fields[0].AsString); rg.Items.Add(Datamodule1.ADOQuery6.Fields[1].AsString); rg.Items.Add(Datamodule1.ADOQuery6.Fields[2].AsString); end; darum:
Delphi-Quellcode:
Und da auch einmal nichts zurück kommen könnte:
Datamodule1.ADOQuery6.First;
while not Datamodule1.ADOQuery6.Eof do begin //Frage in "Titel" rg.Caption:= Datamodule1.ADOQuery6.Fields[0].AsString; //Antworten in Radiobuttons rg.Items.Clear; rg.Items.Add(Datamodule1.ADOQuery6.Fields[0].AsString); rg.Items.Add(Datamodule1.ADOQuery6.Fields[1].AsString); rg.Items.Add(Datamodule1.ADOQuery6.Fields[2].AsString); Datamodule1.ADOQuery6.Next;{---- weiter zum nächsten Datensatz oder EOF} end;
Delphi-Quellcode:
Das gefällt mir besser, aber das ist Geschmackssache.
Datamodule1.ADOQuery6.First;
if Datamodule1.ADOQuery6.Eof then begin showmessage('Es wurden keine daten gefunden'); end else {---- es wurden Daten geliefert} repeat //Frage in "Titel" rg.Caption:= Datamodule1.ADOQuery6.Fields[0].AsString; //Antworten in Radiobuttons rg.Items.Clear; rg.Items.Add(Datamodule1.ADOQuery6.Fields[0].AsString); rg.Items.Add(Datamodule1.ADOQuery6.Fields[1].AsString); rg.Items.Add(Datamodule1.ADOQuery6.Fields[2].AsString); Datamodule1.ADOQuery6.Next;{---- weiter zum nächsten Datensatz oder EOF} until Datamodule1.ADOQuery6.Eof; Gruß K-H P.S. Damals als ich noch in die Schule ging gab es Lehrer, die den falschen Beruf gewählt hatten und Schüler die selbst mit einfachen logischen Zusammenhängen überfordert waren. Ich vermute heute ist es nicht wesentlich anders, darum sollten wir uns jeden Kommentar zur Berufung einer Lehrperson oder eines Schülers verkneifen. |
AW: Datenbank- Quiz programmieren
Wieso wird denn immer in einer Schleife das Dataset durchlaufen? Ich würde ja bei der ersten Frage öffnen und bei Click auf den Button dann eins weiter positionieren. Oder übersehe ich da etwas?
|
AW: Datenbank- Quiz programmieren
Jetzt verunsicherst Du mich. "normal" liefert eine Query 0..n Datensätze zurück. Bei 0 ist EOF gleich true.
bekommst Du 1..n Datensätze mußt Du mit .Next dadurch scrollen bis das EOF true ist wenn Du alle Datensätze haben willat. Aber wie läuft das mit den TDB...Komponenten? sind sind die hier im Einsatz? Ach ja .First ist direkt nach .Open nicht notwendig, da der Zeiger direkt auf dem ersten Datensatz steht. Dieser wird durch .Next erst auf den nächsten Datensatz verschoben. Gruß K-H |
AW: Datenbank- Quiz programmieren
Nach einem Open stehe ich auf dem ersten Datensatz oder auf Eof, wenn es keinen Datensatz gibt. Wozu jetzt die Schleife, ich will doch initial den ersten?
|
AW: Datenbank- Quiz programmieren
Gute Frage!
dann ist das also überflüssig und nicht nur ungeschickt. Gruß K-H |
AW: Datenbank- Quiz programmieren
Genau darauf will ich hinaus.
|
AW: Datenbank- Quiz programmieren
Moin...8-)
Zitat:
(Poppcorn hol...) ... interessante Diskussion. :stupid: @TE: Zitat:
Zitat:
|
AW: Datenbank- Quiz programmieren
hab es so programmiert, aber stehe immer noch vor dem gleichen Problem, beim click auf dem button bleibt die frage + Antworten immer die gleichen und zeigt nicht die nächsten an..
Delphi-Quellcode:
procedure TFormle.ButtonnextClick(Sender: TObject);
begin if lb.ItemIndex >=0 then begin rg.Visible:=true; Datamodule1.ADOQuery6.SQL.Clear; Datamodule1.ADOQuery6.SQL.Text:='SELECT Frage, L1, L2, L3 FROM Fragen WHERE Fach = ' +#39+lb.Items.Strings[lb.ItemIndex]+#39 + ' AND Schwierigkeit="1";'; Datamodule1.ADOQuery6.Open; if Datamodule1.ADOQuery6.Eof then begin showmessage('Keine Daten'); end else begin repeat //Frage in "Titel" rg.Caption:= Datamodule1.ADOQuery6.Fields[0].AsString; //Antworten in Radiobuttons rg.Items.Clear; rg.Items.Add(Datamodule1.ADOQuery6.Fields[1].AsString); rg.Items.Add(Datamodule1.ADOQuery6.Fields[2].AsString); rg.Items.Add(Datamodule1.ADOQuery6.Fields[3].AsString); Datamodule1.ADOQuery6.Next; until Datamodule1.AdoQuery6.Eof; end; end else begin application.MessageBox('Auswahlfehler!','Fehler'); end; |
AW: Datenbank- Quiz programmieren
Schick mal alles in einem zip-Archiv hier rüber bitte.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz