|
▼わん さん:
こんばんは。
できた事はできたのですが、
「とりあえずできた」程度のモノですので参考までに…。
フォーム:フォーム名
コンボボックス
cmb年
cmb月
cmb名前
テキストボックス(コントロールソース)
txt年(年)
txt月(月)
txt名前(名前)
txt結果1(結果1)
txt結果2(結果2)
txt前年結果1(無し)
txt前年結果2(無し)
フォームのレコードソース
SELECT Year([日付]) AS 年,
IIf(IsNull(Forms!フォーム名!cmb月),"---",Month(テーブルI.日付)) AS 月,
IIf(IsNull(Forms!フォーム名!cmb名前),"---",テーブルI.名前) AS 名前,
Sum(テーブルI.結果1) AS 結果1,
Sum(テーブルI.結果2) AS 結果2
FROM テーブルI
WHERE (((IIf(IsNull([Forms]![フォーム名]![cmb月]),"---",Month([テーブルI].[日付])))="---" Or
(IIf(IsNull([Forms]![フォーム名]![cmb月]),"---",Month([テーブルI].[日付])))=[Forms]![フォーム名]![cmb月]) AND
((IIf(IsNull([Forms]![フォーム名]![cmb名前]),"---",[テーブルI].[名前]))="---" Or
(IIf(IsNull([Forms]![フォーム名]![cmb名前]),"---",[テーブルI].[名前]))=[Forms]![フォーム名]![cmb名前]))
GROUP BY Year([日付]),
IIf(IsNull(Forms!フォーム名!cmb月),"---",Month(テーブルI.日付)),
IIf(IsNull(Forms!フォーム名!cmb名前),"---",テーブルI.名前),
IIf(IsNull(Forms!フォーム名!cmb月),"---",Month(テーブルI.日付)),
IIf(IsNull(Forms!フォーム名!cmb名前),"---",テーブルI.名前)
HAVING (((Year([日付]))=[Forms]![フォーム名]![cmb年]));
(コピーペーストでいけると思います…。)
あとは、cmb年、cmb月、cmb名前の更新後処理から
関数を呼び出す形になります。
Private Sub cmb年_AfterUpdate()
Call LastYear
End Sub
Private Sub cmb月_AfterUpdate()
Call LastYear
End Sub
Private Sub cmb名前_AfterUpdate()
Call LastYear
End Sub
Sub LastYear()
Dim strWhere As String
strWhere = "Year([日付]) = " & CLng(Me.cmb年) - 1
If Not IsNull(Me.cmb月) Then
strWhere = strWhere & " AND Month([日付]) = " & CLng(Me.cmb月)
End If
If Not IsNull(Me.cmb名前) Then
strWhere = strWhere & " AND 名前 = '" & Me.cmb名前 & "'"
End If
Me.txt前年結果1.value = DSum("結果1", "テーブルI", strWhere)
Me.txt前年結果2.value = DSum("結果2", "テーブルI", strWhere)
Me.Requery
End Sub
色々と考えていたのですが、上記の通りまとまったものができなくてすみません。
|
|