Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datensätze zufällig anzeigen lassen (https://www.delphipraxis.net/3917-datensaetze-zufaellig-anzeigen-lassen.html)

Flo 5. Apr 2003 20:53


Datensätze zufällig anzeigen lassen
 
Guten Abend,
ich habe eine Paradox7 Tabelle und möchte mir die Datensätze in der Tabelle zufällig anzeigen lassen. Ich habe die Vermutung, dass man irgendetwas mit ''randomize'' machen muss. Aber wie binde ich das in die Tabelle ein ???

nailor 5. Apr 2003 21:15

Kenn mich mit paradox nicht direkt aus. Aber du muss doch auf den x-ten Beitrag zugreifen können?!?

Wenn ja:

randomize ins "OnCreate"
beim anzeigen:

Delphi-Quellcode:
//rausfinden, wie viele Einträge
a := random(anzahl_der_beiträge); //a ist nun 0-(Anzahl der Beiträge minus 1)
//den a-ten Beitrag aus der DB anzeigen
hoffe, du kapierst, was ich meine

Flo 6. Apr 2003 08:19

Zitat:

Zitat von Nailor
hoffe, du kapierst, was ich meine

Sorry, irgendwie nicht. Wie finde ich denn raus, wie viele Einträge meine Tabelle hat ? :mrgreen: Und ...(anzahl_der_beiträge)... versteh ich auch noch nicht ganz. Bin in diesem Gebiet total der Anfänger.

ach: Und wo finde ich das OnCreate ??? :(

Daniel B 6. Apr 2003 08:48

Hallo,
Zitat:

Zitat von Flo
Sorry, irgendwie nicht. Wie finde ich denn raus, wie viele Einträge meine Tabelle hat ? :mrgreen: Und ...(anzahl_der_beiträge)...

Bei normalen List-Komponenten gibt es einen Count der einem sagt, wieviel Einträge in der Liste sind.
Zum Bleistift ListBox.Items.Count, oder auch mit ListView.
Da ich aber keine Datenbanken haben, musst Du da selbst nachschauen ob es sowas gibt.
Zitat:

ach: Und wo finde ich das OnCreate ??? :(
Er Meint die Prozedur OnCreate des Formulares.
Du muss erstmal rausfinden wieviele Einträge Deine Liste hat, den Wert speicherst Du z.B. in eine Integervariable.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
end;
Klicke Dein Formular einmal an, dann ist es links im Objekt Inspector ausgewählt, dort klickst Du dann auf den Reiter Eigenschaften und machst dann ein Doppelklick bei OnCreate.
Im Editorfenster legt Delphi dann von alleine die Prozedur an.
Das ist jetzt Prozedur um Deine Einträge auf klick eines Buttons auszuführen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  iTemp: Integer;
begin
  iTemp := x; //hier den Wert rausfinden und setzen, anstatt dem x
  //Und hier schriebst Du dann,
  //Zeige meine Daten mit := Random(iTemp);
end;
Hoffenlich ist das jetzt etwas klarer. ;)

Grüsse, Daniel :hi:

woki 6. Apr 2003 10:38

Anzahl der DAtensaätze in einer Table
 
Hallo,

wegen der Anzahl der Datensätze

Anzahl := Table1.RecordCount;


Gruß
Wolfgang

Flo 6. Apr 2003 17:12

Danke euch beiden.
Werde das gleich mal ausprobieren.
Melde mich dann nochmal.

Flo 6. Apr 2003 17:25

Also ich hab das irgendwie noch nicht hinbekommen.
Ich möchte dieses random in den folgenden source einbauen:
Delphi-Quellcode:
begin
with qryAbfrage do begin     //englisch vergleich mit tabelle (query komponente)
  Close;
  SQL.Text := 'Select Count(*) as ANZAHL From eng';
  SQL.Add('Where ENGLISCH = :Englisch and DEUTSCH = :Deutsch');
  ParamByName('Englisch').AsString := edit1.Text; //Parameterwerte aus1 Edit

  Open;
  if FieldByName('ANZAHL').AsInteger > 0 then
    ShowMessage('Richtig')
  else
      if MessageDlg('Leider falsch. Lösungen anzeigen?',
    mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  begin
    form5.show;
  end;;

  Close
 end;
end;
Wie stelle ich das an ???

Flo 7. Apr 2003 13:05

Hat keiner ne Ahnung ??? :cry:
Bitte helft mir. :(

Sharky 7. Apr 2003 13:24

Zitat:

Zitat von Flo
Hat keiner ne Ahnung ??? :cry:
Bitte helft mir. :(

Hai Flo,

um das zuerreichen musst Du dafür sorgen das deine Datensätze in der Tabelle ein ID-Feld haben welches fortlaufend durchnummeriert ist.

Dann ist es einfach (mal so als denkanstoss):

Delphi-Quellcode:
begin
 i := Random (AnzahlDerDatensätze);
 Query1.Close;
 Query1.Sql.Text := 'SELECT * FROM tabelle WHERE id_feld = '
 + IntToStr (i);
 Query1.Open;
end;

Flo 7. Apr 2003 15:21

Danke für deine Hilfe, aber ich glaube, dass ich zu blöd für das bin.
Ich habs mal so versucht:

Delphi-Quellcode:
var anzahl,i: integer;
begin
anzahl := table1.recordcount;
i := Random (Anzahl);
Qryabfrage.Close;
Qryabfrage.Sql.Text := 'SELECT * FROM tabelle WHERE id_feld = '
+ IntToStr (i);
Qryabfrage.Open;

with qryAbfrage do begin     //englisch vergleich mit tabelle (query komponente)
  Close;
  SQL.Text := 'Select Count(*) as ANZAHL From eng';
  SQL.Add('Where ENGLISCH = :Englisch and DEUTSCH = :Deutsch');
  ParamByName('Englisch').AsString := edit1.Text; //Parameterwerte aus1 Edit

  Open;
  if FieldByName('ANZAHL').AsInteger > 0 then
    ShowMessage('Richtig')
  else
      if MessageDlg('Leider falsch. Lösungen anzeigen?',
    mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  begin
    form5.show;
  end;;

  Close
 end;
end;
Klappt aber nicht. :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 Uhr.
Seite 1 von 2  1 2      

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