0

MicrosoftAccessでアプリケーションを作成しています。これは、顧客がデスクトップで実行する小さなデータベース用です。いかなる種類のネットワークも関与しません。データベースを使用するために必要なすべてのファイルは、単一のデスクトップコンピューター上にある必要があります。

アプリを段階的に顧客に提供したいと思います。ほとんどの場合、.accdbファイルを顧客に電子メールで送信します。更新を配信し、顧客がすでに入力したデータを維持するにはどうすればよいですか?更新には、フォームだけでなくテーブル構造の変更も含まれる場合があります。

私の元の質問に対する回答は、フォームやその他のUI要素の変更の問題に対応しています。ただし、既存のテーブルにテーブルを追加したり、列を追加したりする場合はどうなりますか?ユーザー側で可能な限り多くのデータを保持しながら、このような変更をシームレスに配信するにはどうすればよいですか?

4

2 に答える 2

3

データベースとインターフェースを別々のファイルに分割します。これはMSAccessアプリでは一般的であるため、Googleには十分な情報が必要です。

始めるためのいくつかのリソースは次のとおりです。

MicrosoftAccessでAccessデータベースを手動で分割する方法

アクセスデータベースの分割、ステップバイステップ

于 2012-07-07T18:08:13.670 に答える
2

データベースを2つの部分に分割する必要があります(!)。テーブルを格納するバックエンド部分(「データベース」)と、フォーム、レポート、クエリ、およびアプリケーションロジック(「アプリケーション」)を含むフロントエンド。テーブルをバックエンドからフォントエンドにリンクします。

フロントエンドには、制御パラメータ、レポートディクショナリなどのテーブルも含まれている場合がありますが、顧客が入力するデータはありません。

新しいバージョンのAccessには、データベース分割ウィザードがあります。

バックエンドを顧客サイトのフォントエンドに自動的にリンクするコードが必要になる場合があります。


アップデート

顧客のPCでデータベースのスキーマを変更する方法は2つあります。

1)DAO(またはADOX)オブジェクトモデルを介して更新を実行します。例えば

    Set tdf = db.CreateTableDef("tblNew")
    tdf.Fields.Append tdf.CreateField("fieldname", dbText)
    ...
    db.TableDefs.Append tdf

2)DDLクエリを使用する

    CREATE TABLE MyNewTable (
      ID AUTOINCREMENT,
      Textfield    TEXT(50),
      LongField    LONG,
      ...,
      CONSTRAINT PK_MyNewTable PRIMARY KEY (ID)
    )

または

    ALTER TABLE SomeExistingTable ADD COLUMN Newcolumn Text(50)
于 2012-07-07T18:14:47.947 に答える