Access 2013 / 2010 の マクロエディタ / Logic designer 上で値を設定しようとするとき、文字数の制限を受けることがある。
MSアクセスマクロWhere条件式に256文字制限UI のバリデーションで先に進めないのですが、文字数制限を突破することが可能な場合はある。
MSアクセスマクロWhere条件式に256文字制限UI のバリデーションで先に進めないのですが、文字数制限を突破することが可能な場合はある。
"OnError/エラー時" マクロ アクション
通常、先頭に書くことが多いのだろうけど途中に記述するのもかまわわない。マクロアクションが実行された後についてエラー時にどうなるかを宣言するということ。
使い方はいたって簡単。ちょっと置いといて的な値があるとき使う。
値は "式引数" で設定するから、文字列や日付時間である場合それなりの手続きで設定すればよい。
マクロ の作成/更新中にほかのマクロの参照ができる。
検索にも対応してるので、ささっと同じ処理や似た処理のマクロを記述できるという仕掛け。
サブマクロがUI上では保存されているのだけど、実行可能な状態になっていないことがある。おそらくパーサが原因でしょう。ただし、影響を受けることはわずかだ。
たとえば、この状態で保存されているマクロなのだが、サブマクロとして認識できないものがある。確認してみる。
マクロ名をそのマクロ自身が知るためにはどうしたらよいのでしょうか? そんなこと考えたことはないですか?私はありません。
でも、マクロ名ゲットだぜぇっ!
夢が広がるよね。そう思える想像力豊かな人もしくは多少のことは気にならない心穏やかな人以外は、この先読む資格がありません。ちなみに私は大雑把な性格です。
大してややこしいことではないのだけど。たとえば、
PARAMETERS Param01 Long; SELECT ID, Field1, Field2 FROM Table1 WHERE ID = [Param01];こんな クエリ があったとして、この クエリ を開く マクロアクション はこうなる。
パラメータ 句が解析されて入力できるようになる。VBA だと DoCmd.SetParameter ということ。ただ、少し注意しておくことがある。
マクロアクション:[値の代入]がない!なんて言わないの。
Unsafe Actionのひとつなので表示されていないだけ。
| "すべてのアクションを表示"を押下すると表示される。 |
実行したい内容によっては、マクロアクション:[プロパティの設定]を使ったほうがよいし、存在を知らないというのはよくない。
Access 2010 からマクロ ビルダーがガラッと変わっていて戸惑うことが多いのでしょう。まぁそれ以前に グリッドで表現されてた以前のバージョンよりは使いやすいのでいいんじゃないかなと。
ビデオ: マクロ ビルダーの概要
ビデオにない操作方法についてのメモ
各フォーラムでもけっこうあるあるトピックだし、できれば以前のファイル形式をを使わないでおきたいかなと思う次第。ないものは仕方がない、似たものを実装するしかないわけで。
起動時にユーザ名とパスワードを照合するってことは、ユーザ情報テーブルからユーザ名 And パスワードを条件にすればよいからまぁよいかなと思う。あとはフォームであるとかコマンドボタンの制御をどうしていくかなって感じ。
そこで、例としてコマンドボタンの使用可否をユーザ毎に操作してみようと考えた。
できるだけマクロで、定義域集計関数を使わずに、できるだけAccess2010もしくはAccess2007の機能を使いつつ。
なにはともあれ、こんな感じのコマンドボタンを制御していくことにする。名前は判りやすいようにしているけれども、見ての通りビット演算でさらっと処理予定。
この件の修正がSP1に含まれていないのでしばらくの間はFAQになってしまうんだろうなと。で、対応としてVBAで実行すればいいじゃないとなるのだけど、マクロのままでなんとかならないのかということだった。マクロだけで簡単に対応できるよっていう話。意外と知らない人が多いんだなぁと。
| ナビゲーションウィンドウのカテゴリドロップダウン |
Sub SetNaviCategory()
DoCmd.SetDisplayedCategories 0, "acNavigationCategoryObjectType"
DoCmd.SetDisplayedCategories 0, "acNavigationCategoryTablesAndViews"
DoCmd.SetDisplayedCategories 0, "acNavigationCategoryModifiedDate"
DoCmd.SetDisplayedCategories 0, "acNavigationCategoryCreatedDate"
DoCmd.SetDisplayedCategories 0, "ユーザー設定"
End Sub
Private Sub Form_Dirty(Cancel As Integer)
DoCmd.SetProperty Me.フィールド3.Name, acPropertyValue, Now()
End Sub
Private i As Integer
Private Sub Form_Dirty(Cancel As Integer)
DoCmd.SetProperty Me.フィールド1.Name, acPropertyValue, 1234
i = i + 1
Debug.Print i '73までカウントした
End Sub
メニューコマンドの実行/閉じるを使う。もしくは
Option Compare Database
Option Explicit
'msoBarPopup=5
'msoControlButton=1
Sub CreateSC01()
Dim cb As Object
On Error Resume Next
CommandBars("testSC").Delete
Set cb = CommandBars.Add("testSC", 5, False, False)
With cb.Controls.Add(1, 15948)
.Caption = "PrintDialogAccess"
End With
With cb.Controls.Add(1, 923)
.Caption = "PrintPreviewClose"
End With
With cb.Controls.Add(1, 14782)
.Caption = "CloseDocument"
End With
With cb.Controls.Add(1)
.Caption = "メニューコマンドの実行:閉じる"
.OnAction = "reportshortcut.メニューコマンドの実行閉じる"
End With
With cb.Controls.Add(1)
.Caption = "メニューコマンドの実行:ウインドウを閉じる"
.OnAction = "reportshortcut.メニューコマンドの実行ウインドウを閉じる"
End With
With cb.Controls.Add(1)
.Caption = "ウインドウを閉じるアクション"
.OnAction = "reportshortcut.ウインドウを閉じるアクション"
End With
Set cb = Nothing
End Sub