SQL ServerとDAO


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
vol173

これならわかるマイクロソフトアクセス活用法
            -->SQL ServerとDAO
              
発行者:高内 章治 2012年11月21日
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┏ 今日の内容 ━━━━━━━━━━━━━━━━━━━━━━━━┓

┃【01 - ご挨拶    】
┃【02 - トピックス  】SQL ServerとDAO

┃【03 - 編集後記    】

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

─────────────────────────────────
【01 - ご挨拶    】          
─────────────────────────────────

こんにちは、高内(こうない)です。

今回は、

「SQL ServerとDAO」

についてお話したいと思います。




─────────────────────────────────

【02 - トピックス】: SQL ServerとDAO

─────────────────────────────────

現在、
「アクセス(Access)のシステムを無料のSQL Server Expressへ移行してみよう」という教材を販売しています。

Accessをアップサイジングして、SQL Serverに移行します。
そして、AccessからODBC経由でリンクして使うやり方を説明しています。

Accessのクエリ、フォーム、レポートの資産をそのまま使うことができます。

でも、先日、お客様から、ご質問のメールがありました。

Accessから、SQL Serverにアップサイジングして、ODBCから、SQL Serverにリンクしようとするとエラーが発生しました。
お客様は、「DAO」を使っていました。

「DAO」では、「テーブルタイプ」のレコードセットのオブジェクトを使用していると、SQL Serverのリンクテーブルにアクセスできません。

■1.DAOとADOについて

Accessから直接、テーブルやクエリにアクセスして操作する方法に、DAOとADOがあります。

「DAO」は、「Data Access Objects」の略です。
「ADO」は、「ActiveX Data Objects」の略です。

アクセス2000以前は、DAOが使用されていました。
アクセス2000以降に、ADOが作成されました。

ADOは、DAOの後継版として開発されたオブジェクトです。
コードは、違っています。(やり方は似ています。)

アクセスでは、ADOもDAOも使用することができます。

最近では、ADOを使う方が多いようです。

以前の、Accessの「DAO」をSQL Serverに移行するときには、注意が必要です。


■2.問題点と対策

DAOを使用している場合、Accessから、SQL ServerへアップサイジングしてAccessから、ODBCでSQL Serverにリンクすると、DAOのテーブルタイプのレコードセットでは、エラーが出ます。

解決策は、ダイナセットタイプかスナップショットタイプに変更するか、ADOに変更する必要があります。

ADOでは、エラーは出ませんでした。

これから、DAOかADOを使うかを考えている方は、ADOを使った方がよいと思います。

■3.以下、レコードセット別のADOとDAOの説明です。

ADOでもDAOでも、テーブルに登録されているデータや選択クエリを実行して取得したレコードの集まりは、レコードセット(Recordset)オブジェクトで管理されます。

レコードセットのオブジェクトは、3つの種類があります。

  1. テーブルタイプ
  2. ダイナセットタイプ
  3. スナップショットタイプ

です。

それぞれについて、説明します。

  1. テーブルタイプ

    テーブルに登録されているレコードの集まりを表します。
    新規にレコードを追加したり、登録されているデータを更新したりすることができます。

    テーブルタイプでは、Accessのリンクテーブルや、ODBCからSQL Serverへのリンクテーブルではエラーが発生します。
    注意が必要です。


    ●DAOのコード例
    -------------
    Dim rs As DAO.Recordset
    Set db = CurrentDb()

    Set rs = db.OpenRecordset("TEST", dbOpenTable)
    -------------
    ●DAOの結果
    ・同じAccessの中にあるテーブルは動く。
    ・同じAccessの中にあるテーブルのクエリは動かない。
    ・Accessのリンクテーブルは動かない。
    ・SQL ServerでODBCのリンクテーブルは動かない。

  2. ダイナセットタイプ

    選択クエリを実行して取得したレコードの集まりを表します。
    新規にレコードを追加したり、登録されているデータを更新したりすることができます。
    これらの編集結果は、レコードセットのもとになったテーブルに反映されます。

    ●DAOのコード例
    -------------
    Dim rs As DAO.Recordset

    Set db = CurrentDb()

    Set rs = db.OpenRecordset("TEST", dbOpenDynaset)
    -------------
    ●DAOの結果

    ・同じAccessの中にあるテーブルは動く。
    ・同じAccessの中にあるテーブルのクエリは動く。
    ・Accessのリンクテーブルは動く。
    ・SQL ServerでODBCのリンクテーブルは動く。
     SQL Serverへのidとパスワードを入力する必要がある。

  3. スナップショットタイプ

    選択クエリを実行して取得したレコードの集まりです。
    レコードセットの内容を更新することはできません。

    ●DAOのコード例
    -------------
    Dim rs As DAO.Recordset

    Set db = CurrentDb()

    Set rs = db.OpenRecordset("TEST", dbOpenSnapshot)
    -------------
    ●DAOの結果
    ・同じAccessの中にあるテーブルは動く。
    ・同じAccessの中にあるテーブルのクエリは動く。
    ・Accessのリンクテーブルは動く。
    ・SQL ServerでODBCのリンクテーブルは動く。
     SQL Serverへのidとパスワードを入力する必要がある。


参考にしてください。



─────────────────────────────────
【03 - 編集後記    】       
─────────────────────────────────

衆議院が解散しましたね。

12月16日に選挙が行われるようです。

いろいろな政党が出来ています。
よくわからない、政党名もあります。

民主党の過去についての審判が下されますね。

政党のマニフェストをよく読んでから、投票する必要があります。

これから、日本が少しでもよくなれば良いですね。


◆私がアクセスをマスターできたのは!!
http://www.sk-access.com/kyozai/zaiko1.html  

テーブル作成からVBAまでマスターできます。 
「在庫管理システムをアクセスで作ってみよう」教材です。
http://www.sk-access.com/kyozai/zaiko2.html  


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
●ご意見・ご感想・ご質問
 
『メルマガでもっとお役にたてる情報を配信したいと思いますので、日ごろから疑問に思っていることを教えてください。
宛先はこちらへです』

  •  kohnai★vega.ocn.ne.jp
      (高内:こうない:)
    (メールするときは、★を@に変えてください)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


◎「これならわかるマイクロソフトアクセス活用法」 のバックナンバー・配信停止はこちら

archive.mag2.com/0000222659/index.html

◎以下のホームページからでもバックナンバーを見ることができます。

http://www.sk-access.com/mailmaga/index.html

登録・解除につきましてはご自身でお願いいたします。

※このメールマガジンの転送はOKですが、掲載された記事の内容を許可無く転載することをを禁止させて頂きます。
必ず事前にご相談ください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


1週間でアクセス(Access)のシステム開発ができる〜
「在庫管理システムをアクセスで作ってみよう」教材

「アクセスのプログラム/システムを短期間で開発したい方」、
「アクセスのフォーム/VBAを完全にマスターしたい方」のための
アクセス(Access)を使って1週間でシステム開発する究極の方法とは?

「アクセス(Access)のシステムを無料のSQL Server 2016 Expressへ
移行してみよう」教材

あなたの会社のアクセス(Access)のデータベースやシステムに不安を感じていませんか?
アクセスのデータ量が多くなり処理スピードが遅くなった。
アクセスのデータを共有したい。
セキュリティに不安がある。などと、感じている方は!!
(SQL Server 2016 Expressバージョンです。)


「アクセス(Access)プログラムの仕様書の作り方」教材
マイクロソフトアクセスを使用して、プログラムの作成/システム開発をおこないたい方の為に、
アクセス(Access)のプログラム開発に成功するために絶対に必要な「仕様書」とは?



[↑一番上へ]
[マイクロソフトアクセス活用法(メールマガジン)(ホームへ)]
12:370603

アクセス全体

VBA

SQL Server