Microsoft Access Club >SQL入門講座 >このページ >次頁 < 前項  サイト内検索
 

SQLの実行方法 - ADOのExcuteメソッド : SQL入門講座



Access2000バージョンからDAOと共にADOが利用できるようになりました。このADOは、AccessのみならずSQLServerなどと連携がしやすいという利点があります。ADOを用いてSQLを実行する 点ではDAOと同様に、定型のプロシージャを記述することで対処できます。但し、以下の点に十分注意して下さい。

ADOのExcuteメソッドでアクションクエリを実行する

  • 選択クエリは、Excuteメソッドを用いることはできません。アクションクエリのみ、Excuteメソッドで実行が可能です。 これは、DAOと同様です。

この場合は、ADOXでクエリを新規作成することができます。新しいクエリを作成し、そのクエリを実行する訳です。 *レコードセットを用いてテーブルレコードを取り込み、クエリを作成する方法もあります。

ADOXで新規クエリを作成する

ADOXにおけるクエリは、ViewsコレクションまたはProceduresコレクションで管理されています。
  • Viewsコレクションは,パラメータを含まない選択クエリを管理するコレクションです。
  • Proceduresコレクションは,パラメータを含んだ選択クエリとアクションクエリを管理するコレクションです。
注意
  1. ADOXを利用するには、「参照設定」ダイアログを開き、Microsoft ADO Ext.2.7 for DDL and Security を下記のように有効にします。

事例 : ADOのExcuteメソッド

Exceuteメソッドを用いたサンプルプロシージャ を作成します。なお、以下のプロシージャはテーブルレコードを全て削除しますから、コピーを手元においておきましょう。

Sub MySQLDelete()

    Dim cn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim mySQL As String
    
    Set cn = CurrentProject.Connection
        
    mySQL = "DELETE * FROM 出張管理;"
 
    cmd.ActiveConnection = cn
    cmd.CommandText = mySQL

    If MsgBox("全レコードを削除します。", vbYesNo) = vbYes Then
        cmd.Execute
    End If
                            
    cn.Close: Set cn = Nothing
    
End Sub
解説
  1. ADOは、Access2000以上のバージョンでのみ利用可能です。
  2. 上記のプロシージャは、ADOでExcuteメソッドを用いる際の定型文です。
  3. Exceuteメソッドは、アクションクエリのみ実行することができます。選択クエリを実行すると、 エラーは発生しませんが、何も変化がありません。
  4. ExceuteメソッドでSQLステートメントを実行すると、Access所定の警告メッセージ は表示されません。

事例 : ADOXによる選択クエリの作成 - Viewsコレクション

ADOでクエリを作成するには、ADOXオブジェクトを用いて行います。以下のサンプルプロシージャは、パラメータを持たない選択クエリを作成します。

Sub MySQLSelect()

    Dim cat As ADODB.Catalog
    Dim cmd As ADODB.Command
    
    'カレントデータベースに接続します。
    Set cat = New ADOX.Catalog
    cat.ActiveConnection = CurrentProject.Connection
    
    'クエリを定義します。
    Set cmd = New ADODB.Command
    cmd.CommandText = "SELECT * FROM 出張管理;"

    '選択クエリを作成します。
    cat.Views.Append "Q_出張管理", cmd
    
    DoCmd.OpenQuery "Q_出張管理"
    
    Set cmd = Nothing
    Set cat = Nothing
    
End Sub

このプロシージャを実行すると、パラメータを持たない「Q_出張管理」選択クエリが作成されます。

解説

ADOXオブジェクトでクエリを作成する場合、以下の点に注意してください。

  1. Catalogオブジェクトを開きます。
  2. 新規にCommandオブジェクトを作成します。
  3. CommandオブジェクトのCommandTextプロパティにSQLステートメントを記述します。
  4. ViewsコレクションまたはProceduresコレクションにCommandオブジェクトを追加します。
  5. コレクションにオブジェクトを追加するにはAppendメソッドを利用します。

事例 : ADOXによるアクションクエリの作成 - Proceduresコレクション

アクションクエリやパラメータを持つ選択クエリを作成する場合は、Proceduresコレクションを用いて以下のように記述します。

Sub MySQLDelete()

    Dim cat As ADOX.Catalog
    Dim cmd As ADODB.Command
    
    'カレントデータベースに接続します。
    Set cat = New ADOX.Catalog
    cat.ActiveConnection = CurrentProject.Connection
    
    'クエリを定義します。
    Set cmd = New ADODB.Command
    cmd.CommandText = "SELECT * FROM 出張管理;"

    'アクションクエリを作成します。
    cat.Procedures.Append "Q_ADO出張管理", cmd
    
    Set cmd = Nothing
    Set cat = Nothing
    
End Sub
解説
  1. ViewsコレクションがProceduresコレクションに置き換わっている以外、上記プロシージャと同様です。

関連ページ

2004/08/09

ページの先頭へ 前ページへ戻る

 


SQLの実行方法 - ADOのExcuteメソッド : SQL入門講座


-Microsoft Access Club-

年額2,400円でドメインネームサーバーをご用意します。自宅サーバ構築時にご利用下さい。自宅サーバーは応用範囲が広いです。
年額2,400円でドメインネームサーバー。
自社・自宅サーバ構築時にご利用下さい。
やはり、自前サーバーは応用範囲が広いです。