コンボボックスに入ってる値に基づいて、データベースから値をとってきて計算したいという機能をつくりたいですが、
環境: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
No.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
No.1
- 回答日時:
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になっていると、またはレコードが削除されています。というエラーが出るんですが、原因がわからないです。。
もし知ってたら、ご教授ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語の課題で、1年の秒数を計...
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
Excel VBAにてFFT
-
EXCELなどで「返す」という表現
-
加速度から変位の変換について
-
CとFORTRANの計算速度はどちら...
-
CRC8を教えてください
-
2進数の乗算をc言語で計算した...
-
Java 電卓の連続計算
-
matlab計算での進捗状況を知りたい
-
matlabで計算終了
-
C言語のプログラミングの問題で...
-
等高線を計算したい
-
FORTRANで>>
-
バッチファイルでウインドウを...
-
C# 計算処理中に実行中ウィン...
-
太陽の位置計算のプログラムを...
-
四則演算プログラム(入力式の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
バッチファイルでウインドウを...
-
モジュラス103の計算とは何でし...
-
傾いた四角形内の範囲の条件式
-
Visual C++でdebugとreleaseで...
-
変化させるセルが変化しない
-
骨折リスク評価のFRAXについて...
-
C# 計算処理中に実行中ウィン...
-
VBAでの勤務時間計算
-
べき乗の計算が遅い理由
-
C言語についてです。 再帰を使...
-
Excel VBAにてFFT
-
数値計算の高速化 (cos, sin, exp)
-
VBとVBAの違い
-
VB6で正確なミリ秒を計測したい...
-
スレッド処理からダイアログを...
-
matlabで計算終了
おすすめ情報