8

Access データ マクロをテスト データベースから運用データベースに転送する必要があります。誰もそれを行う方法を知っていますか?

ある accdb から別の accdb にテーブルを転送すると、データ マクロも転送されることはわかっていますが、私の場合、それはオプションではありません。また、運用 accdb で手動で再作成できることもわかっていますが、それではエラーが発生する可能性があり、スクリプトによる転送シナリオよりも長時間運用データベースを停止する必要があります。

1回で済めば大したことはないのですが、開発中は何度もやらなければなりません。

テーブルを xml にエクスポートしようとしましたが、データ マクロが含まれていません。

ここでは、通常の Access マクロではなく、 Access 2010データ マクロについて質問していることに注意してください。

4

5 に答える 5

10

文書化されていない VBA 関数のペアを試してみることをお勧めします。

輸出する:

SaveAsText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml"

インポートするには:

LoadFromText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml"
于 2012-10-27T20:46:51.633 に答える
6

Martijn Pieters '/ Lanik の回答 (Martijn と Lanik に感謝) を拡張するには、28 の異なるテーブルに実質的に同じデータ マクロを作成する必要がありました。だから、私は SaveAsText コマンドを使用しました

SaveAsText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml"

テンプレートを作成し、そのテンプレートを使用して、テーブル名、主キーなどを置き換えて、小さな vba コードを介して 28 個の xml ファイルを作成しました。28 個の LoadFromText コマンドも作成しました。その後、LoadFromText コマンドを使用して、繰り返し可能なプロセスですべてのマクロを一度にロードできます。テストが完了したので、この方法で本番データベースをすばやく更新したり、同じデータ マクロを他のテーブルに簡単に追加したりできます。

他の人が知っているように、LoadFromText は以前のマクロをすべて上書きします。最初の試行でテンプレートが正しくなかったので、これは素晴らしいことです。

上記を考慮して、次のステップは、「アップデーター」データベース アプリケーションで DoCmd.TransferDatabase コマンドを使用して、すべての LoadFromText コマンドを含む関数/サブモジュールを Data .accdb に転送することです。関数/サブを実行するマクロも転送する必要があります。アップデーターにマクロを実行させてデータ マクロをロードしようとしましたが、アクセス セキュリティがそれを妨げました。そのため、ユーザーにデータベースを開いて有効にしてから、マクロを実行する必要がある場合があります。これは、データ マクロを直接編集できる場合よりも複雑ですが、問題を解決する回避策を提供します。

于 2013-04-27T16:20:28.443 に答える
3

私はここで素晴らしい答えを持っていません。

しかし、以前はテーブルに変更を加えた「ログブック」を作成し、それを現場で簡単に使用していました。

マクロコードをカットアンドペーストできることに注意してください。そして、コードはXMLとして保存されます。

たとえば、テーブル更新後のトリガーは、Accessでは次のようになります。

ここに画像の説明を入力してください

上記(ctrl-a、ctrl-cc)を切り取った場合は、それをメモ帳に貼り付けることができます。実際、Visual Studioや任意のxmlエディターで貼り付けて開くこともでき、次のように表示されます。

ここに画像の説明を入力してください

したがって、これらのマクロを切り取って貼り付けることができます。

前述のように、このように過去には、変更の「ログ」を保持することがよくありました。

したがって、オフサイトで作業していて、2つのコードモジュール、4つのフォーム、2つのレポートを変更した場合、変更のログが少しありました。このシートに、どのオブジェクトが変更されたかを入力します。

現場に着いたら、そのシートを一目見ただけで、3〜5個のオブジェクトをインポートできることがわかりました。このようなインポートは、ほんの数分で完了します。

ただし、テーブルトリガーとストアドプロシージャを使用すると、コピーする数が少なくなる可能性があります。

私は次の2つのいずれかを行います。

ログのアイデアを使用して

a)開発バージョンの公開を解除し、それを私と一緒に作業サイトに持ってきてください。次に、新しいフォームやレポートなどをインポートします。トリガーコードの場合、2つのアプリケーション間で切り取りと貼り付けを行います。

b)トリガーに変更を加えたら、メモ帳のドキュメントにカットアンドペーストして、ディレクトリに配置します。現場にいるときは、各メモ帳を取り出して本番環境にカットアンドペーストしてから、メモ帳アイテムを「完了」フォルダに移動またはコピーします。

上記は確かに理想的とは言えません。また、過去にも、テーブルの変更をスクリプト化するコードが常にあるとは限らず、小さなログシートを使用すると非常にうまく機能しました。

そのため、過去には、そのようなテーブルが変更されたことを書き留めて、そのような列を追加する必要がありました。

したがって、マクロコードをxmlとして切り取って別の小さなドキュメントに貼り付けるか、開発から本番環境に切り取って貼り付けるかは、本当にあなたの選択です。

別の場所で作業している場合は、開発バージョンを非公開にして、それを持参するのが最善だと思います(Webアプリケーションの未公開のコピーを作成できることを知っている/認識していると思います) 。

したがって、フォーム、コードモジュール、マクロなどはかなり簡単にインポートできます(フォームなどを削除し、その未公開のコピーからインポートするだけです)。

しかし、テーブルコードについては?未公開のコピーから一度に1つずつステージング領域にカット+ペーストするか、前述のようにアプリケーション間でカット+ペーストする必要があります。

ここで[名前を付けて保存]テキストが機能する可能性がありますが、より良い解決策を作成する時間がまだありませんでした。

編集:ちなみに、上記ではWebサービスデータベースを想定しましたが、アドバイスはWebAccess以外のデータベースにも当てはまります。

于 2012-02-09T08:46:00.673 に答える
0

マクロを右クリックして、マクロExportを受け取るデータベースを選択します。

于 2016-11-18T22:47:06.360 に答える