![]() |
wie kann man einen zufälligen datensatz auswählen?
So..
Ich wille ien zufälligen Datensatz auswählen: soweit bin ich schon mal:
Delphi-Quellcode:
aber was muss an die stelle mit den fragezeichen ?
var
zufallszahl: Integer; [...] randomize; zufallszahl := random(???);//<- aber was muss hier rein?? 'select * from table1 limit ' + zufallszahl + ',1'; |
Re: wie kann man einen zufälligen datensatz auswählen?
Delphi-Quellcode:
Cursor auf dem Befehl setzten und dann mit F1 Merlin's Zauberbuch aufrufen. ;)
zufallszahl := random(???);//<- aber was muss hier rein??
|
Re: wie kann man einen zufälligen datensatz auswählen?
Zitat:
|
Re: wie kann man einen zufälligen datensatz auswählen?
Sehr schön. Und warum postest du das? Meinst du, ihn seiner steht das nicht drinne? :roll:
|
Re: wie kann man einen zufälligen datensatz auswählen?
doch ich denke schon!
da ich seine frage auch beantworten wollte und es ab und zu vorkommt das gleichzeitig von mehreren usern gepostet wird kann das wohl vorkommen, ODER? |
Re: wie kann man einen zufälligen datensatz auswählen?
ja aber ich muss doch dort die zahl der maximal vorhandenen Datensätze haben...
und wie krieg ich ie darein? |
Re: wie kann man einen zufälligen datensatz auswählen?
Zitat:
[EDIT]Aus .RecCount habe ich .RecordCount gemacht. Was ein kleiner Fehler. |
Re: wie kann man einen zufälligen datensatz auswählen?
wo find ich das denn alles?? dataset und .reccount ?
|
Re: wie kann man einen zufälligen datensatz auswählen?
Zitat:
|
Re: wie kann man einen zufälligen datensatz auswählen?
Wenn du kein DataSet, sondern eine Query benutzt, kannst du es so machen:
Delphi-Quellcode:
Nachtrag: Im Bsp ist es eine TAdoQuery.
Var
RecCount :Integer; ... Begin ... Query.SQL.Text := 'SELECT COUNT(*) RecCount' + #10 + 'FROM Tabelle'; Query.Open; RecCount := Query.FieldValues['RecCount']; |
Re: wie kann man einen zufälligen datensatz auswählen?
:wiejetzt:
ich benutze eine tabelle und paradox 7... |
Re: wie kann man einen zufälligen datensatz auswählen?
TTable, TQuery TADOQuery usw. sind alles nachfahren von TDateSet und sollten darum alle die Funktion .RecordCount haben.
Wobei die Methode von GeorgeWNewbie natürlich die beste bei einem Query ist. Es müsste aber so aussehen:
SQL-Code:
SELECT count (*) AS reccount FROM tabelle
|
Re: wie kann man einen zufälligen datensatz auswählen?
TTable habe ich noch nie benutzt... :gruebel:
Das ganze müsste aber auch mit einer BDE-Query funktionieren. In RecCount (welch' Überraschung) steht dann die Anzahle der Einträge. ( natürlich "'FROM Tabelle';" durch deinen Tabellennamen ersetzen. ) |
Re: wie kann man einen zufälligen datensatz auswählen?
musses dann so aussehen??:
Delphi-Quellcode:
var
maxi: integer; zufallszahl: integer; [...] randomize; maxi := SELECT count (*) AS reccount FROM tabelle; zufallszahl := random(maxi); select * from tabelle limit ' + zufallszahl + ',1'; |
Re: wie kann man einen zufälligen datensatz auswählen?
Wie gesagt, ich habe keine Ahnung von TTable, aber ich denke es müsste so aussehen:
Delphi-Quellcode:
...
Query.SQL.Text := 'SELECT COUNT(*) RecCount' + #10 + 'FROM Tabelle'; Query.Open; RecCount := Query.FieldValues['RecCount']; Randomize; ZufallsZahl := Random(RecCount); Table.SQL.Text := 'SELECT *' + #10 + 'FROM Tabelle' + #10 + 'LIMIT ' + ZufallsZahl + ', 1'; ... |
Re: wie kann man einen zufälligen datensatz auswählen?
ne das geht nicht..
|
Re: wie kann man einen zufälligen datensatz auswählen?
so...hab was gefunden:
Delphi-Quellcode:
ganz simpel
Anzahl := Table1.RecordCount;
|
Re: wie kann man einen zufälligen datensatz auswählen?
Delphi-Quellcode:
Hier gibts noch einen Fehler:
var
maxiEng: Integer; zufallszahl: Integer; [...] begin maxiEng := FormVocsEng.TableEng.RecordCount; zufallszahl := random(maxiEng); 'select * from FormVocsEng.TableEng limit' + IntToStr(zufallszahl) + ',1'; //<- Fehler Hier end; [...] Anweisung erforderlich, aber Ausdruck vom Typ 'String' gefunden. Wenn ich die ' weglasse weiß er nicht was select ist: Undefinierter Bezeichner: 'select' [edit]Hab herausgefunden, dass Delphi5 Prof. anscheinen kein select kennt..muss man da was downloaden?[/edit] Kann mir da jemand helfen? |
Re: wie kann man einen zufälligen datensatz auswählen?
Du kannst ihm nicht einfach ein SELECT-Statement geben.
Delphi weiß doch gar nicht, was es damit machen soll. Wenn du dir meinen Code angeschaut hast, müsste dir das aufgefallen sein:
Delphi-Quellcode:
Damit gibst du der Table1 (Typ TTable) ein SELECT-Statement. Ich bin mir aber nicht sicher, wie man es bei TTable ausführt ( :gruebel: ). Höchstwahrscheinlich mit Table1.Open oder Table1.Refresh.
Table.SQL.Text :=
'SELECT *' + #10 + 'FROM Tabelle' + #10 + 'LIMIT ' + IntToStr(ZufallsZahl) + ', 1'; |
Re: wie kann man einen zufälligen datensatz auswählen?
was ist mit TQuery??
Delphi-Quellcode:
Was muss an der markierten Stelle hinter WHERE eingefügt werden wenn man wissen will WO die Datensatznummer ist, die zufällig gewählt wurde?
Query.Active:=false;
Query.Sql.Clear; Query.Sql.Add('SELECT Deutsch FROM FormVocsEng.TableEng WHERE ?? ');//<---HIER!! Query.Active:=true; |
Re: wie kann man einen zufälligen datensatz auswählen?
Du kannst Delphi & SQL nicht vermischen.
Deine Abfrage wird von der DB verarbeitet, die hat aber keine Ahnung von den Objekten in deinem Delphi-Code. Vielleicht solltest du dich ![]() Zur Frage: In der SELECT- & in der WHERE-Clause einer Abfrage kannst du nur Spaltennamen der Tabellen verwenden, die nach FROM stehen. z.Bsp.:
SQL-Code:
SELECT Feld1
FROM Tabelle WHERE Feld2 = 1 (@all Ich weiß, das man auch noch Funktionen ,... benutzten kann, die Erklärung würde jetzt einfach zu weit gehen) Diese Tabellen müssen in der Datenbank existieren (deshalb kannst du dort kein Delphi-Objekt à la "FormVocsEng.TableEng" angeben). Da du jetzt auf TQuery umgestiegen bist versuch' es doch mal so:
Delphi-Quellcode:
Ersetze Tabelle jetzt noch mit dem Tabellenname in deiner DB und du hast deine Abfrage.
With Query Do
Begin Active := False; SQL.Text := 'SELECT *' + #10 + 'FROM Tabelle' + #10 + 'LIMIT ' + IntToStr(ZufallsZahl) + ', 1'; Open; End; |
Re: wie kann man einen zufälligen datensatz auswählen?
hallo phönix!
mach bitte keine doktorarbeit aus deinem problem ;) bleib bei deinem table und sieht dir die methode MoveBy an. mit ihrer hilfe und deiner zufälligen zahl solltest das gewünschte ergebnis rasch erreichen können. wie luckie schon früher bemerkt hat - einen ttable auf die form ziehen, ihn markieren, auf F1 drücken und du wirst schon fündig ;) mfg, stefan |
Re: wie kann man einen zufälligen datensatz auswählen?
Alternative Lösung:
SELECT * FROM 123 ORDER BY RAND() LIMIT1; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 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 by Thomas Breitkreuz