![]() |
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; |
Hallo
du mußt Table1 ersetzen, durch das Dataset, dessen Recordanzahl du ermtteln möchtest, und das Dataset muß zu diesem Zeitpunkt geöffnet sein. Gruss Wolfgang |
Also...erstmal danke für deine Antwort.
Ich schätze, dass das Dataset meine Datasource ist, oder??? Oder meine Query-Komponente ??? Und wie stelle ich es an, dass das Dataset geöffnet ist? Habe ich das nicht schon oben stehen???
Delphi-Quellcode:
Ja, ja...Ein DB-Anfänger braucht hilfe :roll:
with qryAbfrage do begin
Close; ............... Open; if FieldByName .... |
Zitat:
In Deinem Fall also wohl eine TQuery Komponente. Du bestimmst in Deienm Source die Anzalh der Datensätze in Table1, es ist aber weder erkennbar, ob Table1 geöffnet ist, noch worauf sie sich bezieht. Ich befürchte deshalb ein wenig, daß du meinem Hinweis übernommen hast, ohne ihn zu verstehen und in deinen Kontxt zu übersetzen. Zitat:
wahrscheinlich muß es bei Dir heißen
Delphi-Quellcode:
Gruss
anzahl := qryAbfrage.recordcount
Wolfgang |
Also ich glaub, ich gebs auf. :?
Jetzt hab ich so viel rumprobiert, die ganzen Tipps beachtet und habs immernoch nocht hinbekommen. Kann mir das nicht jemand, wenns nicht so viel Arbeit macht, das mal in den oben geschriebenen Code einsetzen ??? Aber nur, wenns nicht zu viel verlangt ist. |
Zitat:
nur mal als Frage: Wenn ich das richtig sehe möchtest Du aus einer Tabelle in der z.B. deutsche Wörter stehen eines zufällig auswählen. Dieses wird dem Anwender dann angezeigt. Er soll nun eine mögliche englische Übersetzung eingeben. Dann prüfst Du ob das eingegebene Wort in der Tabelle vorhanden ist? |
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:49 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