AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank- Quiz programmieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank- Quiz programmieren

Offene Frage von "p80286"
Ein Thema von Reedx · begonnen am 8. Mär 2020 · letzter Beitrag vom 16. Mär 2020
Antwort Antwort
Seite 5 von 7   « Erste     345 67      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#41

AW: Datenbank- Quiz programmieren

  Alt 9. Mär 2020, 17:19
Bin ich irgendwie unsichtbar oder sowas? Wozu ist die Schleife gut?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Reedx

Registriert seit: 19. Feb 2020
26 Beiträge
 
Delphi 7 Enterprise
 
#42

AW: Datenbank- Quiz programmieren

  Alt 9. Mär 2020, 18:00
Bin ich irgendwie unsichtbar oder sowas? Wozu ist die Schleife gut?
welche denn? die repeat?
  Mit Zitat antworten Zitat
Reedx

Registriert seit: 19. Feb 2020
26 Beiträge
 
Delphi 7 Enterprise
 
#43

AW: Datenbank- Quiz programmieren

  Alt 9. Mär 2020, 18:03
okay, hier die Zip datei..
die Unit um die es hier geht, nennt sich "Uleicht".
beim Anschauen/Testen bitte folgendes machen:

Als User einloggen --> Daten aus Datenbank entnehmen
Dann auf User Button klicken, auf quiz starten (button) gehen, dann "Leicht" auswählen und dann dort am besten "Deutsch" auswählen (bitte Datenbank zur Hilfe nehmen (beim anschauen)). Dann auf "Nächste Frage" klicken.. hoffe das ist halbwegs verständlich ....
Angehängte Dateien
Dateityp: zip Projekt.zip (514,7 KB, 10x aufgerufen)

Geändert von Reedx ( 9. Mär 2020 um 18:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#44

AW: Datenbank- Quiz programmieren

  Alt 9. Mär 2020, 20:49
Bin ich irgendwie unsichtbar oder sowas? Wozu ist die Schleife gut?
Zitat:
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..
Ich vermute das der Buttonclick in die Schleife gehören soll
Code:
repeat
  hole Frage
until button=Abbruch
Hat da nicht jemand etwas von Struktogramm geschrieben??

Es gibt zwei Möglichkeiten.
a) Alle Fragen/Antworten aus der DB in eine Liste/Array... laden und die Fragen dann nacheinander aus der Liste laden.
b) Jeweils eine Frage aus der DB laden, wobei es dann eine Numerierung oder ähnliches der Fragen geben mßte.
(select irgendwas where Fragenr=x and .....)

So mal ganz grob skizziert.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
mmw

Registriert seit: 10. Sep 2019
Ort: OWL
324 Beiträge
 
Delphi 11 Alexandria
 
#45

AW: Datenbank- Quiz programmieren

  Alt 9. Mär 2020, 21:19
ich habs mal so versucht, im prinzip habe ich nicht viel verändert


procedure TFormle.ButtonnextClick(Sender: TObject);

function ist_leer: boolean;

begin
result := datamodule1.ADOQuery6.IsEmpty;
end;

function open_query: boolean;

begin
try
if datamodule1.ADOQuery6.Active = true then
result := true
else

begin
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.Active := true;
datamodule1.ADOQuery6.First;

first_open := true;//TFormle private deklariert

result := true;
end;

except
result := false;
end;
end;

procedure set_caption;

begin
rg.caption := '';
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);
end;


begin

if Lb.ItemIndex >= 0 then

begin

if open_query = false then exit

else

if ist_leer = true then begin
showmessage('Keine Daten');
exit
end

else

begin

rg.Visible := true;
if first_open = true then

begin
set_caption;
first_open := false;
end

else

begin
datamodule1.ADOQuery6.Next;
set_caption;
end;
end;
end

else

application.MessageBox('Auswahlfehler!', 'Fehler');

end;

keine Garantie

Gruß
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.826 Beiträge
 
Delphi 12 Athens
 
#46

AW: Datenbank- Quiz programmieren

  Alt 9. Mär 2020, 22:23
Habe mal einen teil deines Codes oben ausgelassen (der aber natürlich nötig ist) und meine Vermutung des
Problems als Kommentar unten eingefügt:


Delphi-Quellcode:
     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;
// Hier gibst du nochmal das, was du schon in die Caption geschrieben hast
// im ersten Radiobutton aus. Wirklich ADOQuery6 und nicht 7?
// Vielleicht würde es auch helfen diese Queries besser zu benennen?
// z.B. aus ADOQuery6 ein ADOQuestionQuery und aus der 7 ein ADOAnswerQuery zu machen?
// dnan kannst du die schlechter verwechseln
       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;
  
  
  end else
  begin
  application.MessageBox('Auswahlfehler!','Fehler');
  end;
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#47

AW: Datenbank- Quiz programmieren

  Alt 9. Mär 2020, 22:26
Ich hab mnir den Code da oben nicht lange angeguckt. Spätestens hier habe ich abgebrochen und ihn für mich als nicht verwendbar für Anfänger eingestuft
if datamodule1.ADOQuery6.Active = true then
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#48

AW: Datenbank- Quiz programmieren

  Alt 10. Mär 2020, 07:06
Moin...
Zitat:
Bin ich irgendwie unsichtbar oder sowas? Wozu ist die Schleife gut?
+1

Die Schleife ist Blödsinn.
Auch mmw hat das erkannt... Wie man das codetechnisch ausführt ist relativ egal...aber schön soll es sein.

Ablauf PLAN:
1. Form Show
2. Daten laden -> Query Open (der Datensatzzeiger steht dann auf dem Ersten)
3. 1. Frage anzeigen
4. 1. Frage ausfüllen
5. Button drücken für nächste Frage -> Query.Next
6. 2. Frage anzeigen
7. 2. Frage ausfüllen
8. Button drücken für nächste Frage -> Query.Next
...usw.

Geändert von haentschman (10. Mär 2020 um 07:20 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#49

AW: Datenbank- Quiz programmieren

  Alt 10. Mär 2020, 07:30
Guten Morgen,

Delphi-Quellcode:
procedure TFormle.ButtonnextClick(Sender: TObject);
var
  rb: TRadioButton;
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
          //Frage in "Titel"
         rg.Caption:= trim(Datamodule1.ADOQuery6.FieldByName('Frage').AsString);
         //Antworten in Radiobuttons
         rg.Items.Clear;
         rg.Items.Add(trim(Datamodule1.ADOQuery6.FieldByName('L1').AsString));
         rg.Items.Add(trim(Datamodule1.ADOQuery6.FieldByName('L2').AsString));
         rg.Items.Add(trim(Datamodule1.ADOQuery6.FieldByName('L3').AsString));
         Datamodule1.ADOQuery6.Next;
     end;
  end else
  begin
    application.MessageBox('Auswahlfehler!','Fehler');
  end;
so wird etwas dargestellt.
trim - weil bei jedem Feld ein #9 als erstes Zeichen steht.
Warum auch immer.
FieldByName habe ich gewählt - weil es lesbarer ist als die Indexe.

Das Problem das immer nur der erste Datensatz gelesen wird, das wurde ja schon angesprochen.

Grüße
Klaus
Klaus

Geändert von Klaus01 (10. Mär 2020 um 07:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#50

AW: Datenbank- Quiz programmieren

  Alt 10. Mär 2020, 07:39
Moin...
...ob das so gemeint ist?

Du holst dir in jedem ButtonNext Click die kompletten Daten, läufst die Schleife bis zum Ende durch...und dann?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 7   « Erste     345 67      


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 05:33 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