2

私がしようとしているのは、プログラムで Microsoft SQL Server から Microsoft Access にいくつかのテーブルをインポートすることです。

各 SQL Server テーブルには ID 列があり、対応する Access テーブルには autonumber 列もあります。

ここで、SQL Server から Access にデータをコピーする SQL スクリプトを生成し、自動番号の列を SQL サーバーと同じ値にします。

これは可能ですか?

Access から SQL Server へ逆に行う場合は、SETIDENTITY_INSERT [MyTable] ON以降を使用するとかなり簡単SET IDENTITY_INSERT [MyTable] OFFです。

Microsoft Access にはそのような記述がないことがわかりました。

さらに、最初にIDフィールドをタイプとしてインポートするAccessテーブルを作成し、LONG後でALTER TABLE ... ALTER COLUMNステートメントを使用して自動番号付けに切り替えようとしました。私はそうすることに失敗しました。

だから私の質問:私の目標を達成する方法はありますか?

4

3 に答える 3

5

Insert IntoMS Access ですべての列名を使用して指定すると、機能するはずです。

次の構造のテーブルを作成しました

Id (autonumber)
Firstname (text)
Secondname (text)
Lastname (text)

私はこの声明を実行しました

docmd.RunSQL "insert into table2 (id, firstname, secondname, lastname) values (27, 'a', 'b', 'c')"

それは機能し、自動番号列に27を挿入しました

于 2010-07-30T18:35:53.730 に答える
3

MS Access データベースで SQL Server テーブル (リンクされたテーブル) と MS Access テーブルの両方を表示できると仮定すると、コードを使用せずにそれを行う手順を次に示します。これらの手順は Access 2013 用であるため、インターフェイス要素は移動していますが、これは 2003、2007 などでも機能するはずです。

インポート先の Access テーブルには、データが含まれていない必要があります。

  1. すべての Access オブジェクト (テーブル、クエリ、レポートなど) を閉じます。
  2. リボンの[データベース ツール]をクリックします。
  3. オプション: [圧縮して修復] をクリックします (これにより、空のテーブルのオートナンバー カウンターが 0 に戻ります)。
  4. メニューの[作成] をクリックします。
  5. リボンの[クエリ デザイン]をクリックします。(テーブルの表示ダイアログが開いています)
  6. SQL Server ソース テーブルをクエリに追加します。
  7. [テーブルの表示] ダイアログを閉じます。
  8. リボンの[クエリの追加] ボタンをクリックします。
  9. データをインポートするAccess テーブルを選択し、[OK] をクリックします。
  10. SQL Server テーブルで、インポートするフィールドをダブルクリックする*か、すべての列名が一致し、すべてのフィールドをインポートする場合はフィールドをダブルクリックします。
  11. 以下の追加クエリに追加される各フィールドについて、すべてのフィールドが Access テーブルのフィールドにマップされていることを確認します。そうでない場合は、各フィールドの [追加先] 属性で、SQL Server からデータを受け取る Access のフィールドを選択します。
  12. リボンの [実行] ボタンをクリックします。

Access は、追加しようとしているレコードの数を通知します。この情報を使用して、すべてのデータを取得していることを確認できます。

テーブルを同期するために再度使用する必要があると思われる場合は、このクエリを保存できます。

凝り性を加えたい場合は、アクセス テーブル内のすべてのレコードを削除する削除クエリを作成してから、次の順序ですべてを実行するマクロを作成できます。

  1. レコードを削除する
  2. データベースの最適化と修復
  3. SQL Server からのインポートの実行
于 2013-10-11T13:26:45.967 に答える