来たる Access2010 には、初めて Access データ エンジン テーブルにトリガーのような機能を追加する Data Macros 機能があると噂されています。誰もこれについてさらに詳細を持っていますか? たとえば、コード (ACEDAO、SQL DDL など) で作成できますか? ODBC、OLE DB などを介して Access ユーザー インターフェイスの外部からデータが変更された場合、データ マクロは実行されますか?
2 に答える
わかりました、もう少し情報。
ODBC、OLE DB などを介して Access ユーザー インターフェイスの外部からデータが変更された場合、データ マクロは実行されますか?
はい、そうです。
これらの真のトリガーは、データ エンジン レベルにあります。そのため、ado、dao を使用したり、ms-access のテーブル ビューでテーブルを編集したりすると、トリガーが起動します。これらのトリガーには、コンピューターに ms-access がインストールされていないシナリオも含まれます。
もちろん、JET がインストールされている必要があります (この記事の残りの部分では、ACE という用語を使用します)。アクセス チームが JET の所有権を取得したのは、アクセス 2007 だけだったことを思い出してください。ニーズに合わせてこのエンジンを自由に拡張できるようになりました。2007 年に ACE にいくつかの変更が加えられ始めましたが、2010 年にはさらに多くの変更が行われる予定です。これらの機能の一部はまだ NDA の段階にありますが、ここでできる限り詳しく説明します。
たとえば、コード (ACEDAO、SQL DDL など) で作成できますか?
コードでは perahps ですが、SQL ddl ではそうではありません。トリガーは sql コマンドではありません。市場に出回っている Oracle、Sql サーバー、または MOST システムの場合、いずれにしても、トリガー用に独自のカスタム言語を使用する傾向があることに注意してください。
したがって、新しい ACE では、データ マクロと呼ばれるものを記述します。ms-access でマクロ エディターを使用します。これらは昔ながらのアクセス マクロですが、エディターは完全に作り直されています。新しいマクロには、サブルーチン、ループ、if then else ブロック、およびレコードセットのタイプもあります。2007 マクロで一時変数を作成する機能が追加されたことを思い出してください。2010 年には、これが拡張され、ローカル変数や上記の新機能も含まれるようになりました。
既存のマクロ コマンドの構文は、以前のバージョンと同じです。ただし、上記のクールなコマンドがすべて追加された新しい洗練された IDE があります。したがって、2 種類のマクロがあります。UI マクロ (以前と同様に通常) と、新しいいわゆるデータ マクロ。テーブル レベル マクロがエラー メッセージを画面に表示できるのは意味がありません。そのため、ログに記録されたエラーはすべてテーブルに記録されます。また、独自のカスタム エラーをそのテーブルに書き込むことができる新しいロギング コマンドもいくつかあります。華麗でシンプルなデザインがここにあります。エラー ログ テーブルは次のようになります。
(出典: kallal.ca )
巨大な IDE の世界では、大規模なフレームワークと恐ろしい巨大なコード ライブラリがテーブル内の単純な行を更新するために必要であり、データ マクロは最も新鮮な機能であると言えます。元の dbaseII の動作によく似ています。それらは非常にシンプルですが、テーブル レベルで実行されるため、非常に強力です。
たとえば、テーブルの在庫合計を維持するデータ マクロを次に示します。この例では、マスター在庫レコードが存在すると仮定します。そして、注文詳細テーブルがあります。ユーザーが注文テーブルの値を編集した場合、マスター テーブルで在庫レベルが自動的に更新されるようにします。
2 つのテーブルがあります。
tblFruits: main data fruit inventory table
id (autonumber)
Fruit text
OnHand (number value of fruit in inventory)
tblFruitsOrder
id (autonumber)
Fruit_id (FK to tblFruts.ID)
QtyOrder (number of fruit to order)
これは簡単なテストです
そのため、QtyOrder フィールドが編集または変更されたときに tblFruitsOrder の在庫レベルを更新および維持するトリガーを tblFruitsOrder に設定します。
マクロは次のようになります。
(出典: kallal.ca )
上記が非常に単純であることに注意してください。IDE でコードのセクションをクリックすると、コマンドの値を入力できる古いスタイルのマクロ タイプの編集が表示されることに注意してください (これは 2010 年より前の場合と似ていますが、現在はパラメーターと編集が以前のバージョンでは画面の下部に表示されるパネルではありません)。
これは、ループを実行してサブルーチンを呼び出す機能で遊んでいる別のスクリーン ショットです。
(出典: kallal.ca )
上記では、テーブル レベルのマクロではないため、msgboxs などを使用できます。そのため、通常のマクロとは対照的に、テーブル レベル マクロを作成すると、使用可能なコマンドが自動的に制限されます。2 種類のマクロを区別するために採用した用語は、UI マクロとデータ マクロです。
上記は、私が公の場で話すことができるすべてです。ただし、これらのマクロについては、まだ秘密保持契約を結んでいるため、まだ公開できない機能がいくつかあります。しかし、ここにはもっとクールなサプライズがあります。
以下は、テーブル トリガーの種類のスクリーン ショットです。
(出典: kallal.ca )
この新機能の詳細は、MS Access 開発チームのブログに本日投稿されました。上記のコメントで提起された重要な質問について、より多くの情報が確実に提供されます。