回答編集履歴

1

追加

2016/03/17 08:37

投稿

shi_ue
shi_ue

スコア4437

test CHANGED
@@ -23,3 +23,93 @@
23
23
  Loop Until rs_rank.EOF
24
24
 
25
25
  ```のようにします。
26
+
27
+
28
+
29
+ ###追記
30
+
31
+ ```VBScript
32
+
33
+ i = 0
34
+
35
+ Do Until i >= n
36
+
37
+ rs_seiseki.MoveFirst
38
+
39
+ Do Until rs_seiseki.EOF
40
+
41
+ If rs_seiseki!gaku_no = gaku_H(i) Then
42
+
43
+
44
+
45
+ mySQL = "SELECT * FROM seiseki_table INNER JOIN gakusei_m ON (seiseki_table.gaku_no = gakusei_m.gaku_no) "
46
+
47
+ rs_rank.Open mySQL, cnn, adOpenStatic, adLockOptimistic
48
+
49
+
50
+
51
+ 'rs_rank.MoveFirst
52
+
53
+ Debug.Print rs_rank!gaku_no, rs_rank!tensu, rs_rank!simei
54
+
55
+ rs_rank.Close
56
+
57
+ i = i + 1
58
+
59
+ End If
60
+
61
+ rs_seiseki.MoveNext
62
+
63
+ Loop
64
+
65
+ Loop
66
+
67
+ ```この部分ですが、実は学生マスターから氏名を取りたいだけですよね?すでに成績テーブルは取得しているわけですから。
68
+
69
+ ```VBScript
70
+
71
+ i = 0
72
+
73
+ Do Until i >= n
74
+
75
+ rs_seiseki.MoveFirst
76
+
77
+ Do Until rs_seiseki.EOF
78
+
79
+ If rs_seiseki!gaku_no = gaku_H(i) Then
80
+
81
+
82
+
83
+ mySQL = "SELECT * gakusei_m WHERE gaku_no=" & gaku_H(i)
84
+
85
+ rs_rank.Open mySQL, cnn, adOpenStatic, adLockOptimistic
86
+
87
+
88
+
89
+ 'rs_rank.MoveFirst
90
+
91
+ Debug.Print rs_seiseki!gaku_no, rs_seiseki!tensu, rs_rank!simei
92
+
93
+ rs_rank.Close
94
+
95
+ i = i + 1
96
+
97
+ End If
98
+
99
+ rs_seiseki.MoveNext
100
+
101
+ Loop
102
+
103
+ Loop
104
+
105
+ ```これでどうでしょうか。
106
+
107
+
108
+
109
+ エラーの原因は、`SELECT * FROM seiseki_table INNER JOIN gakusei_m ON (seiseki_table.gaku_no = gakusei_m.gaku_no)`となっていると、`gaku_no`がseiseki_tableとgakusei_mの両方に存在します。
110
+
111
+ なので、`rs_rank.Fields("seiseki_table.gaku_no")`と指定してやる必要があるからです。
112
+
113
+
114
+
115
+ でも、これでは期待通りの動きにはならないので、上記のように修正しました。