• ベストアンサー

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

SQLServerが利用できない環境にデータを持っていくため、以下のようなシステムを考えております。(テーブルのリンクは不可・手動でのデータのエクスポートは不可) 1.ACCESSのフォームに「データベース名」「テーブル名」を入力し、実行ボタン押下 2.ADOでSQLServerに接続 3.指定のテーブルと同じ構造のテーブルをACCESSに作成 4.SQLServerのデータをACCESSにINSERT ここで質問なのですが、ACCESSは自分のデータベースとSQLServerのデータベースに同時に接続できますか? 同時接続した場合のACCESS/SQLServerの書き分けはどのようになるのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • asahina02
  • ベストアンサー率47% (95/202)
回答No.1

普通に同時接続できるかと思います。 ちょっと手元に環境がないので間違いがあるかもしれませんが以下のような感じでしょうか。 ようは各データベース用にそれぞれ変数を用意してあげれば済むことかと。 Dim accessdb As Database Dim sqldb As ADODB.Connection Set accessdb = CurrentDb Set sqldb = New ADODB.Connection sqldb.open() それぞれのDBに対して処理する

lovesens
質問者

お礼

アドバイスありがとうございます。なるほど、片方はCurrentDBで接続、片方はADOで接続すればよいのですね。この二つを同時に一つのSQL文で扱うことはできるでしょうか?「Insert into accessDB.ユーザーマスタ Select sqldb.ユーザーマスター」みたいな。

その他の回答 (2)

  • asahina02
  • ベストアンサー率47% (95/202)
回答No.3

#1です。 >この二つを同時に一つのSQL文で扱うことはできるでしょうか? これはさすがに無理ではないかと思います。 2のお礼で書かれているようにSQLServerのデータをレコードセットに取り、1レコードずつInsertするしかないと思います。

lovesens
質問者

お礼

回答ありがとうございます。あれから試行錯誤いたしまして、マクロ→データベース変換でODBCドライバを使用することにより、簡単にテーブルデータを取り込めるようになりました。何度もお返事ありがとうございました。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>ACCESSは自分のデータベース・・に接続できますか? 自分のとはカレントDB?ということですか?それとも他のAccessファイルにADOで接続するということですか? カレントDBからADOでSQLServerに接続すればカレントDB内で処理できますが。 もしくは#1の方のいうように変数を宣言してカレントDBを変数にセットすればいいのでは。 Dim acdb As Database Set acdb = CurrentDb のように。 ’SQLServerに接続 Dim cnn As New ADODB.Connection Dim rec As New ADODB.Recordset ' 接続を確立させる。 cnn.Open "Provider=SQLOLEDB;" & _ "Data Source=サーバー名;" & _ "Initial Catalog=サーバ上のデータベース名;", "sa", "" ’SQLを指定してレコードセットを作成する。 rec.Open "select * from テーブル名", cnn, _ adOpenKeyset, adLockOptimistic 他のAccessファイルに接続する場合はProvider=Microsoft.Jet.OLEDB.Jetのバージョン に変えて接続を確立すれば出来ます。 質問内容と違っていたらゴメンなさい。

lovesens
質問者

お礼

回答ありがとうございます。#1さんのお礼欄にも書いたのですが、一つのSQL文で同時に扱うことはできますでしょうか?それともSQLServerのデータをレコードセットに取り、1レコードずつInsertするしかないでしょうか。

関連するQ&A

  • AccessとSqlServerのテーブルリンク

    Access2007とSqlServer2008を使用しています。 Accessで作成したテーブルを「データベースツール」-「データの移動」でSqlServerに移行してリンクする際、 (1)SqlServerに新規にデータベースを作成すると、リンクテーブルマネージャから見てもリンク先DBが正しく表示されますが、 (2)その後、その既存DBに同じAccess内の別のテーブルを、「データベースツール」-「データの移動」してリンクしたものは、リンクテーブルマネージャから見てもリンク先DBが ()となっており表示されていません。 ツールとしてSqlServer Management Studioを使っていますが、そこからでも(1)のテーブルは表示されていますが、(2)のテーブルは表示されません。 でもリンクはできているようなのです。 また、SqlServer Management Studioを使って、SqlServer内に新規テーブルを作成し、 それをAccessからリンクしようとしても、テーブルリンク一覧内に表示されない状態です。 (「外部データ」-「ODBCデータベース」…)にて SqlServerのファイルデータソースを表示しています) (2)のテーブルはSqlServer Management Studioから見ることができないため、更新・削除もできず困っています。 DB、テーブル、リンク方法等、何か問題があるのでしょうか? よろしくお願いします。

  • SQLserverとACCESS

    また質問させていただきます。 今ACCESS+SQLserverで構築をしようとしています。 ACCESSのテーブルデータだけをサーバーに持っていき、リンクして使用しようと考えております。 まずはお試し版のmanagement studioを使用し、WindowsのPCにインストールしました。そしてテーブルをリンクするところまではできたのですが、インストールしたPCではACCESSから入力ができたのですが、ローカルから繋いでいるクライアントのPCでは接続ができないのです。 権限の中にインストールしたPCの名前しかなく、クライアントのPC名がないことが原因かと思ったのですが、どうでしょうか? ローカルのPCを権限に入れれば接続ができるなら、その方法もご教授いただければと思います。 情報が不足していましたら補足いたします。 宜しくお願い致します。

  • AccessのデータをSqlServerへ

    C♯(.net2.0)での開発です。 Accessに大量のデータがあって、それをすべてSalServerへ入れたいと 思っています。 加工や計算したいデータがあるため、SqlServerのマネジメントではなく、 C♯でバッチなどを作って行う予定です。 Accessのデータをレコードセットで読み込んで、それをSqlServerへ 1行ずつインサートしていけばいいのかなと思うんですが、Accessと SqlServer、それぞれにコネクションが必要ですよね? Accessのコネクション閉じた時点でレコードセットが読めなくなりますが、 Accessのコネクションを開いたままSqlServerのコネクションを開くには どうしたらいいのでしょうか。 単純に、コネクションクローズする前に新しくコネクションオブジェクト 作って繋げばいけるのでしょうか。 サンプル交えて教えていただけると助かります。 宜しくお願いします。

  • SQLServer - Access開発環境

    SQLServer2008R2 ExpressのデーターベースへAccess2010を使ってアクセスし、帳票を作成する事になりました。 使用している業務パッケージがSQLServerを使っていて、それで出てこない帳票をAccessかExcelで 作るように言われました。 私は、Access同志のテーブルリンクは使った事があるのですが、SQLServerへのテーブルリンクは始めてです。SQLServerは運用のために本で勉強した程度です。 色々調べてみたのですがよくわからないので、ご存知の方お願いします。 AccessとSQLServerは同じパソコンの中に置く予定です。 業務パッケージで使っているパソコンは1日中入力に使われていて同じパソコンをAccessの開発用に使用することができません。 業務パッケージのデータベースは、オフラインバックアップしているので、Accessでの開発用の 環境に移せそうな気がしますが ODBC経由でSQLServerをテーブルリンクする場合、データソースを作る時に サーバー名とかユーザ名とかを指定するので、Accessを開発環境から運用環境に移行した時の手直しがどの程度必要なのかがよくわかりません。 現在の業務の関係上、サーバー名を同じにした環境を作成することもできません。 業務パッケージを作った所も今はもう無いし、社内に詳しい人はいないので困ってしまいました。 あまり具体的に書けずに申し訳ありませんが、 上記環境で運用環境に移行出来るものか否かと SQLServer ・ Access作成時の注意点・などありましたら教えてください。 よろしくお願いいたします。

  • SQLServerのデータベース間でデータコピー

    こんにちは。SQLServer2000(SP3a)、VB6.0(SP5)でデータベースの勉強をしています。用語に詳しくないので、うまく説明できないと思いますが、相談にのってください。 SQLServerに、「データベースA」と「データベースB」があり、VBのコマンドボタンをクリックすると、データベースAのテーブル1のデータをそのままデータベースBのテーブル1に移動させたいと思っています。 私の知識では、データベースAのテーブル1のデータをSelectですべて読み込み、変数などに入れておき、データベースBのテーブル1にInsertするという効率の悪い方法しか思い浮かばず、レコード数が多いので、時間がかかり困っています。 他に良い方法があればアドバイスをお願いします。 よろしくお願いします。

  • accessからsqlserverへのデータ移行について・・・

    access2007からSQLSERVER2008へのデータ移行を考えています。 そこでお聞きしたいのが・・・ テーブルの設計/フィールド名/データ型などが以降先では若干変わり、テーブルデータすべてが必要になるわけでもありません・・・ こんな状態ですが、一番良い方法はどんな移行方法でしょうか・・・ おせーてくらはい・・・。

  • AccessからODBC経由でのSQLServerへの接続

    Access(2002)からSQLServer2000(8.0 Developer Edition)へODBC経由で接続にいってテーブルを参照したのですが読み取り専用でデータの変更、レコードの追加・削除等ができません。 データの変更等ができるようにしたいのですが、どうすればよいのでしょうか? 接続するときのユーザーは接続先のデータベースに対してオーナー権限を持っています。また、DSNはシステムDSN、ファイルDSNでそれぞれ作り接続を試してみましたが両方とも読み取り専用で開いてしまいました。 ちなみにPHPでODBC接続してINSERTするプログラムを作り動かしたところ問題なく動きました。 宜しくお願い致します。

  • AC2002でSQLServerのテーブルをリンクしたい

    ACCESS2002で、ADOを使ってSQLServer2005のテーブルにリンクをしたいのですが、リンクを張るときと解除するときのコードはどのようにしたら良いのでしょうか?接続はできるのですが、ACCESSでテーブルが表示されるようにしたいのです。よろしくお願いします。

  • Access から SQLserver に接続がエラー。

    ある顧客さんのシステムを改良することになりました。 それはもともと ローカルで、 クライアントが WIN95 or WIN98 or WIN2000 Access97 サーバー側が WIN NT SQLserver(バージョンは不明。5か6くらい?) で、AccessからODBCで接続する形です。 それで、注文の受注や集計などを行う業務用のアプリケーションです。 改良項目は、WEBからの受注機能をつけるのと、 ついでにOSもバージョンアップさせる予定です。 その受注システムにはCTIなどの機能も付いています。 そこで、顧客さんからデータを全て抜き出して解析しています。 私とは別の人と共同で作業をしていて、共同で作業している人がSQLのデータベースのテーブルを抜き出してくれて、 さらにCTI関連の必要OCXなども抜き出してくれました。 ここからが本題ですが、 私のローカルPC(Win2000server)に SQLserver2000(評価版) を入れて Access2000で動作テストをさせようとしているのですが、 なぜかODBCの接続エラーで 「実行時エラー '3151': ODBC--'データベース名' への接続に失敗しました。」 というエラーが出ます。 ODBCの接続はリンクテーブルを作って、 「DSN=DBNAME;UID=sa;PWD=;APP=Microsoft (R) Access;WSID=PC001;LANGUAGE=japanese;DATABASE=DBNAME」 というような接続形式になっているようです。 DSNやDATABASEは指定のデータベース名にしています。 気になるのはWSIDがよくわかりませんけども・・・ ちなみにWEB(PHP4)からは接続できます。 この状況で接続してくれないので困ってしまっています。 以上のことでなにかここが怪しいのではないかといったことがありましたら、アドバイスをいただければと思います。 わかりづらいかも知れませんが、よろしくお願いします。

  • ASPを用いてSQLServerからのデータ取得ができません。

    ASPを使ってSQLServerからのデータ取得ができません。 クライアントのPCから、Webサーバ経由でDBサーバへアクセスすると、 『[Microsoft][ODBC SQL Server Driver]分散トランザクション エラー』 というエラーメッセージが表示されます。 WebサーバとDBサーバが同一PC上にある場合は、問題なく実行できます。 また、同じテーブルを使って、簡単なサンプルコードを実行した場合では、WebサーバとDBサーバが別々のPC上にあっても問題なく動きます。 原因はIIS、もしくはSQLServerの設定にあるのか、それともASPファイルのソース自体にあるのか、わかりません。 どなたかご存知の方、よろしくお願いします。 DBとの接続はADO接続で、環境は、 Webサーバ/WindowsXP Pro、IIS 5.0 DBサーバ/WindowsXP Pro、SQLServer2000 を使っています。