日付の設定
ここで、固定列に行の見出しとして日付を設定する方法を考えてみましょう。
日付は手入力でもいいのですが、便利な様に自動的にセットするようにしてみましょう。1か月単位での設定を想定し、年月を指定して一覧表示を行うようにします。
まず、年月が設定できるようにDateTimePickerを追加します。またDateTimePickerの変更イベントにFlexGridの行数と、固定列の値を動的に変更するプログラムを作成します。
this.c1FlexGrid1.Rows.RemoveRange(1, this.c1FlexGrid1.Rows.Count - 1); this.c1FlexGrid1.AddItem("追加する日付");
- 固定行を残して、その他の列を削除します。
- 日付を設定し、行を追加します。
これだけで、見出しに日付が表示されるようになり、行の削除、追加も行えるようになります。
データの登録と読み込み
最後に入力したデータの登録と登録したデータの読み込みを作成してみましょう。まず、売上データを登録するテーブルを用意します。テーブル作成のスクリプトファイルも用意しましたので必要に応じて利用してください。
ここで、データベースへの登録、読み込みについて簡単にまとめてみます。
- SqlConnectionインスタンスを生成する
- データベース接続を開く
- SqlCommandインスタンスを生成する
- SQLコマンドを設定する
- SQLコマンドを実行する
- データベース接続を開く
- データベース接続を閉じる
基本的には、1~7の流れになります。
では、実際に登録と読み込みを行ってみましょう。
レコードの削除
レコードの削除では、次のSQLコマンドを使用します。
DELETE FROM Sales WHERE Date >= '月の開始日' AND Date < '翌月の開始日'
ここで、WHERE句には売上データ一覧表で選択されている日付の範囲を指定します。WHERE句に1か月分の日付を設定することで、後で登録する売上データと同じ日付のデータが存在することを防ぎます(今回使用している売上テーブルは、日付項目が主キーになっているため、そのまま登録すると主キー違反になってしまいます)。
レコードの追加
次に、FlexGrid上に入力された売上データを登録します。レコードの追加では、次のSQLコマンドを使用します。
INSERT Sales (Date, Proceeds, Payments, GrossMargin, GrossMarginRate) VALUES ('日付', 売上金額, 仕入金額, 粗利, 粗利率)
各項目に対し、FlexGrid上のデータをそのままセットします。売上金額、仕入金額については未入力の可能性があるので、その場合は0に変換して登録を行います。
レコードの取得
最後に、実際に登録したデータを参照してみましょう。レコードの取得では、次のSQLコマンドを使用します。
SELECT Date, Proceeds, Payments, GrossMargin, GrossMarginRate FROM Sales WHERE Date >= '月の開始日' AND Date < '翌月の開始日' ORDER BY Date
売上データの参照時は追記することを想定して、日付のみの行を先に追加した後に、日付が一致した列にデータを貼り付けていきます。そのため、日付順でソートした形でデータを取得します。
このようにしてデータを登録し、アプリケーションを実行した例が以下の画像です。
まとめ
今回はC1Studioの導入編ということで、FlexGridを使用できるようになるまでと、簡単な使い方をメインに説明してきました。FlexGridを利用することにより、簡単に一覧形式の画面を作ることができたと思います。また、サンプルは売上管理アプリケーションとなっていますが、少し変更することで家計簿ソフトなどにも応用することができます。
次回からは、コントロールの機能をさらに利用したり、その他の収録コントロールとFlexGridを連携させたりしながら、簡単に機能盛りだくさんのアプリケーションを作成していきましょう。