2013/04/28

Office 365 Access アプリ -28- ポップアップを表示する マクロ アクション

 "ビューの変更 / ChangeView" マクロ アクションと似ているので、その違いなど中心をメモ
OpenPopup Macro Action (Access 2013 custom web app) (まだ、英語)

  条件(Where) / 並び替え(Order By) 引数は、"ビューの変更 / ChangeView" マクロ アクションと同じ仕様。ビュー(View) 引数はすべてのビューから選択できるのが違う点。 

Office 365 Access アプリ -27- ビューの変更 マクロ アクション

Where 条件式の記述がすんなり頭に入らなかった。
ChangeView マクロ アクション (Access 2013 カスタム Web アプリ)

  ビュー名は当然なのだけど、テーブル名も必須なのである。"ビューの変更 / ChangeView" マクロ アクションでは、テーブルに紐づけられた"ビュー"のみ指定できる。ポップアップでのみ使用する独立したビューは指定することができない。
  テーブル(Table) / ビュー(View) / 並び替え(Order By) 引数は文字列、Where 引数のみ式引数になる。条件引数の記述がうまくいかないなぁということが多いかもしれない。

Office 365 Access アプリ -26- 変数の設定 マクロ アクション

レファレンスには"一時変数"とされているけど、変数自体を任意に削除する方法はありません。
SetVariable マクロ アクション (Access 2013 カスタム Web アプリ)

  当たり前ですが、
  • 変数名を指定する"変数 / Variable"
  • 代入する"値 / Value"(式引数)
は必須です。"値 / Value"は式引数なので、UI マクロで使用できる関数で演算した結果を代入することも可能。

2013/04/27

Office 365 Access アプリ -25- マクロの中止 マクロ アクション

"マクロの中止 / StopMacro"は、データ アクションとマクロ コマンドのそれぞれにある。

  役割としては実行しているデータ マクロもしくは、UI マクロを中止するというところが同じ。
  • "マクロの中止 / StopMacro" マクロ コマンド (UI マクロ)
  • "マクロの中止 / StopMacro" マクロ アクション (データ マクロ)
ポップアップの内容はどうでもいい。
  だが、データ マクロ上で使用する場合がある"マクロの中止 / StopMacro" マクロ アクションは COMMIT TRAN を実行してデータ マクロを終了する。別な表現、するべきところであれば COMMIT して終了する。

Excel VBAの書籍を読んでいます。

勉強させてもらいます。○┐ペッコリ
Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応
 VBAアクションゲーム?Excel(エクセル)で動かそう! の近田さん(Excel MVP)の著書です。

Office 365 Access アプリ -24- 外観の変更

Access アプリの全体的なデザインはサイトのテーマに依存する。

  デフォルトの設定では、"Office"となっていてすっかり見慣れた配色なのだけど、サイトの設定でテーマ / 配色 / 背景をカスタマイズするという感じ。


2013/04/21

Office 365 Access アプリ -23- テーブル イベント サンプル2

テーブル イベントを利用したサンプル。

  [エラーの生成 / RaiseError] マクロ アクションを使用することで例外をスローし、レコードの操作をロールバックさせることも可能。Access アプリの各ビュー上での操作でも特段のマクロ記述なく実行されるので、過度なものは論外として普通に使っていくものだと思う。


  テーブル:在庫にアイテムの在庫数が記録されていて、テーブル:出庫に出庫数に関するレコードを挿入することで、在庫数を更新するのが主なシナリオ。レコードが挿入されるときの在庫数によって異なるアクションを実行するロジックも含める。

Office 365 Access アプリ -22- テーブル イベント サンプル1

3種類のテーブル イベントを使用するよく見かけるサンプル。証跡を記録。

 フィールド:Field01を持つテーブル:table01の
  • レコードの挿入
  • フィールドの更新(更新前後の値)
  • レコードの削除
を、それぞれのテーブル イベントで別のテーブルに記録を行う。

こんな感じのものを記録していくサンプル

Office 365 Access アプリ -21- テーブル イベント 更新時

更新時テーブル イベントを用いてレコードが更新された日時を記録する。

  すでにレコードの更新日時を用意してある。

  ただ、これだと問題がある。

Office 365 Access アプリ -20- テーブル イベント 挿入時

データ マクロに続いてテーブル イベント。まずは"挿入時 / OnInsert" テーブル イベント。

  テーブルイベントは、
  • 挿入時 / OnInsert
  • 更新時 / OnUpdate
  • 削除時 / OnDelete
の 3種類。記述したマクロ アクションは、SQL Azure データベース上の DML トリガー(After トリガー)に変換されそれぞれのイベントで実行されるストアド プロシージャということ。
DML トリガー : MSDN
  レコードが挿入された時間を保存するフィールドを用意。

2013/04/15

Office 365 Access アプリ -19- 照合順序を変更する

Office 365 / Access アプリで使用される SQL Azure データベースの照合順序を変更するチャレンジ。結果としては実現していると思われるのだけど サポートされる方法ではないと思う。

  データベースの照合順序はAccess アプリを作成した時点の[サイトの設定]→[地域の設定]の内容が採用される。再確認していないが、[並び替え順序]が"日本語"になっていれば、"Japanese_XJIS_100_CI_AS_KS_WS"となっているはず。そもそも照合順序が違う事態にならなければよいのだけれど、そうもいかない場合もある。素敵な サンプル アプリがあってもそれが en-US な Access アプリであれば作成された時の照合順序が使用されてしまうから、おそらく"Latin1_General_100_CI_AS_KS_WS"になるはず。
  この Access アプリを Office 365上だけで使用する分には大きな影響はなくてそこそこ問題なく使えるはず。レコードをソートしたときの順序が異なる場合があるくらいだろうか。ただし、デスクトップ上のAccess ファイルから直接 SQL Azureに接続した場合には、デスクトップ上のクエリでの抽出結果は意図しないものになる場合などがある。どうしてもこれを避けたいとして、SQL Azure データベースの照合順序を変更するときどうすればよいか調査を行った。

2013/04/12

Office 365 Access アプリ -18- データマクロ エラーの生成

エラーの生成 / RaiseError マクロ アクション を確認してみる。


  エラーの説明 / Error Description のみを引数として、データ マクロ で UI にメッセージを表示させる唯一の方法なのである。SQL Azure上ストアドプロシージャに変換される内容は、
TRY ブロック内で、THROW 50000, N'エラーがスローされます', 1 となる。実行後、CATCH ブロックに移り、マクロトレースなどに関する処理を終え、再スローされる。例外をスローだな。なんかへんだなと思ってた
  ただ、使用については気を付けておくことがある。

Office Cumulative Update for April 2013

定例の更新です。

  Access については、1 件。Cumulative Update for April 2013
  [外部データ]タブを選択して、データベース を閉じるか、新規 データベース を作成しようとするとAccess が クラッシュ する件。まぁ、クラッシュ はダメだわな。C2R 環境に対してはそのうちやってくることでしょう。

 別件、
で、mscomctl.ocx / MS12-060 に関連した アップデート が先月でているから、使っている人は見ておいたほうがいい。

2013/04/06

Office 365 Access アプリ -17- 起動時マクロ

起動時マクロ/On Start Macro は、Access アプリ が起動する時のみ実行されるマクロ。


  当然、Access アプリ に起動時マクロ はひとつだけ。

この場合、起動のたびにユーザ名が表示される。

2013/04/01

Office 365 Access アプリ -16- データマクロ レコードを挿入する

データマクロで新規レコードを挿入する。ちょっと小細工。


  データマクロでテーブルにレコードを挿入する場合、レコードの作成/CreateRecord データブロックで追加すればよい。だけど、ユニークインデックスであるとかの理由によって挿入できない時がある。

盛大にアラートが出る。
  あらかじめ想定できることは対処しておく。