• ベストアンサー

数学の問題のデータベースを作成して、ランダムに抽出

数学の問題をデータベース(アクセス)に登録しています。 フィールドは、問題、解答、目標時間、難易度(1~5)、ジャンルです。 これを例えば、以下の条件でランダムに問題を抽出したい。 ・ジャンルが、「A」と「B」のみ ・難易度1~3から ・目標タイムの合計が10-15分になるように で、抽出の仕方としては、 ・問題だけの用紙(目標タイムが書いてある) ・解答だけの用紙 とプリントできるようにしたいのです。 このように、ランダムに作れると、確認テストをたくさん作れるのでとても便利です。 アクセスで無理なら、他のソフトなど紹介してくれるとうれしいです。 以上よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

こんな感じですか。 (めんどいところは省略) --- Public Sub TEST() Dim cs As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String Dim int時間 As Integer '目標時間累積 Dim int問題数 as Integer '対象問題数 Dim int選択 As Integer Dim i As Integer Set cn = New ADODB.Connection Set rs = New ADODB.Recordset strSQL = "SELECT [問題], [回答], [目標時間], [難易度], [ジャンル] " & _ " FROM T_問題 " & _ " WHERE ([目標時間]<=15) " & _ " And ([難易度] Between 1 And 3) " & _ " And ([ジャンル]='A' Or [ジャンル]='B')" rs.Open strSQL, cn, adOpenStatic, adLockOptimistic int時間 = 0  int問題数 = rs.RecordCount  loopnext: rs.MoveFirst 'ランダムに数字を取得 int選択 = Int(Rnd(0) * int問題数) + 1 i = 0 Do While i <= int選択 rs.MoveNext i = i + 1 Loop '問題重複の場合の処理(省略) int時間 = int時間 + rs!目標時間 '何回やっても目標時間が10から15に収まらなかったときの処理(省略) If int時間 <= 15 Then '対象レコードをテーブルに出力(省略) If int時間 < 10 Then GoTo loopnext '次の問題取得 End If Else GoTo loopnext '次の問題取得 End If 'テーブルを元に問題および解答のレポート作成(省略) End Sub

macus
質問者

お礼

回答ありがとうございます。 やはり、プログラムを組む必要がありそうですね。。。 わざわざありがとうございます。時間があればチャレンジしてみたいと思います。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問者がどれだけのアクセスの経験があるのか不明ですが、これは難しと思います。 プロに金を払ってやってもらう範囲だと思います。少し進むとCAIの関連になります。 ーー 質問に書いている (1)問題の属性的(分野・難易度など)サマリ的な情報 外に (2)そのサマリそれぞれのレコード(横1行)に対応する、実際の問題文 が考えられる。 (1)はアクセスは得意分野でしょう。 クエリやSQLの勉強をすれば、複数条件での抜き出しは、エクセル関数に比べたら格段に上です。 でもこの質問コーナーを10年ぐらい見ているが、アクセスは習得が難しいという意見が多い。 難なく学習できた人は声を挙げないのかもしてないが。 ーー しかし(2)の問題文そのものの整理は、アクセスは得意とはいえないでしょう。卑近には数学数式もソフト(数式エディタ)の手を借りないと記述も難しいでしょう。 エクセルにある数式ソフト3.0をアクセスで使うとしても、疑問回答もGoogleでも見つからなかった。 アクセスには不定文字数の情報を扱うメモ型なども在りますが、扱いが難しいのでは。 ーー それにアクセスは印刷(レポート)が自由にするのが難しい。 === 結局言いたいことは、同じようなことを考える先生は多いと思うので、出来合いの有料・無料ソフトが無いか探して、使うべきでしょう。 とりあえず「VECTOR」でWEB照会してみて。 教育界におれば、そういうニュースやお誘いはあるのではないですか。こんな質問コーナーに質問するのは、たまたま経験者がいれば、を狙うことで、賢明ではない。むしろ教育関連のカテの方がまだ相応しいのではないかな。 世上では、先生は雑務ほかで忙しいといわれている。そんな中でACCESSを実用まで勉強するのは、マニアックな人以外は難しいと思うが。 ACCESSを教えるスクールにでも行っても、その程度では途は遠いと実感するのではないかな。 アクセスは(1)の処理だけに限り、問題は紙の形で番号順に管理し、問題番号をアクセスの検索で知って、紙を探し、生徒数分コピーして使うなどが当面の目標かな。

macus
質問者

お礼

回答ありがとうございます。 やはり難しいですね。。。 私は個人的に家庭教師をしているだけで、教育界の知人は居ません。。。 確かに需要はありそうですね。 アクセスのプログラムを今から勉強するのは大変そうですので、違う方法、もしくはすでにあるかもしれないサービスを探してみたいと思います。 ありがとうございます。

関連するQ&A