2017-10-05 14 views
0

私は、MS Access用の複数のユーザー用のフロントエンドを作成する作業をしており、変更が必要な場合はフォームを更新する方法を考え出しました。基本的に私のVBAコードは、古い書式を削除し、新しい書式をインポートします(約10書式)。Microsoftフォーム更新システム

私のプロセスには1つの問題があります...新しいフォームをインポートするたびに、ユーザーにセキュリティ警告を受け入れるよう求めています。フォームが非常に多く、時には長くなることがあります新しいインポートが来るたびに、各自がインポートして受け入れるのを待ちます。

もっと論理的な方法がありますか? Accessには、フォームへの変更を検出し、それを別のデータベースに基づいて更新する機能が組み込まれていますか?

Private Function PullNewForms() 

    DoCmd.TransferDatabase acImport, "Microsoft Access", _ 
          "LOCATION", _ 
          acForm, "frmLogin", "frmLogin" 
    DoCmd.TransferDatabase acImport, "Microsoft Access", _ 
          "LOCATIONb", _ 
          acForm, "frmNewUser", "frmNewUser" 
    DoCmd.TransferDatabase acImport, "Microsoft Access", _ 
          "LOCATION", _ 
          acForm, "frmOptionsMenu", "frmOptionsMenu" 
    DoCmd.TransferDatabase acImport, "Microsoft Access", _ 
          "LOCATION, _ 
          acForm, "frmResetPassword", "frmResetPassword" 
    DoCmd.TransferDatabase acImport, "Microsoft Access", _ 
          "LOCATION", _ 
          acForm, "frmVendorMainForm", "frmVendorMainForm" 

End Function 

これを1行のコードにまとめることはできますか?

答えて

3

この現在の設定を再考してください。 フォームレポート、さらにモジュールなどのアプリケーションオブジェクトをインポートしてはいけません。このように破損やクラッシュが発生する可能性があります。あなたのユーザーの間では、より安定したバージョン管理システムが必要です。データのみを実際にインポートする必要があります。複数のユーザーにMS Accessのフロントエンドアプリケーションをデプロイするときに

は、次のことを考えてみましょう:

  1. は、各ユーザーが自分のローカルマシン上で実行するための独自のフロントエンドを与えます。
  2. その彼らができる共有ネットワーク上のすべてのアクセスをマスターのフロントエンドを保つが、直接、まだ分離アーキテクチャを維持し、使用することはありません:

    Split Architecture Diagram

  3. 各ユーザーに、独自のバッチファイル(.bat)を与えますデスクトップからダブルクリックするか、最新のMaster FrontEndをコピーして古いバージョンを置き換えることができます。

  4. 開発者は、テストとデバッグを行い、本番環境に展開する準備ができたら、新しいマスターフロントエンドとして置き換えるFrontEndコピーを作成してください。これは最初は難しいですが、あなた自身の変更を上書きする可能性があるので、マスターまたはローカルコピーの開発変更を行わないようにしてください。
  5. 最後に、新しいフォーム/レポート/マクロ/モジュールが変更されるたびに、利用可能なFrontEndをすべてのユーザーに通知し、バッチファイルをクリックして以前のバージョンを置き換えるようにします。

バッチファイル

(自動的に歯車のアイコンでダブルクリックして実行可能なスクリプトになり.txtファイルをデフォルトのメモ帳でテキストの下が、.BATファイルとして保存していない。各ユーザーに付与それに応じてローカルパスを仕立て、独自のバッチファイルと自分のデスクトップまたはどこ彼らのFrontEndのが配置されているに保存)

@echo off 

Copy "\\Server\Path\To\MasterFrontEnd.accdb" "C:\User\JaneDoe\LocalFrontEnd.accdb" /Y 

start "" cmd /c "echo UPDATE COMPLETE!&echo(&pause" 
+0

これは偉大な説明です、と私は考えを愛する...しかし、これは私が試したものでしたPA stと私はバッチファイルでネットワークドライブからコピーするときに問題がありました。私はこの問題をあなたのために再現できるかどうかを見ていきますが、残念ながら私は今オフィスにいません。来週火曜日までチェックすることはできません。 – Maldred

+0

これをcmdファイルとして保存してみてください。windows 10はこれらをうまく実行しますが、説明できない理由で.batファイルの問題があります。 – Minty

関連する問題