rnd mit vorheriger Auswahl der Anzhal (Access)

Floyd, Montag, 31.08.2020, 13:09 (vor 31 Tagen)

Hallo Zusammen,

wäre schön, wenn ich mal Hilfe bekäme.

Ich möchte einen Datenbestand per ZZG / Rnd filtern.
Dabei soll eine Form!Textfeld / Kombifeld oder ähnlich für die Vorgabe der Menge der Datensätze benutzt werden.

Ist das möglich oder gibt es andere schicke Wege ?

SELECT TOP - hier variable Anzahl - TAB_STEP3.*
FROM TAB_STEP3
ORDER BY Rnd(ID);

Danke vorab !

Gruß Floyd

rnd mit vorheriger Auswahl der Anzhal

Martin Asal @, Montag, 31.08.2020, 14:48 (vor 31 Tagen) @ Floyd

Hallo Floyd,

schau mal, was im Tutorial zu Parameterabfrage steht.

Martin

rnd mit vorheriger Auswahl der Anzhal

Floyd, Mittwoch, 02.09.2020, 12:56 (vor 29 Tagen) @ Martin Asal

Hallo Martin,

da geht es aber doch darum, ein Feld aus einer Form! oder mit einer where-Klausel / Eingabeaufforderung abzufragen. Das ist mir schon klar.

In meinem Beispiel muss doch der Wert in dem SQL-String - hinter TOP - mit dem jeweils benötigten ersetzt werden. Verstehe ich da was nicht richtig ?:-(

Gruß Floyd

rnd mit vorheriger Auswahl der Anzhal

Martin Asal @, Mittwoch, 02.09.2020, 16:21 (vor 29 Tagen) @ Floyd

Hallo Floyd,

eigentlich hatte ich mir das ca wie folgt vorgestellt:

SELECT TOP [Geben sie eine Zahl ein] *
FROM TAB1
ORDER BY Rnd(ID);

Aber wie ich gerade festgestellt habe, kann man Paramterwerte wohl an dieser Stelle nicht verwenden. Sorry. Man lernt halt nie aus...

Da bleibt nur VBA. Nehmen wir an, du willst den Wert in einem Formular in ein Textfeld namens "Text1" eingeben, wäre das hier ein Ansatz:

Private Sub Text1_AfterUpdate()
Dim db As DAO.Database, rs As DAO.Recordset
 
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT Top " & Me.Text1 & " * FROM TAB1 ORDER BY Rnd(ID)")
 
rs.MoveLast
MsgBox rs.RecordCount
 
Set rs = Nothing
Set db = Nothing
End Sub


Was du sonst so mit dem Recordset machst, bleibt dir überlassen :-)


Martin

rnd mit vorheriger Auswahl der Anzhal

Floyd, Donnerstag, 03.09.2020, 11:36 (vor 28 Tagen) @ Martin Asal

hallo Martin,
ne nix sorry - bin froh, dass du mir hilfst !
Ich habe dadurch wieder ein paar andere Denk-Ansätze / Einzelheiten mitnehmen können.

Habe dann versucht, ein docmd.runsql mit Select-SQL String auszuführen. Negativ - geht mit selecet an dieser Stellen nicht. Immer wieder Merkwürdigkeiten, die unverhofft auftauchen....
Auch wieder was gelernt.

Für die Allgemeinheit - ich habe es jetzt so gelöst:

sSQL = "SELECT TOP " & Me.TXT_MAX_ANZAHL & " TAB_TEST.* FROM TAB_TEST ORDER BY Rnd(ID)"
Set qdf = CurrentDb.QueryDefs
'hier wird das SQL-Statement jeweils neu in die Abfrage geschrieben.
qdf("QUE_RANDOM_ID").SQL = sSQL
DoCmd.OpenQuery "QUE_RANDOM_ID", acViewNormal


Martin - danke nochmal.

Schönen Griß
Floyd

RSS-Feed dieser Diskussion
powered by my little forum