プロが教える店舗&オフィスのセキュリティ対策術

コンボボックスに入ってる値に基づいて、データベースから値をとってきて計算したいという機能をつくりたいですが、
環境:Access2003 VB6
テーブル(SCHOOL)はYear,Class,成績1、成績2、成績3などあります。
コンボボックス1(学年)が1を選択して、
コンボボックス2(クラス)が1Aを選択したとき、

テーブルに1年1Aの人数を計算する場合はSQLはどうかけばいいのでしょうか。
また、その人数の成績1、成績2、成績3を合計したい場合はどうしたらいいのでしょうか。
アドバイスよろしくお願いします。
下はデータベース接続とコンボボックスの設定ですが、
合計値はラベルに表示したいと考えてます。
詳しい方、よろしくお願いします。

Dim CONN As ADODB.Connection
'レコードセット
Dim RECO As ADODB.Recordset
Dim REDO As ADODB.Recordset

Private Sub ConnOpen()
Set CONN = New ADODB.Connection
'接続文字列の設定
CONN.ConnectionString = "provider=Microsoft.jet.oledb.4.0;"   _& "data source=D:\DB\dbstudent.mdb"
'コネクションをオープン
CONN.Open
End Sub
Private Sub RecoSet()
Set RECO = CONN.Execute("Select * From SCHOOL")
End Sub

Private Sub RedoSet()
Set REDO = CONN.Execute("Select Distinct Year From SCHOOL")
End Sub
Private Sub cbx1_Click()
Cbx2.Clear
End Sub

Private Sub Cbx1_LostFocus()
Set RECO = CONN.Execute("Select Distinct Class From SCHOOL WHERE Year = '" & Cbx1.Text & "'")
RECO.MoveFirst
Do Until RECO.EOF
Cbx2.AddItem (RECO.Fields(0))
RECO.MoveNext
Loop
RECO.Close
End Sub
 

A 回答 (2件)

LblNumbers.Caption = RECO.Fields("Numbers")


↓これでどうでしょう
if not reco.eof then
LblNumbers.Caption = RECO.Fields("Numbers").value
end if
若しくは
if not reco.eof then
LblNumbers.Caption = RECO!Numbers
end if
あるいは
if not reco.eof then
LblNumbers.Caption = RECO(2)
end if
    • good
    • 0
この回答へのお礼

うまく表示できました。
ありがとうございます。

お礼日時:2007/06/20 16:45

SQL文です。


・人数計算
Select Year,Class,COUNT(*) From SCHOOL WHERE Year = '" & Cbx1.Text & "' AND Class= '" & Cbx2.Text & "' GROUP BY Year,Class"
・合計計算
Select Year,Class,SUM(成績1),SUM(成績2),SUM(成績3) From SCHOOL WHERE Year = '" & Cbx1.Text & "' AND Class= '" & Cbx2.Text & "' GROUP BY Year,Class"
上記でいけるはずです。
因みに合計計算の方はNullがない物として記述しています。

この回答への補足

回答ありがとうございます。
Private Sub Cbx2_GotFocus()

Set RECO = CONN.Execute("Select Year,Class,COUNT(*) as numbers From SCHOOL WHERE Year = '" & Cbx1.Text & "' AND Class= '" & Cbx2.Text & "' GROUP BY Year,Class")
LblNumbers.Caption = RECO.Fields("Numbers")
RECO.Close
End Sub

このように設定したんですが、実行したら、BOFかEOFがtureになっていると、またはレコードが削除されています。というエラーが出るんですが、原因がわからないです。。
もし知ってたら、ご教授ください。

補足日時:2007/06/20 09:45
    • good
    • 0

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