マンガでよめる痔のこと・薬のこと

数学の問題をデータベース(アクセス)に登録しています。
フィールドは、問題、解答、目標時間、難易度(1~5)、ジャンルです。

これを例えば、以下の条件でランダムに問題を抽出したい。

・ジャンルが、「A」と「B」のみ
・難易度1~3から
・目標タイムの合計が10-15分になるように

で、抽出の仕方としては、

・問題だけの用紙(目標タイムが書いてある)
・解答だけの用紙

とプリントできるようにしたいのです。

このように、ランダムに作れると、確認テストをたくさん作れるのでとても便利です。

アクセスで無理なら、他のソフトなど紹介してくれるとうれしいです。


以上よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんな感じですか。


(めんどいところは省略)

---
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
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やはり、プログラムを組む必要がありそうですね。。。

わざわざありがとうございます。時間があればチャレンジしてみたいと思います。

お礼日時:2011/04/14 10:56

質問者がどれだけのアクセスの経験があるのか不明ですが、これは難しと思います。


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

回答ありがとうございます。
やはり難しいですね。。。

私は個人的に家庭教師をしているだけで、教育界の知人は居ません。。。
確かに需要はありそうですね。

アクセスのプログラムを今から勉強するのは大変そうですので、違う方法、もしくはすでにあるかもしれないサービスを探してみたいと思います。

ありがとうございます。

お礼日時:2011/04/14 10:59

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q▲特定のセルからランダムに抽出しテストを作成▲

いつもお世話になっております。
エクセルのVBAについて教えて頂きたく書き込みいたします。
日本語が意味不明であれば、より詳しく記載しますのでご教授願います。

1つのエクセルの中に4つのシートがあります。
【Top(sheet1)、問題(sheet2)、初級(sheet3)、中級(sheet4)、上級(sheet5)】

Topにはスタートボタンがあり、クリックすることにより問題シートへと移動し、別シートより問題を抽出したいです。

問題シート内のC3~C17に問題が、D3~D17に(問題に付随した)ヒントが
ランダムに抽出されるようにマクロを作成したいです。

また問題、ヒント、答えは初級、中級、上級、それぞれのシートに(20問ずつぐらい)記載をしています。
初級から10問、中級から3問、上級から2問と抽出をしたいです。
答えに回答を入力することにより正解であればセルが青く、間違えであればセルが赤くなるようにしたいです。

簡易ではありますが、エクセルの画像も添付させてもらいます。
恐れ入りますがご教授願います。

Aベストアンサー

こんばんは!
面白そうなのでトライしてみました。

Sheet6を作業用のSheetとして追加・使用するようにしていますので、
Book上にはお示しの5つのSheetが存在しているという前提です。
尚、各Sheetともお示しの配置通りとします。

ます「TOP」Sheetにコマンドボタンを挿入 → コマンドボタンのコードを↓にしてみてください。

Private Sub CommandButton1_Click()
Worksheets("問題").Select
Worksheets("問題").Range("E3:E17").Interior.ColorIndex = xlNone
Call Sample1
End Sub

次にAlt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に
↓のコードをコピー&ペーストしてください。

Sub Sample1() 'この行から
Dim i As Long, lastRow As Long, c As Range
Dim wS2 As Worksheet, wS3 As Worksheet, wS4 As Worksheet, wS5 As Worksheet, wS6 As Worksheet
Set wS2 = Worksheets("問題")
Set wS3 = Worksheets("初級")
Set wS4 = Worksheets("中級")
Set wS5 = Worksheets("上級")
Application.ScreenUpdating = False
If Worksheets.Count <> 6 Then
Worksheets.Add after:=Worksheets(Worksheets.Count)
End If
Set wS6 = Worksheets(Worksheets.Count)
wS6.Visible = xlSheetHidden
wS6.Range("A:C").Clear
wS2.Range("C3:E17").ClearContents
With wS3
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
.Range("E:F").Insert
Range(.Cells(2, "E"), .Cells(lastRow, "E")).Formula = "=RAND()"
Range(.Cells(2, "F"), .Cells(lastRow, "F")).Formula = "=RANK(E2,E:E)"
For i = 1 To 10
Set c = .Range("F:F").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole)
c.Offset(, -4).Resize(, 3).Copy
wS6.Activate
ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next i
.Range("E:F").Delete
End With
With wS4
.Range("E:F").Insert
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
Range(.Cells(2, "E"), .Cells(lastRow, "E")).Formula = "=RAND()"
Range(.Cells(2, "F"), .Cells(lastRow, "F")).Formula = "=RANK(E2,E:E)"
For i = 1 To 3
Set c = .Range("F:F").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole)
c.Offset(, -4).Resize(, 3).Copy
wS6.Activate
ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next i
.Range("E:F").Delete
End With
With wS5
.Range("E:F").Insert
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
Range(.Cells(2, "E"), .Cells(lastRow, "E")).Formula = "=RAND()"
Range(.Cells(2, "F"), .Cells(lastRow, "F")).Formula = "=RANK(E2,E:E)"
For i = 1 To 2
Set c = .Range("F:F").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole)
c.Offset(, -4).Resize(, 3).Copy
wS6.Activate
ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next i
.Range("E:F").Delete
End With
wS6.Range("A2:B16").Copy
wS2.Activate
ActiveSheet.Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues
wS2.Columns.AutoFit
wS2.Range("E3").Select
Application.ScreenUpdating = True
End Sub 'この行まで

最後に「問題」SheetのSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペースト → Excel画面に戻り「TOP」Sheetのコマンドボタンをクリックし
「問題」SheetのE列に答えを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
Dim c As Range
If Intersect(Target, Range("E3:E17")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Worksheets(6)
If Target <> "" Then
Set c = .Range("A:A").Find(what:=Target.Offset(, -2), LookIn:=xlValues, lookat:=xlWhole)
If Target = c.Offset(, 2) Then
Target.Interior.ColorIndex = 8 '←水色
Else
Target.Interior.ColorIndex = 3
End If
Else
Target.Interior.ColorIndex = xlNone
End If
End With
End Sub 'この行まで

※ 通常の青だと字が見えにくいので「水色」にしています。m(_ _)m

こんばんは!
面白そうなのでトライしてみました。

Sheet6を作業用のSheetとして追加・使用するようにしていますので、
Book上にはお示しの5つのSheetが存在しているという前提です。
尚、各Sheetともお示しの配置通りとします。

ます「TOP」Sheetにコマンドボタンを挿入 → コマンドボタンのコードを↓にしてみてください。

Private Sub CommandButton1_Click()
Worksheets("問題").Select
Worksheets("問題").Range("E3:E17").Interior.ColorIndex = xlNone
Call Sample1
End Sub

次にAlt+F11キ...続きを読む

QStudyaid.D.Bは使いやすいですか?

 数学科非常勤講師(高校)として教材や試験問題などは今TeX,MicrosoftWord,MicrosoftExcelなどで作っているのですが,図やグラフなどを掲載するのが大変(今は手書きしたものや他の教材のものを切り貼りするなどしてます。)だと感じています。私が奉職させていただいている学校ではパソコンにStudyaid.D.B.が入っていて,それを使って教材や試験問題を作成されている先生が多く,私が苦労している図やグラフなどもそんなに苦労されていないようなので,私も今後使ってみようかとも考えているのですが,

1:使い勝手,使いやすさはどうでしょうか?Wordの数式オブジェクト,TeXと比べてどうかをお聞かせ願えれば幸いです。
2:Studyaid.D.Bで作成した文書の容量はどのくらいになるでしょうか?TeXで作ったものはかなり軽いですが,何KBくらいになるかお聞かせ願えれば幸いです。
3:Studyaid.D.Bをインストールしていないパソコンで見るための方法(たとえばPDFへの変換など)はどうでしょうか?やりやすいか,特別なソフトがいるのか?そもそもStudyaid.D.Bで作成した文書は何ファイルになるのでしょうか?

以上,欲張っていろいろ質問しましたが,わかる分だけでも回答いただければ幸いです。よろしくお願いします。

 数学科非常勤講師(高校)として教材や試験問題などは今TeX,MicrosoftWord,MicrosoftExcelなどで作っているのですが,図やグラフなどを掲載するのが大変(今は手書きしたものや他の教材のものを切り貼りするなどしてます。)だと感じています。私が奉職させていただいている学校ではパソコンにStudyaid.D.B.が入っていて,それを使って教材や試験問題を作成されている先生が多く,私が苦労している図やグラフなどもそんなに苦労されていないようなので,私も今後使ってみようかとも考えているのですが,

1...続きを読む

Aベストアンサー

ごく親しい友人で、高校教諭(数学)しているのがいます。

以前はWordの数式エディタを使っていたそうですが、他の先生が「Studyaid.D.Bだとラクだよ」みたいなことを言うので、自腹切って数1・Aのを買って使ってみたところ、すごく使いやすくて、すぐに数2・Bも追加購入したそうです。

私は数学科ではないので、これくらいしか分からないのですが、せっかく利用できる環境があるのでしたら、ぜひ使ってみるべきだと思います。その友人はパソコン歴が浅く、操作にもあまり慣れていないのですが、その友人がすぐに使えるようになったみたいですから、操作も難しくないのだろうと思われます。

それと、Studyaid.D.Bで作ったデータをWord等にエクスポートしたりする方法はないそうです。どうしてもということでしたら、シェアウェアで「バーチャプリントドライバー」というのがVectorにありますので、これを使用してBMPなどの画像イメージとして保存することは可能です(最高で300dpi)。

ファイルサイズは詳しいことは分からないのですが、聞いたところそれほど大きくはないようです。おそらく数百KB程度ではないかと。。。

以上、わかる分だけですが、ご参考になれば幸いです。

参考URL:http://www.vector.co.jp/soft/winnt/writing/se246036.html

ごく親しい友人で、高校教諭(数学)しているのがいます。

以前はWordの数式エディタを使っていたそうですが、他の先生が「Studyaid.D.Bだとラクだよ」みたいなことを言うので、自腹切って数1・Aのを買って使ってみたところ、すごく使いやすくて、すぐに数2・Bも追加購入したそうです。

私は数学科ではないので、これくらいしか分からないのですが、せっかく利用できる環境があるのでしたら、ぜひ使ってみるべきだと思います。その友人はパソコン歴が浅く、操作にもあまり慣れていないのですが、その友...続きを読む


人気Q&Aランキング