Delphi-PRAXiS
Seite 4 von 7   « Erste     234 56     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbank- Quiz programmieren (https://www.delphipraxis.net/203649-datenbank-quiz-programmieren.html)

Reedx 8. Mär 2020 16:46

AW: Datenbank- Quiz programmieren
 
Zitat:

Zitat von DieDolly (Beitrag 1459186)
Kannst du die Datenbankdatei und das Projekt mal hier anhängen?

datenbankdatei kann ich nicht anhängen, dann kommt "ungültiges Objekt"

p80286 8. Mär 2020 18:12

AW: Datenbank- Quiz programmieren
 
Wahrscheinlich ist es noch niemanden aufgefallen:
Delphi-Quellcode:
  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;
So wird immer die zweite Antwort verarbeitet. Wenn es nur eine Gibt, macht es bumm!

darum:
Delphi-Quellcode:
  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;
Und da auch einmal nichts zurück kommen könnte:
Delphi-Quellcode:
  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;
Das gefällt mir besser, aber das ist Geschmackssache.

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.

DeddyH 8. Mär 2020 18:27

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?

p80286 8. Mär 2020 19:18

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

DeddyH 8. Mär 2020 19:34

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?

p80286 8. Mär 2020 20:30

AW: Datenbank- Quiz programmieren
 
Gute Frage!
dann ist das also überflüssig und nicht nur ungeschickt.

Gruß
K-H

DeddyH 8. Mär 2020 21:09

AW: Datenbank- Quiz programmieren
 
Genau darauf will ich hinaus.

haentschman 9. Mär 2020 04:54

AW: Datenbank- Quiz programmieren
 
Moin...8-)
Zitat:

Ich würde ja bei der ersten Frage öffnen und bei Click auf den Button dann eins weiter positionieren. Oder übersehe ich da etwas?
+1 :zwinker:
(Poppcorn hol...) ... interessante Diskussion. :stupid:

@TE:
Zitat:

Aber klar, Struktogramme usw. braucht man ja nicht.
@TE: ...damit wäre das eindeutig klar, daß du ein Logik/Verständnis Problem hast. :roll:

Zitat:

datenbankdatei kann ich nicht anhängen, dann kommt "ungültiges Objekt"
...das komplette Projekt und die Datenbank in ein ZIP. :zwinker:

Reedx 9. Mär 2020 17:08

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;

DieDolly 9. Mär 2020 17:11

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.
Seite 4 von 7   « Erste     234 56     Letzte »    

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