質問するログイン新規登録

回答編集履歴

1

追加

2016/03/17 08:37

投稿

shi_ue
shi_ue

スコア4437

answer CHANGED
@@ -10,4 +10,49 @@
10
10
  Debug.Print rs_rank!tensu, rs_rank!simei
11
11
  rs_rank.MoveNext
12
12
  Loop Until rs_rank.EOF
13
- ```のようにします。
13
+ ```のようにします。
14
+
15
+ ###追記
16
+ ```VBScript
17
+ i = 0
18
+ Do Until i >= n
19
+ rs_seiseki.MoveFirst
20
+ Do Until rs_seiseki.EOF
21
+ If rs_seiseki!gaku_no = gaku_H(i) Then
22
+
23
+ mySQL = "SELECT * FROM seiseki_table INNER JOIN gakusei_m ON (seiseki_table.gaku_no = gakusei_m.gaku_no) "
24
+ rs_rank.Open mySQL, cnn, adOpenStatic, adLockOptimistic
25
+
26
+ 'rs_rank.MoveFirst
27
+ Debug.Print rs_rank!gaku_no, rs_rank!tensu, rs_rank!simei
28
+ rs_rank.Close
29
+ i = i + 1
30
+ End If
31
+ rs_seiseki.MoveNext
32
+ Loop
33
+ Loop
34
+ ```この部分ですが、実は学生マスターから氏名を取りたいだけですよね?すでに成績テーブルは取得しているわけですから。
35
+ ```VBScript
36
+ i = 0
37
+ Do Until i >= n
38
+ rs_seiseki.MoveFirst
39
+ Do Until rs_seiseki.EOF
40
+ If rs_seiseki!gaku_no = gaku_H(i) Then
41
+
42
+ mySQL = "SELECT * gakusei_m WHERE gaku_no=" & gaku_H(i)
43
+ rs_rank.Open mySQL, cnn, adOpenStatic, adLockOptimistic
44
+
45
+ 'rs_rank.MoveFirst
46
+ Debug.Print rs_seiseki!gaku_no, rs_seiseki!tensu, rs_rank!simei
47
+ rs_rank.Close
48
+ i = i + 1
49
+ End If
50
+ rs_seiseki.MoveNext
51
+ Loop
52
+ Loop
53
+ ```これでどうでしょうか。
54
+
55
+ エラーの原因は、`SELECT * FROM seiseki_table INNER JOIN gakusei_m ON (seiseki_table.gaku_no = gakusei_m.gaku_no)`となっていると、`gaku_no`がseiseki_tableとgakusei_mの両方に存在します。
56
+ なので、`rs_rank.Fields("seiseki_table.gaku_no")`と指定してやる必要があるからです。
57
+
58
+ でも、これでは期待通りの動きにはならないので、上記のように修正しました。