-----家計簿アプリに集計機能のコーデング---
【開発環境】
os:Windows 10 (64ビット)
IDE(統合開発環境):VisualStudio 2017及び2019
言語;VB
【参考書】
株式会社秀和システム「作って覚えるVisualBasic2017」
著者:萩原 博之/宮崎 昭世
【画面デザイン】


【集計表示デザイン】
①集計表示タブをクリックし、DataGridViewコントロールを貼る

②データソースの選択
DataGridViewコントロールのスマートタグをクリックし、次に[データソースの選択]の↓ボタンをクリックし、「他のデータソース」-「プロジェクトデータソース」-「SummaryDataSet」-「SunDataTable」を選ぶ

③データセットが表示される

【コード】
Form1.vbに下記の関数を追加する。
Public Class Form1
'------------------------------
'データ集計
'------------------------------
Private Sub CalcSummary()
'変数宣言
Dim expression As String
'データセットの初期化
SummaryDataSet.SunDaTaTable.Clear()
'forループ文
For Each drMoney As MoneyDataSet.moneyDataTableRow _
In MoneyDataSet.moneyDataTable
expression = "日付='" _
+ drMoney.日付.ToShortDateString() _
+ "'"
'データの型変換 CType()
Dim curDR() As SummaryDataSet.SunDaTaTableRow _
= CType(SummaryDataSet.SunDaTaTable.Select(expression),
SummaryDataSet.SunDaTaTableRow())
'if文
If curDR.Length = 0 Then
'if文
If (CType(CategoryDataSet1.CategoryDataTable.Select _
("分類='" & drMoney.分類 & "'"),
CategoryDataSet.CategoryDataTableRow())(0).入出金分類 = "入金") Then
SummaryDataSet.SunDaTaTable.AddSunDaTaTableRow(
drMoney.日付, drMoney.金額, 0)
ElseIf (CType(CategoryDataSet1.CategoryDataTable.Select _
("分類='" & drMoney.分類 & "'"),
CategoryDataSet.CategoryDataTableRow())(0).入出金分類 = "出金") Then
SummaryDataSet.SunDaTaTable.AddSunDaTaTableRow(
drMoney.日付, 0, drMoney.金額)
End If
Else
If (CType(CategoryDataSet1.CategoryDataTable.Select _
("分類='" & drMoney.分類 & "'"),
CategoryDataSet.CategoryDataTableRow())(0).入出金分類 = "入金") Then
curDR(0).入金合計 += drMoney.金額
ElseIf (CType(CategoryDataSet1.CategoryDataTable.Select _
("分類='" & drMoney.分類 & "'"),
CategoryDataSet.CategoryDataTableRow())(0).入出金分類 = "出金") Then
curDR(0).出金合計 += drMoney.金額
End If
End If
Next
End Sub
'-----------------------------------------------------------------------------
'イベントハンドラ
'----------------------------------------------------------------------------
[集計表示]タブのイベントハンドラ

Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl1.SelectedIndexChanged
CalcSummary()
End Sub
[表示]-[一覧表示]

Private Sub 一覧表示LToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 一覧表示LToolStripMenuItem.Click
TabControl1.SelectedTab = tabList
End Sub
[表示]-[集計表示]
Private Sub 集計表示SToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 集計表示SToolStripMenuItem.Click
TabControl1.SelectedTab = tabSummary
End Sub
End Class
以上
※コメント投稿者のブログIDはブログ作成者のみに通知されます