ACCESS アクセス 直前日のデータを抽出
エクセルでは、簡単にできることが、同じ考えで設計するとアクセスではとても面倒になります。
連番もなく日付のフィールドを利用して抽出しました。
ACCESSの場合「ID」とは別に、レコードに抽出用の「連番」を作成すると、もっと簡単になると思います。
今回は、クエリをあまり作成したくなかったので面倒になりました。
[日付]フィールドを利用して直前日データの抽出方法
アクセスとエクセルは、利用方法が異なるのでおススメできる内容ではありませんが、何かの参考になればと思います。
※さまざまなトラップがあり、エラー防止を考える必要があります。
フォームで抽出する
■入力フォームに設定
テキストボックスの名前変更(コントロールソース設定の値をテーブルに反映させるため)
[前日残高]→[前日残高form]
[口座残高]→[口座残高form]
[評価残高]→[評価残高form]
「プロパティシート」名前で設定します。
[前日残高form]
プロパティシート「コントロールソース」 式ビルダーでDLookupを設定します。
1】一部エラー
=DLookup("口座残高","証券会社収支","日付 = #" & DMax("日付","証券会社収支","日付<#" & [日付] &"#") & "#")
2】一部不可
=DLookup("口座残高","証券会社収支","日付 = #" & Nz(DMax("日付","証券会社収支","日付<#" & [日付] &"#"),#1900/1/1#) & "#")
3】一部不可 データの型不一致?
=Nz(DLookup("口座残高","証券会社収支","日付 = #" & Nz(DMax("日付","証券会社収支","日付<#" & [日付] &"#"),#1900/1/1#) & "#"),0)
4】採用
=IIf(IsNull([日付]),Null,Nz(DLookUp("口座残高","証券会社収支","日付 = #" & Nz(DMax("日付","証券会社収支","日付<#" & [日付] & "#"),#1900/01/01#) & "#"),0))
[口座残高form]
「コントロールソース」で設定
1】一部エラーあり
=[前日残高form]+[入金額]-[出金額]+[株取引]
2】採用
=IIf(IsNull([前日残高form]),[入金額]-[出金額]+[株取引],[前日残高form]+[入金額]-[出金額]+[株取引])
[評価残高form]
「コントロールソース」で設定
1】採用
=[口座残高form]+[保有株評価額]
今回テーブルで作成したフィールド
マクロで、フォームからテーブルに3項目のデータを反映させます。
プロパティシート「イベント」を使用しました。
Private Sub 評価残高form_Enter()
Me![前日残高] = Me![前日残高form]
Me![口座残高] = Me![口座残高form]
Me![評価残高] = Me![評価残高form]
End Sub
クエリを作成しなくても、なぜかテーブルで完結します…
クエリで抽出する
■クエリに設定
[前日残高]
デザインビュー「フィールド:」設定
1】採用
前日残高: (SELECT 口座残高 FROM 証券会社収支 AS 証券会社収支_1 WHERE 証券会社収支_1.日付 = (SELECT Max(日付) FROM 証券会社収支 AS 証券会社収支_2 WHERE 証券会社収支_2.日付 < 証券会社収支.日付))
以下は、一部エラーまたはデータの型不一致になる可能性があります…
前日残高: Nz((SELECT 口座残高 FROM 証券会社収支 AS 証券会社収支_1 WHERE 証券会社収支_1.日付 = (SELECT Max(日付) FROM 証券会社収支 AS 証券会社収支_2 WHERE 証券会社収支_2.日付 < 証券会社収支.日付)),0)
前日残高: DLookUp("口座残高","証券会社収支","日付 = #" & Nz(DMax("日付","証券会社収支","日付<#" & [日付] & "#"),#1900/01/01#) & "#")
前日残高: Nz(DLookUp("口座残高","証券会社収支","日付 = #" & Nz(DMax("日付","証券会社収支","日付<#" & [日付] & "#"),#1900/01/01#) & "#"),0)
[口座残高]
「フィールド:」設定
1】一部エラーあり
口座残高: [前日残高]+[入金額]-[出金額]+[株取引]
2】採用
口座残高: IIF(IsNull([前日残高]),[入金額]-[出金額]+[株取引],[前日残高]+[入金額]-[出金額]+[株取引])
[評価残高]
「フィールド:」設定
1】採用
評価残高: [口座残高]+[保有評価額]
コメント