現在Accessで組まれているデータベースがあるのですが、複数人で入力をする必要が出てきたため、SQL Serverへ移行したいと思っています。
ただ、まだデータベースの内容が完全にFIXしておらず、項目に変更や追加が発生する可能性があります。

そこで、
●Accessを管理画面として使い、
●Access上で内容を変更したら、システム全体もその通り変わる
ような仕組みを作りたいのですが、可能でしょうか。
(完全にSQL Serverへ移行するのではなく、AccessとSQL Serverを連携させる?)

よき方法がありましたら教えて頂けましたら幸いです。
ちなみにコストはあまり大きくはかけられません・・。
どうぞよろしくお願いします。

(※私はシステムはど素人なので、なるべく簡単に教えて頂けたら嬉しいです。なお、説明がおかしなこともあるかと思いますがご容赦ください。)

このQ&Aに関連する最新のQ&A

A 回答 (5件)

>※私はシステムはど素人なので、なるべく簡単に教えて頂けたら嬉しいです。



でもやることは十分玄人の領域な気が…。なので簡単に、は不可能でしょう。
以下、#1さんと同じように、AccessファイルからSQLServerへデータ読込、書込する環境を構築することを目指します。違うのは概要だけ。#1さんはきちんとシステムを構築する方法を書かれていますが、私は概要だけ。なんで概要だけかは後述。

(1)SQL Server Expressをダウンロードして、サーバー(もしくはサーバーに見立てたPC)にインストール。
(2)Accessのテーブルを(1)のSQL Serverに作成。
(3)ここからはPC側の作業
(4)ODBC接続を作成
(5)現行のAccessに(4)を使ってリンクテーブル作成。
(6)(5)のAccess内のクエリ、フォーム、レポートなどを必要に応じた修正を行う。
(7)動作確認
(8)各PCにODBC接続を設定&Accessファイルを配布。

概要はここまでです。如何でしょう、ご自分でできそうですか?

作業の概要はこの通りなんですが、サーバー機の選定とか"細かい"作業はかなり省略…というか書いてません書けません。特に(6)は実際にAccessファイルを見ないときっちりアドバイスはできませんし、作業ボリュームや難易度も見えてきません。…ということで(業者への発注は想定外のようですがw)業者も見積には難渋するでしょう。さくっと見積もりが出てくることもあるでしょうけど、かなりバッファをとった高額なお見積りかと。正直、見積もり作るのにお金がほしい内容です。

どうしてこんなことをグチグチ書いているかというと、大変申し上げにくいのですが、自称素人の方には難易度高め。業者に任せるか、類似のパッケージを探された方が、不具合などのリスクも軽減され、業務への影響も少ないかと。

ご健闘をお祈りしております。
    • good
    • 5

なんだか誤解されるのもアレなので、連投?ながら補足させて下さい。



質問文からの推量になりますが、質問者様の社内状況としてAccess→SQLServerに変更します、ということがまだ決定もしていないんじゃなかろうか、と。とりあえず「複数人で入力をする必要が出てきた」のでその方法を探っていて、お手軽にできるんじゃなかろうか?と質問されたのだと思っています。

そこで私の回答としては、Access→SQLServerの移行って結構大変な作業ボリュームになりそうですよ、ご自分でやるのも結構大変、まして業者に頼んだところで…ということでパッケージソフトでクリアできる処理内容ならそっちの方が楽じゃないの?という内容にしたつもりです。

別にパッケージソフトの回し者ではないですけど、ある程度定型化されたシステムへの移行の方が、移行作業も今後の運用も楽になると思います。

ご健闘をお祈りしています。
    • good
    • 0

補足:考え方!



1、AccessをSQL Serverに反映するシステムは無駄の極み。

AccessデータベースをSQL Server へと反映するアプリケーションは、さほど難しいものではないかもしれません。高速を狙うには、Access の各テーブルへの更新日とフラッグとの追加、それに伴うフォームのコードの変更を行えば事足りるでしょう。でも、それを実現しても、その意義はゼロです。なぜなら、フロントエンドがないからです。参照不能なSWL Server のデータベースは壮大なる無駄と言えます。

ここにいう無駄をなくすには、フロントエンドを用意すること。ただし、その場合には、もはや反映システムもAccessシステムも不要。

つまりは、反映システムというアイデアはかなりの矛盾に満ちたそれだということです。

2、Access のC/Sシステムがなければマルチ作業は困難。

もう一つの問題点は、いかに立派なSQL Server 反映システムを用意してもAccessはスタンドアロンのまま。肝心なマルチ作業は実現されていません。つまりは、Access版C/Sシステムの構築かSWL Server のフロントエンドの開発は避けられないということです。

3、MDBのコピー1、コピー2、コピー3の運用は???。

http://office.microsoft.com/ja-jp/access-help/HP …
http://www.accessclub.jp/bbs2/0054/beginter17746 …

確かに、MDBのコピー1、コピー2、コピー3をそれぞれが運用しオリジナルデータベースに反映するという手もあります。しかし、これはいかがなものでしょうか。私には、その経験がありませんので肯定も否定もできません。言えることは、最後の望みは「MDBのコピー1、コピー2、コピー3の運用」です。が、紹介のサイトを見れば判りますが、結構、これもややこしいですよ。

以上の補足が、質問者の考えの整理に役立てば幸いです。
    • good
    • 0

システム開発等を生業としている人からみたら



・なめたことを言わずに、まじめに仕事しろ、勉強しろ。

という感じでしょうか。
Access および SQL Server の本でも入手して
じっくり勉強されることをおすすめします。

マイクロソフトのサイトに SQL Server の自習書があります。
参考にしてください。(参考URL)

●Accessを管理画面として使い、
●Access上で内容を変更したら、システム全体もその通り変わる

これは非常に高度だと思います。
もしできたら、売れるかもしれません。

参考URL:http://www.microsoft.com/ja-jp/sqlserver/2012/te …
    • good
    • 2

まず、通常の移行形態を確認されてください。



1、テーブル構造の設計書を作成する。(Excel)
2、設計書に基づきSQL Server を構築する仕組みを作る。
3、フロントエンドとしてのAccessプロジェクトの構築する。
4、SQL Server のバックアップシステムを完成する。

 私は、全くのど素人の片手間プログラマです。その場合、1~4の工程を完遂するのに約1年を要しました。

 1、2は、これは文献に準拠するだけですので割と簡単な作業。シンドイのは3の作業です。なぜなら、旧来のAccessの仕組みとプログラムは、全て廃棄することになるからです。先ずは、ライブラリを再開発し、フォーム、帳票の類をAccessプロジェクトのそれに一新。これは、一日、10時間の集中作業を6ヶ月。ここまでは、Access の延長みたいなもので。新たなテーマは、SQLServer の管理。ここをもクリアされるとAccess+SQL Serverシステムへの移行は完了です。

 Access+SQL Serverシステムの利点は、

1、Access.MDB のフロントエンドの要領で開発できる。
2、処理速度は、黙っていても50倍速になる。
3、マルチ処理に対応している。

などです。

Q、よき方法がありましたら教えて頂けましたら幸いです。
A、まず、Access システムそのもののレベルアップを!

1、バックエンドとフロントエンドに分ける。
2、PCをワークステーションに代える。

 まずは、現行のAccessシステムをサーバー・クライアントシステムに格上げされることをお勧めします。その場合、20年前のワークステーション(CPU 350MZ)をサーバーにされても動作するでしょう。つまり、PCも格上げということです。Access+SQL Serverシステムは、それが行き詰まった時のテーマにされたらどうですか?
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QACCESSからSQLServerのデータを取得したい

SQLServerが利用できない環境にデータを持っていくため、以下のようなシステムを考えております。(テーブルのリンクは不可・手動でのデータのエクスポートは不可)

1.ACCESSのフォームに「データベース名」「テーブル名」を入力し、実行ボタン押下
2.ADOでSQLServerに接続
3.指定のテーブルと同じ構造のテーブルをACCESSに作成
4.SQLServerのデータをACCESSにINSERT

ここで質問なのですが、ACCESSは自分のデータベースとSQLServerのデータベースに同時に接続できますか?
同時接続した場合のACCESS/SQLServerの書き分けはどのようになるのでしょうか。

Aベストアンサー

普通に同時接続できるかと思います。
ちょっと手元に環境がないので間違いがあるかもしれませんが以下のような感じでしょうか。
ようは各データベース用にそれぞれ変数を用意してあげれば済むことかと。

Dim accessdb As Database
Dim sqldb As ADODB.Connection

Set accessdb = CurrentDb
Set sqldb = New ADODB.Connection
sqldb.open()

それぞれのDBに対して処理する

QSQLサーバのデータをAccessにリンクする方法

SQLサーバの勉強を始めたばかりの者です。
Accessのテーブルを、SQLサーバに移行したいと考えています。

Acessのサイズアップして
SQLサーバにデータを移行することはなんとかできた様子なんですが
今度はそのSQLサーバのデータをAccessにリンクする方法がわかりません。
ネットで検索したのですが
Accessのバージョンが違っていたりしてどうもわかりません。

わかりやすく手順など掲載されているサイトがあったら
教えてください!

Access:2007
SQL Server:2008

を使用しています。

Aベストアンサー

参考URLを添付します。
インポートとリンクの方法、両方説明していますので、ご注意ください。
ODBCで接続する場合はODBC設定も忘れずに!

参考URL:http://office.microsoft.com/ja-jp/access-help/HA010200494.aspx

QaccessからSQLサーバへの移行。

宜しくお願いします。

前回、SQLのインストールがわからず質問した者です。
インストールが完了し次のステップに入りました。

仕様環境:WinXP/Pro SP3 OSは32bit版
CPU: AMD Athlon64 processor 2.00GHz 1.43GB RAM
CPUは32bit・64bitともに対応
ローカルディスクは残り122G有り

access2002 SQLサーバ2008

まず、accessをSQLサーバ-2008に移行しようと思い、
いろいろ調べた結果、accessにアップサイジングウィザードというものがあり、
そこから移行できるようなので、試しましたがエラーが発生しました。
以下がその内容です。

”アップサイジングウィザードはマイクロソフトSQLサーバー(バージョン6.50SP5以上)で使用できます。
SQLサーバーデータソースにログインしてください)”
SQLサーバーにログインすることだな、と思い、いろいろ項目をさがしたところ、
「SQLサーバーマネージメントスタジオ」というツールがあったので、そこでログインをしました。
(この辺はわけもわからずやりました)

しかしその後、状況変わらず、アップサイジングはできませんでした。

そして次に試みたのは「SQLサーバーにデータのインポート及び、エクスポート(32bit)」という
項目があったのでそこから入りました。
データソースはaccessを選択し、ファイル名は該当するaccessのファイル名(仮に作成書として)
ユーザー名とパスワードは特に設定せず進みました。


そして次の変換先が問題です。
間違えだ思いますがわからなかったので、ここでも変換先をaccessに選択し、
ファイル名も同じく該当するaccessファイルユーザー名とパスワードは設定せず、先に進みました。

次にテーブルのコピーまたはクエリの指定という項目になりましたので、
1つ以上のテーブルまたはビューからデータをコピーするを選択し、次へ進み、
どれを変換するか実行したところ、実行の準備までは成功しましたが、
実際のコピーはエラーが出て停止しできませんでした。
またその変換されるファイルもテーブル全部とクエリの一部でした。
レポートにつながっている普通の選択クエリも変換の際に名前が出てきませんでした。
マクロやフォームは出てきませんでした。

そもそも変換先が間違っていると思うので、(同じところから同じところ)
仕方ありませんが変換先がたくさん項目があってをどこに指定していいかわかりません。

ちなみに何をしたいかというと、
・デーベース容量のアップ
・複数人で使っても「排他的に~」と出ず、スムーズな運用
・処理速度アップ(これは元ファイルが1Mぐらいなので今のところ不便は感じないのですが)

もしよければご指導・アドバイス等お願いします。
ちなみに一台のPCですべてやってます。

あと参考書も買わないといけなさそうです。
(何度も聞いてると気がひけますね)

宜しくお願いします。

前回、SQLのインストールがわからず質問した者です。
インストールが完了し次のステップに入りました。

仕様環境:WinXP/Pro SP3 OSは32bit版
CPU: AMD Athlon64 processor 2.00GHz 1.43GB RAM
CPUは32bit・64bitともに対応
ローカルディスクは残り122G有り

access2002 SQLサーバ2008

まず、accessをSQLサーバ-2008に移行しようと思い、
いろいろ調べた結果、accessにアップサイジングウィザードというものがあり、
そこから移行できるようなので、試しましたがエラ...続きを読む

Aベストアンサー

まず、今回のケースでは、アップサイジングウィザードの利用はできません。
以下のリンクを参照してください。
http://support.microsoft.com/kb/967913/ja
Access2003/2007ですら対応していないのですからね。

もともとウィザードの精度はあまり良いものとはいえず、エラーメッセージが出ても対処がわかりにくいことが多いです。

したがって、手間はかかりますが、以下の手順で実行することをお勧めします。
すくなくとも自分が何をやっているか、理解しながら進めることができると思います。

1) SSMS(SQL Server Management Studio)でデータベースを作成する
 ・データベースタブで右クリックして「新しいデータベースを作成」を選び、データベース名だけ入力してあとは初期値で可

2) SSMSのデータのインポートを使って、MDBファイルのテーブルを移行する
 ・作成したデータベースを右クリックして「タスク-データのインポート」
 ・データソースは、元となるMDBファイル(ユーザ名、パスワードはAccess側に掛けていなければ不要)
 ・変換先は上記で作成したデータベースがデフォルトで選択されているはずです
 ・「1つ以上のテーブルまたはビューからデータをコピーする」
 ・「コピー元のテーブルおよびビューを選択」ですべてのテーブルを選択(ビュー、クエリは選択しない)
 ・実行すると、MDB側のテーブルレイアウトに合わせてテーブルが自動生成され、データがコピーされます

3) SSMSでデータベースの下に作成されたテーブルをそれぞれ右クリックして「デザイン」を選択
 ・ここが手間といえば手間ですが、正しいデータ型でコピーされていることを確認しつつ修正します
 ・SSMSの「ツール-オプション」の「Designers」で「テーブルの再作成を必要とする変更を保存できないようにする」の
  チェックがオフになっていることを確認
 ・それぞれのテーブルにつき、以下を修正
  a)主キーを設定
   ・テキスト型からコピーされて、データ型がnvarchar(MAX)になっている場合は適当な長さ(nvarchar(50)など)に変更する
   ・NULLを許容のチェックはオフ
   ・列を選択して右クリックすると「主キーの設定」が選べる
  b)リレーションシップの設定
   ・デザイン画面を右クリックすると「リレーションシップ」が選べるので、「追加」
   ・「テーブルを列の指定」をクリックすると「...」ボタンが出るので、それを押して主キーテーブルを指定

4) PCにODBC接続のためのDSNを作成
 ・メニュー-コントロールパネル-管理ツール-データソース(ODBC)
 ・データソースドライバは「SQL Server Native Client」を設定
 ・名前は任意(SQLSVなど)、サーバはlocalhostなど。
 ・ログイン情報はSQL Serverにログインするときの情報を指定(Windows認証ならば省略可)
 ・既定のデータベースは新しく作成したデータベースを指定

5) Access側にあるテーブルをすべて削除して、代わりにSQL Serverにコピーしたすべてのテーブルをリンクテーブルとして登録する
 ・リンクテーブルのやり方はわかるという前提です(作成したDSNを使用)
  わからなければ以下のリンクも参照
  http://homepage2.nifty.com/SALTY/tips/access/odbcaccess.html
 ・テーブル名はすべて従来のテーブル名と同じになるように

上記までで、テーブルがすべてSQL Serverに移り、それを参照してAccessが動く状態になります。
クエリがAccess側にあっても、「やりたいこと」はすべて満たされるはずです。
(SQL Server内にあるテーブルをAccess側でクエリとして呼ぶことになるため)

クエリはSQL Serverではビューと呼びますが、移行するには、
・SQLビューで表示されるSELECT文をSQL Serverに持っていく
 CREATE VIEW (ビュー名) AS SELECT ....という形式で実行して、ビューを作成する
・ビューに対するリンクテーブルを追加する
の手順を踏む必要がありますが、ここはもう少し理解できてからの方がいいと思います。

>あと参考書も買わないといけなさそうです
もう少しSQL Serverのことは理解した方がいいかもしれませんね。
買うのもいいですが、参考になるものはネット上に大量にありますよ。
まずは、以下のあたりを見てみるといいと思います。

SQL Server 2008自習書シリーズ
http://www.microsoft.com/japan/sqlserver/2008/self-learning/default.mspx

SQL Server 2005自習書シリーズ
(質問者さんの目的であれば2005も2008も変わりません。ドキュメントはこちらの方が豊富です)
http://technet.microsoft.com/ja-jp/sqlserver/cc721623.aspx#ecb

まず、今回のケースでは、アップサイジングウィザードの利用はできません。
以下のリンクを参照してください。
http://support.microsoft.com/kb/967913/ja
Access2003/2007ですら対応していないのですからね。

もともとウィザードの精度はあまり良いものとはいえず、エラーメッセージが出ても対処がわかりにくいことが多いです。

したがって、手間はかかりますが、以下の手順で実行することをお勧めします。
すくなくとも自分が何をやっているか、理解しながら進めることができると思います。

1) SS...続きを読む

QACCESSに同時アクセス(編集)をしたい

教えてください。
ACCESSのDBに複数のユーザが同時にアクセスして、
データを追加・編集したいのですが、
やはり、不可能でしょうか?

Aベストアンサー

マイクロソフトのアクセスに同時に複数のユーザが同時にアクセスして
データベースを操作することは可能です。いくつかの方法がありますが、
昔私が簡便に行なっていた方法は「テーブルのリンク」です。

あるコンピュータにアクセスでdb1という名前のデータベースを作って
ここにデータを格納しておきます。

他方で別のコンピュータに、アクセスでdb2という名前のデータベースを作ります。

このdb2というデータベースのメニューで

「ファイル」->「外部データの取り込み」->「テーブルのリンク」

というのがありますから、最初に作ったdb1をたどり、リンクしたいテーブルを
選択します。

こうすることにより、db2にdb1のテーブルがリンクされ(リンクテーブルと
呼ばれます。アイコンが通常のテーブルと違います。)、db1に格納された
データをdb2で編集することができます。

db2で、db1からのリンクテーブルを元にクエリーを作成することもできます。
リンクテーブルに対してできないことはテーブル構造の変更くらいで
他のことはだいたいできると思っていいかと思います。

このような形をとれば、ローカルエリアネットワーク内の複数のコンピュータ
から同時に同じアクセスデータベースにアクセスすることは可能かと思います。

このやり方にはおそらく問題もあるだろうと思うのですが、昔私がやって
いた頃は、特段支障もなく業務を行なうことができました。問題は、これを
読んだ他の誰かが指摘してくださるかと思います。

同じレコードに複数ユーザが同じタイミングでアクセスするとややこしい
ことになります。これを回避するためには、db2にワークテーブルを備えておき、
リンクテーブルからレコードを一度db2に格納し、編集を終了したのちに
リンクテーブルのレコードを削除し、ワークテーブルで編集したレコードを
リンクテーブルに追加する、などのルーティンをマクロやVBAで構築するのが
よいかと思います。私はそのようにしていました。

他に、ADOを使う方法などもあります。方法はいくつかありますから、
少し研究してみるといいですよ。(^-^)

マイクロソフトのアクセスに同時に複数のユーザが同時にアクセスして
データベースを操作することは可能です。いくつかの方法がありますが、
昔私が簡便に行なっていた方法は「テーブルのリンク」です。

あるコンピュータにアクセスでdb1という名前のデータベースを作って
ここにデータを格納しておきます。

他方で別のコンピュータに、アクセスでdb2という名前のデータベースを作ります。

このdb2というデータベースのメニューで

「ファイル」->「外部データの取り込み」->「テーブルのリンク」
...続きを読む

Qaccess ODBCリンクテーブルの作り方

 自分のPCで、あるaccessの業務システムを作成し、それを数人で共有してデータの入力をするようにする為に、ODBCリンクテーブルというものを作る必要があると思っています。

 既存で業務的に違う別のシステムがあり、そこでODBCリンクテーブルというものは使用しています。(退職した前担当者が作成。)

 ODBCリンクテーブルというものは、どのうようにして作るのですか?
 (地球マークのテーブルです。)

Aベストアンサー

Accessのテーブルの画面で
何もないところで右クリックすると、「テーブルのリンク」とあると思います。
それをクリックすると今度はファイルを開くダイアログが出てきます。
そこの「ファイルの種類」のドロップダウンリストの一番下の「ODBCデータソース」
を選択するとODBCデータソースの選択画面になります。

但しここで選べるものは、あらかじめ登録されているODBCデータソースだけです。
ODBCデータソースは各PCでコントロールパネル(管理ツール)のODBCデータソースから設定する必要があります。
(ODBCデータソースの登録の方法については長くなるので省きますが)

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

QVBAでSQLServerへのODBC接続

お世話になります。

最近AccessとVBAの学習を始めた者です。
Accessを用いて簡単な売上管理システムを作成しました。
システムを共有できるようにするためにSQLServerへの接続を試みています。
SQLServer内にAccessと同じデータ型のテーブルは作成済みです。
これにどのような方法でデータの追加などをするか調べても良く分かりません。
VBAでODBC接続を行うためのコードを記述するというところまで分かりました。
コードの例などあればすごく助かります。

私自身理解が不足しているため稚拙な文章ですがご了承ください。

よろしくお願い致します。

Aベストアンサー

リンクテーブルを使うのが一番幸せな方法。
ローカルの DB 内には外部 DB のテーブルへのリンク情報が保存される。
フォーム、クエリ、レポート、VBA コードなどからは、ローカルの DB にあるテーブルも、リンクテーブルも、どちらも違いなく扱えるというメリットがある。

ODBC を媒体にして VBA コードから外部 DB へ接続し、レコード群のやり取りだけを行う方法も可能だが、自由度は減る。
ユーザー側にある Access の DB にはユーザーが操作するフォームやレポートがあるわけだが、これらとデータの仲介が全て VBA コードによる処理となるため、"非 VBA" で接続する方法がとれない。
具体的には、フォームやレポートのデザイン画面でレコードソースを設定することができなかったり、Access 側のクエリが使用できなかったりする。
UI とデータをそこまで分離させようとするのであれば、Access じゃないほうがもっと便利に開発できるんじゃないか? と個人的には思う。
Visual Basic 2015 Express とかのがもっと本格的に、もっと自由に開発できる。

VBA のコードで作成した DAO または ADO の Reocordset オブジェクトをフォームの Recordset プロパティに設定して読み書きするためのサンプルは下記を参照。
https://msdn.microsoft.com/ja-jp/library/office/ff822528.aspx

DB からデータを取得したり、DB のデータを更新する部分は SQL 文を中心に処理することになるかと思います。
データを更新する場合は SQL Server 側に作成したストアド プロシージャーを VBA から呼び出して適切な更新値を与えてあげるやり方が主でしょうかね。

「ADO SQL Server」 あたりで検索していくと調査がはかどると思います。

リンクテーブルを使うのが一番幸せな方法。
ローカルの DB 内には外部 DB のテーブルへのリンク情報が保存される。
フォーム、クエリ、レポート、VBA コードなどからは、ローカルの DB にあるテーブルも、リンクテーブルも、どちらも違いなく扱えるというメリットがある。

ODBC を媒体にして VBA コードから外部 DB へ接続し、レコード群のやり取りだけを行う方法も可能だが、自由度は減る。
ユーザー側にある Access の DB にはユーザーが操作するフォームやレポートがあるわけだが、これらとデータの仲介が全て...続きを読む

QDAOとADOの違いについて

Accessからイントラネット上のデータベースに接続するための接続方法で困っています。
DAOとADOの違いが分からず困っています。
メリット、デメリットが分かる方、どうか教えてください。

宜しくお願い致します。

Aベストアンサー

DAO(データアクセスオブジェクト)はAccessで使用されるMicrosoftJetデータベースエンジン を公開した最初のオブジェクト指向インターフェイスです。DAOは単一システムのアプリケーションや小規模でローカルなネットワークで使用するのに最も適しています。
とMSDNライブラリでは説明しています。
DAOはJetデータベースエンジンを対象にして開発されているのでJetのもつセキュリティ機能・データ定義機能などを十分に操作することができます。
ADO(ActiveXDataObjects)ではオブジェクトの種類が簡素化されているためJetデータベースエンジンの細かな機能を制御することができないといった点が不足している部分がありますがADOXやJROの各オブジェクトモデルで使用できる機能を使えばADOで不足している機能をほとんど補うことができます。
DAOはデータベースにAccessを使用するアプリケーションの場合、最大のパフォーマンスを得ることができます。しかしアプリケーションを運用していくうちに規模が大きくなってデータベースをSQLServerに移行することがあるかもしれません。
そのような可能性が含まれているのであれば最初からADOで開発しておいたほうが無難です。ADOはSQLServerに対する処理で良いパフォーマンスを得ることができます。

Jetデータベースエンジンを主なターゲットにしているならDAOで可。それ以外のデータベースを利用するのであればADOを選択する方が良いのではと思います。

DAO(データアクセスオブジェクト)はAccessで使用されるMicrosoftJetデータベースエンジン を公開した最初のオブジェクト指向インターフェイスです。DAOは単一システムのアプリケーションや小規模でローカルなネットワークで使用するのに最も適しています。
とMSDNライブラリでは説明しています。
DAOはJetデータベースエンジンを対象にして開発されているのでJetのもつセキュリティ機能・データ定義機能などを十分に操作することができます。
ADO(ActiveXDataObjects)ではオブジェクトの種類が簡素化されて...続きを読む

QAccessのテーブルをSQL Serverに自動インポートする方法について

現在SQL Server2005を使用しております。

別のサーバー内でAccessのテーブルデータが定期的に更新されており、
このデータを利用したシステムをSQL Server上で作ろうと考えています。
手動でSQL ServerにAccessのテーブルデータをインポートするやり方は分かりましたが、(データ更新の為に)定期的にインポートする方法がわかりません。

どのように実現すればよいか、サンプルや参考になるHPがありましたら
是非教えていただけないでしょうか?

Aベストアンサー

SQL Serverのエディションと、Accessのバージョンを書いた方がよいです。
(Access2003までを想定して書きます)

1) リンクサーバを設定する
 ・サーバオブジェクト→リンクサーバで作成
 ・リンクサーバ名は任意(例えばACC)、「Microsoft jet 4.0 OLE DB Provider」を選択し、製品名に「Microsoft Access」、あとはMDBをフルパス指定するだけでよい。
 ・SQL Server側では「SELECT * FROM ACC...テーブル名」の形式でクエリを実行できる。
 (条件)32ビットマシンであること

2) OPENROWSETを使う
 ・以下のようなクエリを実行する
  SELECT a.* FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','MDBのフルパス';;,テーブル名) AS a
 ・あとはリンクサーバと同じ
 (条件)32ビットマシンであること。アドホッククエリの実行を許可しておくこと

3) SSISを使う
 ・SQL Server Integration Serviceで取り込み処理をパッケージとして作成する
 (条件)Standard Edition以上であること

いずれの方法もジョブをSQL Server Agentに登録することで定期実行できます。
1)2)の場合は、TRUNCATE TABLE文とINSERT SELECT文、3)の場合はパッケージの実行を登録することになります。
Expressであれば、sqlcmdを使ったバッチを書いてそれをWindowタスクで実行します。

外部データのアクセス:http://msdn.microsoft.com/ja-jp/library/ms188313(SQL.90).aspx
OPENROWSET http://msdn.microsoft.com/ja-jp/library/ms190312(SQL.90).aspx

SQL Serverのエディションと、Accessのバージョンを書いた方がよいです。
(Access2003までを想定して書きます)

1) リンクサーバを設定する
 ・サーバオブジェクト→リンクサーバで作成
 ・リンクサーバ名は任意(例えばACC)、「Microsoft jet 4.0 OLE DB Provider」を選択し、製品名に「Microsoft Access」、あとはMDBをフルパス指定するだけでよい。
 ・SQL Server側では「SELECT * FROM ACC...テーブル名」の形式でクエリを実行できる。
 (条件)32ビットマシンであること

2) OPENROWSETを使う
...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報