【Magic xpa 連載最新号のご案内】 2026年6月5日
Magic xpa 開発者ユーザの皆様へ
【1】 Magic xpa 連載のご案内
------------------------------------------------
本日、Magic xpa の連載、「Magic xpa で作るイベントドリブン型プログラム」の第219回目「効率的な日時の計算方法」を連載コーナーにアップいたしました。
https://www.tandacomp.com/ホーム/magic-連載コーナー
皆さんは、Magicにおける日付処理や時間処理のロジックにおいて、式の定義が面倒だと感じたことはありませんか?今回は、その問いに対する答の1つとして、なるべく関数を使用せずにロジックを組み立てる方法について解説してまいります。普段、日付関数、時刻関数の使いすぎでプログラムがスパゲッティになってしまっているとお悩みの方は、ぜひご一読ください。
まずは、次のプログラムをご覧ください。日付で範囲を指定して、該当するレコードを絞り込むという簡単なプログラムです。

画面1 日付の範囲絞り込み
日付範囲開始を「2025/01/01」と入力し、日付範囲終了を「2025/06/30」とすると、次のようにその範囲に該当する伝票の一覧が表示されます。

画面2 日付範囲の絞り込み結果
プログラムのロジックはいたって簡単です。次のように親タスクで日付型の変数を2つ定義し、子タスクのデータビューで範囲指定を行なっているだけです。

画面3 変数を2つ定義

画面4 その変数で範囲を指定
問題はここからです。手入力した日付で範囲を絞り込む場合は上図の通りですが、それ以外に、変数に初期値を代入したいとか、あるいは何らかの理由で、手入力ではなく式で変数の値を指定したいとします。例えば、日付範囲開始に「2025/01/01」という値を初期値として代入したいとします。
このとき、多くの人は次のような式を記述するのではないでしょうか?
DVal('2025/01/01','YYYY/MM/DD')
この DVal() 関数は、皆さんご存知の通り、「2025/01/01」という文字型データを日付データに変換するという関数です。
ところがです。このときにわざわざ関数を使用しなくても、日付の値を代入することができる方法があるのです。それはどのように記述するのでしょうか?(以降、本編に続く)
目次
1. 日付処理のサンプルプログラム
2. データビューの定義
3. 多くの人が関数を使ってしまう!
4. データビューの簡潔な書き方
5. 日付データの四則演算も関数は不要!
6. なぜこのようなことが可能なのか?!
7. Magicにおける日付データの内部処理
8. Magicにおける時刻データの内部処理
9. 画面表示形式の変更も関数は不要!
次回は、「C# のソースコードをタスクに埋め込む」をお送りします。
購読期間中は現在掲載中の過去記事をすべて読むことができます。
皆様のお越しをお待ちいたしております。
サインインしてコメントを残してください。
コメント
0件のコメント