【Magic xpa 連載最新号のご案内】 2025年8月8日
Magic xpa 開発者ユーザの皆様へ
【1】 Magic xpa 連載のご案内
------------------------------------------------
本日、Magic xpa の連載、「Magic xpa で作るイベントドリブン型プログラム」の第209回目「トランザクション超入門(その1)」を連載コーナーにアップいたしました。
https://www.tandacomp.com/ホーム/magic-連載コーナー
トランザクションとは、入力したデータを確定してデータベースに保存するか、あるいは取消して入力をキャンセルするかを選択することのできる機能です。専門用語では、確定して保存することを「コミット」と呼び、逆に、取消してキャンセルすることを「ロールバック」と呼んでいます。
このトランザクションの仕組みは、かつてよく使われていたワークファイルによる処理方法とよく似ています。パソコンの世界でトランザクションの概念がまだ一般的でなかった時代は、ワークファイルを用いて、いわゆる疑似的なトランザクションを実現していました。
しかしながら今日では、PCシステム上でもトランザクションが容易に使用できるようになり、Magicにおいてもワークファイルを用いた昔ながらの方式はもはや不要となりました。その結果、トランザクション処理を行うプログラムの作成も、以前に比べてはるかに楽になりました。
ちなみに、システム上で障害が発生したときに、データを自動的に元の状態に戻してくれるロールバック機能も、トランザクションの機能のひとつとしてよく知られています。むしろ、この業界ではこちらの機能だけが先走りして語られているような感もあります。
今回は、「トランザクション超入門」の第1回目として、Magic における「レコードレベルのトランザクション」と「タスクレベルのトランザクション」の違いについて詳しく解説してまいります。
まずは、いちばん単純な例で見ていきましょう。
画面1は、APGで作成した程度のプログラムに、「キャンセル」ボタンを付けただけの最も単純なプログラムの実行画面です。
※キャンセルボタンのイベントは後ほど解説いたします。

画面1 APGプログラムにキャンセルを付けただけ
この状態で適当なレコードを5件ほど登録してみます(画面2)。

画面2 ダミーデータを5件ほど入力
そして、5件目を入力し終えたところで「キャンセル」ボタンを押してみます。すると、5件目のバナナだけが入力が取り消され、元の空白行に戻ります(画面3)。

画面3 5行目だけが入力キャンセル
これが、Magicのデフォルトのトランザクションの動作です。つまり、最後に入力された1件のレコードだけが、入力が取り消され、ロールバックして元の空白に戻ったという動きです(詳細はこのあと解説します)。
では今度は、このプログラムのタスク特性を1箇所だけ変更して、実行してみます。何をどう変えたのかは、このあと解説します(画面4)。
注)画面3のレコードを一旦すべて削除し、テーブルを空にした状態で再実行します。

画面4 タスク特性を変更して再実行
実行画面は前とまったく同じです。ここでも同じようにレコードを5件ほど登録してみます(画面5)。

画面5 ダミーデータを再び5件登録
そして、先ほどと同じように「キャンセル」ボタンを押します。
するとどうでしょう。今度は、5件のレコードの入力すべてが一斉に取り消されたことが分かります(画面6)。

画面6 今度は5レコード全てが取り消された
なお、このプログラムではワークファイルやメモリテーブル等は一切、使用していません。タスク特性の設定を1カ所変更しただけです。
では、タスク特性のどこを、一体どのように変更したのかを見ていくことにしましょう(以降、本編に続く)。
目次
1. トランザクションの最も基本的な例
2. これが Magic xpa のデフォルトの動作
3. タスク特性を1カ所変更しただけで
4. 変更したのはこちらの1カ所だけ
5. たったこれだけで動きがこんなに変わる
6. キャンセルボタンのイベントの仕組み
7. 使用した関数のヘルプ解説の意味
次回は、「トランザクション超入門(その2)」をお送りします。
購読期間中は現在掲載中の過去記事をすべて読むことができます。
皆様のお越しをお待ちいたしております。
サインインしてコメントを残してください。
コメント
0件のコメント