フォームにサブフォームを埋め込み、 そのサブフォームが条件検索するごとに定義し直されるクエリーをレコードソースとしている場合、 ReQueryでは検索結果が反映されないため、レコードソースを再定義することでこれを実現する。
Me!FormSub.Form.RecordSource = strQuery
FormSubは親フォーム上でのサブフォーム名、 strQueryはstring型の変数で、レコードソースとなるクエリ名が格納されているものとする。
長いテキスト型やメモ型のフィールドの値を入力させるテキストボックスを、 画面のサイズ制限上、やたら大きくするわけにいかない場合、 ズームボックスを使えるようにすると便利だ。
'--------------------------------------------------
' Function : gfnc_ZoomBox
' ZoomBoxの利用
'--------------------------------------------------
Public Function gfnc_ZoomBox() As Boolean
DoCmd.RunCommand acCmdZoomBox
End Function
フォームのダブルクリックイベント等に、作成したgfnc_ZoomBoxを記述して完成。
フォームを最大化表示すると、大きなモニタではコントロールが全て左上に寄ってしまってなんとなく不恰好である。
よって、フォームを開いたときに常に基準のサイズで表示する、
あるいはレポートを最大化表示した直後にフォームにフォーカスを戻しても、
フォームが最大化表示にならないようにする。
'--------------------------------------------------
' Function : gfnc_Restore
' 元の大きさに戻す
'--------------------------------------------------
Public Function gfnc_Restore() As Boolean
DoCmd.Restore
DoCmd.RepaintObject
End Function
フォームのアクティブ化イベントに、作成したgfnc_Restoreを記述して完成。
Access + Jet + DAO。
データも一万件を超えるようなテーブルをトランザクションかけてレコードセットで処理する場合、
「ファイルの共有ロック数が制限を超えています」みたいなエラーが出ることがある。
これを回避する方法は、レジストリをいじるか、共有ロック数を一時的に増やすかである。
'---< EXTEND FILELOCK >
DBEngine.SetOption dbMaxLocksPerFile, 30000
上記のコードをBeginTransの前に記述する。
Microsoftの技術情報では、
[ACC2003] [PRB] 多数のトランザクション処理中に "ファイルの共有ロック数が制限を超えています" エラーが発生するを参照。