BEAGLE-HC 医薬品、医療機器の研究・開発 ポータルサイト
 現在位置 : HOME > ITの活用 プログラミング > Access コードライブラリアン(データベースの操作)
くすりのこと
 治療薬の最前線
データブック
 ヘルスケア市場
 データブック
 (売上ランキング)
ニュース
 企業ニュース
 (パイプラインニュース)
 (財務・決算ニュース)
 (M&Aニュース)
 メディアニュース
ITの活用
 バリデーション
 セキュリティ
 WORD文書の作成
 プログラミング
 (Word/VBA)
 (Excel/VBA)
 (Access/VBA)
 (SAS)
 (SQL)
イベント
 イベントカレンダ
製薬会社研究
 製薬会社
 製薬会社研究
 決算短信一覧
 
 
Accessからデータベースへアクセスする方法はいくつかありますが、主要なものは以下のの4つです。
  (1) ADO(ActiveX Data Objects)を使用してデータベースを操作する
  (2) Oracle Objects for OLE(OO4O)を使用する方法
  (3) DAO(データ アクセス オブジェクト)を使用してデータベースを操作する方法
  (4) データベース・サーバのフロントエンドとしてAccessを利用する方法(データベースとリンクする)
 
Page Index (@〜Aは別ページへジャンプします)
@ ADO(ActiveX Data Objects)を使用してデータベースを操作する
ADO は OLEDB プロバイダが提供されているあらゆるデータベースとの通信を行うことを視野にいれたオブジェクトライブラリです。
 
A OO4O(Oracle Objects for OLE)を使用してデータベースを操作する
OO4O は Oracle データベースのみを対象にしたインターフェースです。
 
B DAO(データ アクセス オブジェクト)を使用してデータベースを操作する
 Microsoft Jetデータベースエンジンを経由してAccessデータベースに接続するものです。
DAO はそもそも Jet データベースエンジンを対象にして開発されているのでJetのもつセキュリティ機能、データ定義機能、レプリケ-ション機能などを十分に操作することができます。

  事前の準備として、[ツール]→[参照設定]で、「MIcrosoft DAO3.6ObjectLibrary」をチェックしておきます

  DBEngine
    ├ Error
    │
    └
Workspace
       ├
Database 
       │  └ Table ── 
QueryDef ─ Recordset ─ Relation ─ Container
       │    ├ Field   ├
Field       └ Field    └ Field   └ Document
       │    └ Index   └
Parameter
       │       └ Field
       ├ Group
        │  └ User
       └ User
          └ Group

 
  @オブジェクト変数を宣言する
  Aデータベースに接続する
  Bレコードセットを作成する(Recordset) Databaseクラスメンバー
  Cレコードを検索する(FindFirst他) Recordsetクラスメンバー
  Dレコードを更新する(Edit、Update) Recordsetクラスメンバー
  Eレコードを追加する(AddNew、Update) Recordsetクラスメンバー
  Fレコードを削除する(Delete) Recordsetクラスメンバー
  Gアクションクエリ、SQLを実行する(Execute) Databaseクラスメンバー
  Hオブジェクトを閉じる(Close) Databaseクラスメンバー
  IDoCmdを使用してSQLを実行する
  JDoCmdを使用してクエリを実行する
 
C データベース・サーバのフロントエンドとしてAccessを利用する
 Microsoft AccessはODBCインターフェイスを介して、現在使われている主要なデータベースサーバとシームレスに接続することができます。
 Accessを介することで、単純なデータ入力は、Accessの標準的な機能である「テーブル」や「フォーム」によって行うことができるし、蓄積されたデータを処理したいという場合にも「クエリ」を使えば、エンド・ユーザーが視覚的にデータ分析することが可能です。インポート・エクスポート機能などを使用すれば、Microsoft Excelなどのソフトウェアと手軽に連携することもできます。

 参照 : データベース・サーバのフロントエンドとしてAccessを利用する @IT:Windows TIPS
      Oracle のデータを Access で抽出し新規のテーブルを作る

     Access2000から接続してみる
 
TIPS
ORACLEのデータベースを開く・閉じる Access a Go! Go!

ADOを用いたデータベースアクセス手法 
 
本章では、データベースの操作についてコードサンプルを示しながら説明していきます。
(DAOによる操作)
DAO オブジェクト変数を宣言する ↑ このページの最初へ
Dim wk_DB As DAO.Database   'データベースオブジェクト
Dim wk_RS As DAO.Recordset   'レコードセットオブジェクト
 
DAO データベースに接続する ↑ このページの最初へ
'カレントデータベースに接続する(通常はこちら)
  Set wk_DB = CurrentDb()

'他のAccessデータベースに接続する
  Set wk_DB = DBEngine.Workspaces(0).OpenDatabase("C:\アクセス.mdb")
 
DAO レコードセットを作成する ↑ このページの最初へ
新しく Recordset オブジェクトを作成し、Recordsets コレクションに追加します。

@Recordsetオブジェクトの作成
   'テーブルに登録されているレコードの集りをRecordsコレクションに作成する
   Set wk_RS = wk_Db.OpenRecordset("テーブル名",dbopenTable)

   'SQLで抽出したレコードの集りをRecordsコレクションに作成する(レコードを更新しない場合に使用します)
   Set wk_RS = wk_DB.OpenRecordset("SQL文", dbOpenSnapshot)

   
'SQLで抽出したレコードの集りをRecordsコレクションに作成する(レコードを更新する場合に使用します)
   Set wk_RS = wk_Db.OpenRecordset("SQL文",dbopenDynaset) 'SQLで抽出したレコード、レコードを更新

   
'選択クエリで抽出したレコードの集りをRecordsコレクションに作成する
   Set wk_RS = wk_Db.OpenRecordset("クエリ名",dbopenDynaset)


Aレコードセット内のカーソルの移動
抽出した結果セット(レコードセット)に対して、1レコードづつ処理します。

 ・カーソルを先頭レコードへ移動する
    wk_RS.MoveFirst

 ・カーソルを1つ前のレコードへ移動する
    wk_RS.MovePrevious

 ・カーソル次のレコードへ移動する
    wk_RS.MoveNext

 ・カーソル最終レコードへ移動する
    wk_RS.MoveLast

 ・指定したレコード番号を基準にしてカーソル前後に移動する

    wk_RS.Move[n]

BFieldの参照
 ・インデックス番号による記述
    wk_RS.Fields(インデックス番号)   '項目の順番に0から始まる番号

 ・オブジェクトの名前による記述(以下のいづれか)

    wk_RS.Fields("フィールド名")
    wk_RS.Fields!フィールド名
    wk_RS!フィールド名


CBOF、EOF プロパティ
  BOF カレント レコードの位置が最初のレコードよりも前にある場合True
  EOF カレント レコードの位置が最後のレコードよりも後にある場合True

  レコードがないRecordsetは、BOF、 EOF共にTrue に設定される

Dレコード件数(プロパティ)
 ・wk_RS.RecordCount
 
例:条件に合致するRecordを検索し、Recordsetを作成する

Dim wk_DB As DAO.Database   'データベースオブジェクト
Dim wk_RS As DAO.Recordset   'レコードセットオブジェクト
Dim wk_SQL As String

wk_SQL = "Select * From JOBS Where JOB_ID = """ & wk-Text1 & """"
Set wk_DB = CurrentDb()
Set wk_RS = wk_DB.OpenRecordset(wk_SQL, dbOpenSnapshot)

If wk_RS.RecordCount <> 0 Then
  "検索成功
Else
  "検索失敗
End If

wk_DB.Close
wk_RS.Close

 
 
DAO レコードを検索する ↑ このページの最初へ
Recordsetから条件に合致するRecordを検索する

@検索の種類
 ・FindFirst : 検索条件に合致したRecordset内の最初のレコードを読み込む
   Set wk_RS = Db.OpenRecordset("テーブル名",dbopenDynaset)
   wk_RS.FindFirst "フィールド名=あいうえお'"

 ・FindLast
 : 検索条件に合致したRecordset内の最後のレコードを読み込む
    wk_RS.MovePrevious

 ・FindNext : 現在読み込まれているレコードの次のレコードを読み込む
    wk_RS.MoveNext

 ・FindPrevious : 現在読み込まれているレコードの一つ前のレコードを読み込む
    wk_RS.MoveLast


ANoMatch プロパティ
 検索が成功した場合、NoMatch プロパティは False になる
   If wk_RS.NoMatch = False Then      '検索に成功
 
例:テーブル"JOBS"の内容をテキスト形式のCSVに出力する

Dim csvFILENAME As String
Dim wk_DB As Database
Dim wk_Rec As Recordset

csvFILENAME = CurrentProject.Path & "\csvJOBS.txt"
Open csvFILENAME For Output As #1

Set wk_DB = CurrentDb()
Set wk_Rec = wk_DB.OpenRecordset("JOBS", dbOpenTable)

Do Until wk_Rec.EOF = True
  Write #1, wk_Rec.Fields("JOB_ID"), wk_Rec.Fields("JOB_TITLE"), wk_Rec.Fields("MIN_SALARY")
  wk_Rec.MoveNext
Loop

wk_Rec.Close
wk_DB.Close

Close #1
 
DAO レコードを更新する ↑ このページの最初へ
@更新の手順
 ・編集するレコードをカレントレコードに移動する
   wk_RS.MoveNext

 ・Editメソッドを利用して編集用のバッファを用意する
   wk_RS.Edit

 ・レコードを編集する
   wk_RS!フィールド名 = "更新内容"

 ・Updateメソッドを実行してRecordsetオブジェクトに変更内容を保存する

   wk_RS.Update

ACancelUpdateメソッド
  変更したレコードを保存しないでEditメソッドの実行を終了する
   wk_RS.CancelUpdate
 
DAO レコードを追加する ↑ このページの最初へ
追加の手順
 ・Addメソッドを利用して編集用のバッファを用意する
   wk_RS.AddNew

 ・レコードを編集する
   wk_RS!フィールド名 = "追加内容"

 ・Updateメソッドを実行してRecordsetオブジェクトに変更内容を保存する

   wk_RS.Update
 
DAO レコードを削除する ↑ このページの最初へ
削除の手順
 ・削除するレコードをカレントレコードに移動する
   wk_RS.MoveNext

 ・レコードを削除する
   wk_RS.Delete
 
DAO アクション クエリー、SQL ステートメントを実行する(Excecute) ↑ このページの最初へ
アクション クエリー(データのコピーと変更を行うクエリー)または SQL ステートメントを実行する
@SQL ステートメントを実行
  Dim wk_DB As DAO.Database
  Set wk_DB = CurrentDb
  wk_DB.Execute ("SQL文")

Aアクションクエリを実行
  
With CurrentDb().QueryDefs("クエリ名")
.   
Parameters(0) = パラメータ値
.   
Parametaers
(1) = パラメータ値
.   
Execute
  End With
 
DAO オブジェクトを閉じる ↑ このページの最初へ
開いている DAO オブジェクト(Database、TableDef、Recordset、QueryDef)を閉じる
  wk_RS.Close
  Set wk_RS = Nothing

  wk_DB.Close
  Set wk_DB = Nothing
 
DoCmdを使用してSQLを実行する ↑ このページの最初へ
DAOメソッドと組み合わせて使用できる
  DoCmd.SetWarnings False  '警告メッセージを非表示にする
  DoCmd.RunSQL SQL文     
  DoCmd.SetWarnings True   '元に戻す
 
DoCmdを使用してクエリを実行する ↑ このページの最初へ
DAOメソッドと組み合わせて使用できる
.  DoCmd.SetWarnings False  '警告メッセージを非表示にする
  DoCmd.OpenQuery "年次売上高", , acReadOnly  '[年次売上高] クエリをデータシート ビューで開く
  DoCmd.SetWarnings True   '元に戻す

↑ このページの最初へ

   ご意見・ご感想をお寄せください。 ‖ お問い合わせはこちらから ‖ このサイトについて           サイトマップ  ‖
  Copyright 2006 - 2013 uTRAM Corp. All Rights Reserved
 
PHARCIS(ヘルスケア最新情報提供)
Facebook for PHARCIS
ClinMark8
アクセスランキング
(2013年5月)

1位 企業ニュース
2位 売上ランキング
3位 メディアニュース
4位 製薬会社
5位 治療薬の最前線
6位 決算短信一覧
7位 データブック
8位 製薬会社研究
9位 イベントカレンダ
10位 パイプラインニュース