ユーザ用ツール

サイト用ツール


サイドバー

プログレス合同会社

広告

msaccess:distribute-and-launch

02.アプリケーションの配布と起動

Microsoft Accessで構築した業務アプリケーションの運用において、アプリケーションのバージョンアップ版の配布、データや業務ロジックの共有化をどのように行うか、弊社で採用している方法を紹介します。

データの共有化

これは、ほぼ皆さんも採用されているのではないかと思います。

データとアプリケーションのaccdbを分離して、アプリケーションaccdbではリンクテーブルとしてデータaccdb内のテーブルを参照するようにします。

msaccess:distribute-and-launch0101.png

Microsoft Accessデータ共有

データaccdbは、さらにマスターとデータをaccdbレベルで分離しています。

また、データaccdbもデータの属性等により、さらにaccdbレベルで分離しています。

データaccdbは共有されるため、必然的に社内共有ファイルサーバーに配置されることになります。

業務ロジックの共有化

業務ロジックの共有化は、共有するロジック(関数)をライブラリaccdbに作成して、アプリケーションaccdbからは『参照設定』でライブラリaccdbを参照して行います。

msaccess:distribute-and-launch0201.png

Microsoft Access業務ロジック共有

アプリケーションaccdbから『参照設定』でライブラリaccdbを参照します。

ライブラリaccdbのプロジェクト名.関数名(図では Library.BusinessYear())で関数を呼び出します。

ライブラリaccdbは共有されますので、社内共有ファイルサーバーに配置させたくなるのですが、後述するアプリケーションの配布の仕組みで、個人のローカルディレクトリに配置されます。
詳細は、アプリケーションの配布を参照してください。

アプリケーションの配布

バージョンアップされたアプリケーションを効率よく配布したり、共有されているライブラリaccdbをロック(使用中)であることを気にすることなく改修したりするため、弊社ではランチャー方式によるアプリケーション起動を採用しています。

msaccess:distribute-and-launch0301.png

Microsoft Accessアプリケーション配布

①ユーザーがランチャーアプリケーションを起動します
②ランチャーアプリケーションがライブラリaccdbをローカル環境にコピーします
③ランチャーアプリケーションがアプリケーションaccdbをローカル環境にコピーします
④ランチャーアプリケーションがローカル環境のアプリケーションaccdbを起動します

アプリケーションaccdbはローカル環境のライブラリaccdbを参照設定するようにしておきます。

共有ファイルサーバーにテスト済のアプリケーションやライブラリを配置しておけば、ランチャー方式により、ユーザーは最新のアプリケーションやライブラリを使用して業務を行うことができます。

ローカル環境のアプリケーションを起動する際に/CMDスイッチにより、実行する際に必要なパラメーターを与えていますので、ランチャーアプリケーションを切り替えることにより、管理者モードで起動したりすることも可能です。

ランチャーアプリケーションサンプル

ランチャーアプリケーションのサンプルは下記になります。

ランチャーアプリケーションとアプリケーションのファイル名は同じにしておきます。

共有ファイルサーバーはX:にマウントされ、AccessのアプリケーションはX:\AccessApplicationに配置されているものとします。

ローカル環境はC:\AccessApplicationフォルダーを作成し、Accessのオプションセキュリティセンター信頼できる場所に登録しておきます。

Option Compare Database
Option Explicit

Private Const PUB_BASE_DIR   As String = "X:\AccessApplication"
Private Const PUB_APP_DIR    As String = PUB_BASE_DIR & "\System"
Private Const PUB_LIB_DIR    As String = PUB_BASE_DIR & "\Lib"
Private Const LOCAL_BASE_DIR As String = "C:\AccessApplication"
Private Const LOCAL_APP_DIR  As String = LOCAL_BASE_DIR & "\System"
Private Const LOCAL_LIB_DIR  As String = LOCAL_BASE_DIR & "\Lib"

Public Function AutoExec()
Dim strPubLibFile As String
Dim strPubAppFile As String
Dim strExeLibFile As String
Dim strExeAppFile As String

  With CreateObject("Scripting.FileSystemObject")
    ' ローカル環境内のライブラリフォルダが存在しなければ作成します
    If .FolderExists(LOCAL_APP_DIR) = False Then .CreateFolder LOCAL_APP_DIR
    If .FolderExists(LOCAL_LIB_DIR) = False Then .CreateFolder LOCAL_LIB_DIR
    ' ライブラリaccdbをローカル環境へコピーします
    strPubLibFile = PUB_LIB_DIR & "\Library.accdb"
    strExeLibFile = LOCAL_LIB_DIR & "\Library.accdb"
    If .FileExists(strExeLibFile) Then .DeleteFile strExeLibFile
    .CopyFile strPubLibFile , strExeLibFile
    ' アプリケーションをローカル環境へコピーします
    strPubAppFile = PUB_APP_DIR & "\" & CurrentProject.Name
    strExeAppFile = LOCAL_APP_DIR & "\" & CurrentProject.Name
    If .FileExists(strExeAppFile) Then .DeleteFile strExeAppFile
    .CopyFile strPubAppFile , strExeAppFile
  End With
  ' アプリケーションを起動します
  Shell Application.SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE" _
      & " " & strExeAppFile & " /cmd" & CurrentProject.Path
End Function

実際のコードにはエラー処理が記述されています。
msaccess/distribute-and-launch.txt · 最終更新: 2024/08/09 by 127.0.0.1