Prüfungsfragen zusammenstellen
Prüfungsfragen zusammenstellen.
Ich habe Prüfungsfragen mit ihren Antworten in einer Tabelle diese sind in 5 Gruppen sortiert immer von 101-110, 201-210 usw
Jetzt möchte ich gerne aus jedem Frageblock 3 zufällig gewählter Fragen nehmen und in einer separaten Liste ausgeben.
Dabei sollte kontrolliert werden das keine Nummer doppelt erscheint.
Ziel: 15 mal das Skript laufen lassen mit den vorher zufällig ausgewählten Zahlen (welche nicht doppelt vorkommen dürfen), zu 3 Gruppen aus 101-110, 201-210 , 301-310, 401-410, 501-510
Bis jetzt mache ich das von Hand und gebe für alle 15 Fragen je die zufällig ausgewählte Nummer ein
Für jeden Block habe ich diese Funktion
let myzahl := floor(random() * 10) + 101;
Zahl := myzahl
Und danach schreibe ich die erhalten Zahl in Frage Nummer und dann lasse ich diese Skript laufen dies funktioniert gut
let Info := "
*************************
die anzahl befehle auf 4 festlegen
*************************
";
let myFilter := text('Frage Nummer');
let newAnzahl := 4;
let Info := "
*************************
Die Fragenummer einem Arry zuweisen
*************************
";
let AkNr := (select Theoriefragen where contains(text(Fragennummer), myFilter));
let Info := "
*************************
Schlaufe legen
die Anzahl der durchgänge newA zuweisen
*************************
";
let newA := false;
for ii in range(0, newAnzahl) do
newA := cnt(select Theoriefragen where contains(text(Fragennummer), myFilter) = item(AkNr, ii)) > 0;
let my := this;
let newB := (create 'Prüfung-Theoriefragen');
newB.(Pruefung := my);
newB.(Theoriefragen := item(AkNr, ii))
end;
'Frage Nummer' := null
5 Antworten
-
Hallo Susann. Folgender Code müßte Dir ein Array liefern mit den zufälligen 3 Fragenummern aus den 5 Gruppen. Dieses kannst Du dann ja weiter verarbeiten um die Datensätze anzulegen, wie in Deiner letzten Formel. Mirko
let result := [0]; result := []; for i in range(1, 6) do let result2 := [0]; result2 := []; while cnt(result2) < 3 do let pattern := "^" + text(i); let ary := (select Theoriefragen)[extractx(text('Frage Nummer'), pattern) = text(i)].'Frage Nummer'; let result3 := item(ary, floor(random() * 11)); result2 := unique(array(result2, [result3])) end; result := array(result, result2)end; let doubleArrayInText := concat(result); let splitText := split(replace(doubleArrayInText, " ", ""), ","); sort(splitText)
-
Hallo Susan, verstehe ich das richtig: 'Prüfung-Theoriefragen' ist jeweils N:1 mit 'Prüfung' und 'Theoriefragen' verknüpft. Und nun sollen mit einer Schaltfläche aus 'Prüfung' heraus in 'Prüfung-Theoriefragen' insgesamt 15 Datensätze mit jeweils 3 Fragen aus den 5 Bereichen generiert und mit den beiden anderen Tabellen verknüpft werden? Das könnte man so versuchen:
let me := this; for ii in range(1, 6) do let myCount := 1; while myCount <= 3 do let myFNr := floor(random() * 10) + (ii * 100 + 1); let myF := first((select Theoriefragen)[Fragennummer = myFNr]); if myF != 0 and cnt(('Prüfung-Theoriefragen')[Theoriefragen = myF]) < 1 then let newF := (create 'Prüfung-Theoriefragen'); newF.('Prüfung' := me); newF.(Theoriefragen := myF); myCount := myCount + 1 end end end
Content aside
- Status Answered
- vor 2 JahrenZuletzt aktiv
- 5Antworten
- 75Ansichten
-
2
Folge bereits