Zufaellige Auswahl aus Datenbank

  • VB6

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Agent.

    Hallo rock,

    entweder du liest alle Fragen erst einmal in ein Array( <font color="darkred"> arr </font> )ein und ermittels dessen Größe mit <font color="darkred"> Ubound(arr) </font> und kann dann eine Zufallszahl im Rahmen von 0 bis <font color="darkred"> Ubound(arr) </font> erzeugen oder
    du erzeugst 7 Recordsets (für jede Tabelle einen) <font color="darkred"> rs(0) </font> bis <font color="darkred"> rs(6) </font> kann dann eine Zufallszahl von 0 bis 6 erzeugen, danach ermittels du die Anzahl der Datensätze ( <font color="darkred"> rs(n).RecordCount </font> ) und ermittels noch mal eine Zufallszahl dafür und bekommst so eine zufällige Frage. Um Zufallszahlen in bestimmten Grenzen zu erzeugen musst du am Anfang deines Codes einmal Randomize aufrufen und nutzt dann das:
    <pre>Public Function getRandom(lngMin As Long, lngMax As Long) As Long
    getRandom = Int(Rnd * (lngMax - lngMin + 1) + lngMin)
    End Function
    </pre>

    Gruß Markus
    Das Problem mit der zufaelligen Auswahl der Fragen ist jetzt denke ich gut geloest.

    Leider koennen jedoch 2 Fragen zufaellig im selben Test vorkommen.

    Gibt es eine einfache Moeglichkeit dies zu verhindern?

    Hier der entprechende Teil des Codes

    Public Function getrandom(lngmin As Long, lngmax As Long) As Long
    getrandom = Int(Rnd * (lngmax - lngmin + 1) + lngmin)

    End Function


    Private Sub cmdLosClick()

    'FileNm$ = InputBox$("Geben Sie den Namen für die Sicherungskopie ein.")

    prompt$ = "Input number of questions "
    'String ermitteln, nach dem das Feld ClassName durchsucht werden soll

    a = InputBox(prompt$, "Number of Questions")
    y = a
    For n = 1 To y
    x = (getrandom(1, 1704))
    Debug.Print x

    datStudent.Recordset.Index = "PrimaryKey" 'Index wählen
    datStudent.Recordset.Seek "=", x 'xSearchStr$ 'Suche starten
    datStudent.Recordset.Index = "PrimaryKey" 'Index zurücksetzen
    If datStudent.Recordset.NoMatch Then 'Falls kein Kurs gefunden wurde,
    datStudent.Recordset.MoveFirst 'den ersten Datensatz anzeigen
    End If

    Ich hoffe Ihr koennt mir dabei noch einmal helfen.
    Danke

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „rock“ ()

    du kannst doch die bisherigen Fragen irgendwie zwischenspeichern (in einem Array zum Beispiel).
    Wenn du die nächste zufällige Frage bestimmst, schaust du vorher nach, ob du diese schonmal hattest, wenn ja einfach nochmal eine andere zufallsfrage suchen...
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau