![]() |
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 ??? |
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:
hoffe, du kapierst, was ich meine
//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 |
Zitat:
ach: Und wo finde ich das OnCreate ??? :( |
Hallo,
Zitat:
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:
Du muss erstmal rausfinden wieviele Einträge Deine Liste hat, den Wert speicherst Du z.B. in eine Integervariable.
Delphi-Quellcode:
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.
procedure TForm1.FormCreate(Sender: TObject);
begin Randomize; end; 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:
Hoffenlich ist das jetzt etwas klarer. ;)
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; Grüsse, Daniel :hi: |
Anzahl der DAtensaätze in einer Table
Hallo,
wegen der Anzahl der Datensätze Anzahl := Table1.RecordCount; Gruß Wolfgang |
Danke euch beiden.
Werde das gleich mal ausprobieren. Melde mich dann nochmal. |
Also ich hab das irgendwie noch nicht hinbekommen.
Ich möchte dieses random in den folgenden source einbauen:
Delphi-Quellcode:
Wie stelle ich das an ???
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; |
Hat keiner ne Ahnung ??? :cry:
Bitte helft mir. :( |
Zitat:
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; |
Danke für deine Hilfe, aber ich glaube, dass ich zu blöd für das bin.
Ich habs mal so versucht:
Delphi-Quellcode:
Klappt aber nicht. :(
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 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