collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 53
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 2
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13976
  • stats Beiträge insgesamt: 66571
  • stats Themen insgesamt: 8973
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Schleife mit Zufallsgenerator  (Gelesen 172 mal)

Offline Lemmy84

  • Newbie
  • Beiträge: 10
Schleife mit Zufallsgenerator
« am: Juli 05, 2018, 12:47:29 »
Private Sub Formular_Fragenkatalog_2_Öffnen_Click()
    falsch = 0
    b = 0
    i = 0
    w = 0
   
    For i = 1 To 18
        Do
            DoCmd.OpenForm "Fragen aus Kategorie 2", acNormal
            b = Int(Rnd * 8) + 1
            DoCmd.GoToRecord , , acGoTo, b
            If Wiederholung = True Then
                w = 1
            End If
        Loop Until w = 0
            i = i + 1
    Next
    MsgBox "Du hast " & falsch & " Fehler!", vbOKOnly
End Sub

Folgender Code:
Nach Betätigung des Button "Formular_Fragenkatalog_2_Öffnen_Click" soll eine Schleife starten. Erster Durchlauf = Zufallszahl ausspucken und Datensatz mit der der Zufallszahl = ID anzeigen lassen. Sollte jetzt ein Kästchen "Wiederholung" = True sein, dann ist w=1 und die Schleife soll von vorne beginnen. Solange suchen bis Kästchen "Wiederholung" = False ist, w=0. Der Datensatz kann nun bearbeitet werden und über ein weiteren Button "Next" soll die Schleife wieder gestartet werden. Der durchlauf der Schleife soll so lange sein bis i = 18 ist und somit 18 Datensätze bearbeitet wurden.
Somit sollte ein Wiederholtes Aufrufen eines Datensatzes nicht mehr möglich sein.

Leider läuft meine Schleife komplett durch und macht nicht das was ich möchte. Ich hoffe es kann mir jemand weiterhelfen. Schleifen sind nicht mein Ding, Sorry.
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23349
Re: Schleife mit Zufallsgenerator
« Antwort #1 am: Juli 05, 2018, 13:47:47 »
Hallo,

was in aller Welt hast Du denn vor?

Was ist der Sinn dieses Zufall-Gehoppses?

Soll das Erinnerungsvermögen zur Reihenfolge der Fragen getestet werden?


Lösung könnte sein, das Form mit acDialog zu öffnen (Code wird angehalten) und die Zufallszahl als Where-Condition für die ID mitzugeben....


Zudem sollte die Schleife über einen Recordset gehen, weil Gotorecord (in desem Fall) auf das aktuelle Form wirkt, in dem der Code abläuft. Im Fall von acDialog, kommt der Code zum entspr. Zeitpunkt gar nicht zum Tragen.





Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1248
Re: Schleife mit Zufallsgenerator
« Antwort #2 am: Juli 05, 2018, 14:27:10 »
Gegenvorschlag: Erstelle ein ungebundenes Listen- oder Komfeld in dem Formular, in dem Du die 18 zufälligen Datensätze bearbeiten willst. Bei eingeschaltetem Assistenten wird das Steuerelement so vorkonfiguriert, dass es bei entsprechend gewählter Option zum darin ausgewählten Datensatz im Formular navigiert. Zum Schluß musst Du nur noch die Datensatzherkunft tunen, so dass nur 18 Datensätze angezeigt werden und diese von zufälliger Reihenfolge sind. Ich gehe hier vereinfacht von einem Feld FrageID und einem Feld Frage aus (erstes Feld ist ausgeblendet).
SELECT TOP 18
       FrageID,
       Frage
FROM   Tabellenname
ORDER  BY Rnd(FrageID);

Wenn ein Requery auf das Steuerelement abgesetzt wird, erscheinen natürlich 18 andere zufällige Datensätze.
« Letzte Änderung: Juli 06, 2018, 20:12:42 von Lachtaube »
Grüße von der (⌒▽⌒)
 

Offline Frank77

  • Access-Profi
  • **
  • Beiträge: 188
    • Die Zauberbaecker
Re: Schleife mit Zufallsgenerator
« Antwort #3 am: Juli 06, 2018, 19:32:45 »
Hallo!

Public Function ZufallsZahl(ByVal Untergrenze As Long, _
                            ByVal Obergrenze As Long) As Long
    Dim zahl As Long                            ' Zufallszahl
    Randomize
    zahl = CLng((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
    ZufallsZahl = CLng(zahl)
End Function

Private Sub Formular_Fragenkatalog_2_Öffnen_Click()
    Dim frm As Form
    Dim strFrm As String
    strFrm = "Fragen aus Kategorie 2"
    DoCmd.OpenForm strFrm, acNormal
    Set frm = Forms(strFrm)
    With frm
        .Recordset.FindFirst "ID = " & ZufallsZahl(1, .Recordset.RecordCount)
    End With
End Sub
Selbstständig = Selbst und Ständig