【マスタ関連テーブル定義の標準化】
各種テーブルを作成する場合、下記の必須フィールドは必ず設定します。
【テーブル定義の必須フィールド】
各テーブルに必ずつけるレコード改変履歴項目
テーブル名はマスター関連の場合記号「◆」を先頭に名付けする。
例:消耗品の品名/型式/納入価格/納入業者などの在庫管理データに利用するマスターとして下記のような内容でテーブルが登録される
テーブル名:◆消耗品マスター
消耗品区分
製品名
製品名かな
単位
発注閾値
登録日
登録時間
登録者
登録ID(主キー設定)
フォームで直にテーブルの内容を変更する際は、ダーティ時のイベントプロシージャに以下の処理を入れておく事により誰が何時変更したのか記録出来る。
テーブルのデータ変更は通常管理者権限F=Trueとなっているユーザーだけに限ります。
Private Sub Form_Dirty(Cancel As Integer)
登録者 = Parent!利用者名
登録日 = Format(Date$, "yyyy-mm-dd")
登録時間 = Format(Time$, "hh:nn:ss")
End Sub
【目次フォームの共通化】
目次フォームはどのツールでもVBAを変更せずとも使用できるフォームオブジェクトです。
フォームのサイズは画面の解像度に合わせてフルサイズで作成します。テキストボックスのサイズをウィンドウのサイズに合わせて自動的に調整 するアンカー機能は利用しません。
目次フォームは以下のフォームがセットで動作します。
U000_目次_FM(U000_目次_FM_SUBF01/U000_目次_FM_SUBF01_可変/U000_目次_FM_SUBF01_固定/U000_目次_FM_SUBF02)
U997_自動終了_FM(システム設定で指定した時間が来るとAccessを終了させる為の監視フォーム)
U998_開始画面_FM(バージョンアップ等チェックや利用者マスタに登録してあるかどうかチェックします)
U999_終了画面_FM(本ツールの利用状況をデータベースに書き込みしたりライセンス期間の確認をします)
U997~U999は不可視フォームです。
【マスタ関連フォームデザインの標準化】
【固定データシートフォーム】
①~⑦はどの画面でも共通フォームでデザインとなります。
①のフォーム見出しの色、⑤のコマンドボタンの形状はシステム設定(拡張)て変更可能です。ひな型フォームがあるのでそれを流用し業務用フォームを作成します。
管理者権限をないエンドユーザーは⑧の「一覧編集」ボタンは表示されません。終了ボタンは別フォームでも同じ位置にしています。
下図は固定テーブル(どのテーブルを表示するのか決められている場合)のフォームです。
【マルチデータシートフォーム】
下図のフォームは上図のようにテーブル毎にフォーム画面を作成するのではなく、サブフォームに指定したテーブルのテーブル情報を反映させて情報の修正等を行う画面となります。
個々の項目に対して特別な処理が必要でない場合、データの更新・追加・削除等の処理は下図のフォームだけで事足ります。
テーブルのフィールド名/データ型に合わせて文字位置を変更しています。但し、登録日/登録時間/登録者は文字位置を中央にしています。(システム設定)
また、見出しマスタに登録すると表示する順番、非表示にするもの、列幅の指定、文字位置等も細かく指定が出来ます。エクセルに出力する際は、フィルター付きのシートとして出力されシート名にAccessのテーブル名を設定しています。
①のサブフォームの「+」をクリックすると③で表示されるようにエクセルに出力する際のパラメータが表示されます。①のレコードセレクタをダブルクリックすると④のように②のサブフォーム内容が置き換わります。
上記表示の処理方法は二通考えられます。
テーブル毎にサブフォームを作成しておいて④のサブフォームのObjectsourceと置き換える方法
ベースとなるサブフォームに表示させるテーブルの最大項目数を備えたものを作成し、名前、データソースを置き換えて表示させる方法です。例:④
「iMenuA」では2の方法を採用しています。
データソースには何も設定はしません。①のサブフォームをダブルクリックしたイベントプロシージャは以下の通りです。
VBAの処理内容
①の一覧にテーブルが存在しているかどうか確認
②のサブフォームは⑤のサブフォームに.SourceObjectで置き換えます。
フィールド名は100個まで対応しているので名前を置き換えていきます。
データシートビューの場合、フィールド名の無いものは、.Visible=Falseではなく.columnHidden=Falseを使います。
既定のビュー:データシートの場合、非表示にさせたい場合は.columnHidden=Falseを使います。規定のビューが:フォームの場合はVisible=Falseでよいのですが、場所を自動的に詰めてはくれませんので、表示方法はデータシートとなっています。
フィールド名とデータの代入が終わったら、列幅の自動整列を行います。
自動整列はフィールド名に特定の文字があった場合、固定(4000)に設定しています。命令文は.ColumnWidthです。
1論理cmは567twip」です 。
値に「-1」の場合、既定の幅
値に「-2」の場合、表示されている文字の一番長いものに合わせます。(表示されているものに限ります。)
見出しの並び順はクエリー又はテーブルの並び順になります。見出しマスタに登録する事によりより詳細な表示方法がとれます。
左図の見出しマスタはデータシートで表示する方法を登録する画面です。
データ型により文字位置を左、中央、右の設定や、固定で列幅を設定が可能です。「-2」を列幅にする事により表示されているデータの一番長いものに合わせて列幅を自動調整します。
但し、スクロールして表示されているものより長いものは文章の途中で切れます。そのような場合は、固定(例:4000)指定する事により文字の長さによらず常に指定幅で表示されます。
表F:表示はチェック、非表示はチェックを外します。
固F:データシートを右にスクロールしてもこのチェックが入ってい
る列は動きません。但し、固定列は常に左端にくるので列順番
は自動的に先頭列から使用されます。
基本的に数値は右端、文字は左端となっています。
システム設定より特定の見出し文字を設定すると文字位置を中央にする事が出来ます。
緑色になっている行は、主キー設定がされている見出しになります。
このマスタはデータ空でも設定のみ可能です。
テーブル構造を読込み、データがある場合に表示/非表示/列幅/列順等を設定するマスタとなります。
利用している標準モジュールは以下となります。
GetColumnList(ExtensionSystemTitleName, strMainFrmName, TargetFormName, TargetTBLName)
↑ 見出しマスタの登録を確認する(データシートが固定テーブルの場合)
GetColumnListFree(ExtensionSystemTitleName, FMSsymbol, TBLName, strMainFrmName, TargetFormName, TargetTBLName)
↑ 見出しマスタの登録を確認する(データシートが決まっていないテーブルの場合)
DataSheetMatrixAdjustment(strMainFormName, strSubFormName, ClmHeight, strCenter)
strMainFormName(strMainFrmName):メインフォーム
strSubFormName(TargetFormName):サブフォーム
TargetTBLName:データシートのテーブル名
ClmHeight:データシート高(システム設定にて設定)
strCenter:文字位置中央にする見出し文字(システム設定にて設定)
【利用者マスタ保守画面】
マスター保守画面で特殊なマスタです。このシステムを利用するにはWindowsログインユーザー名とMACアドレスの事前登録が必要です。
ログインユーザー名だけでは他の端末からは最初の段階で弾かれます。(システム終了します。)
フォーム下の方は自動起動Formはこのシステムを開いた際にいつも使うフォームを目次画面と一緒に起動する設定画面です。
一般ユーザーでもこの画面は表示可能ですが、ユーザー登録のボタンは管理者権限がないと表示されません。(一覧編集ボタンも表示されません。)
一般ユーザーで登録出来るのは自動起動Formの設定に限られます。