Excel‐Oracle連携(3) Page 1/4

ExcelからOracleを更新できれば大助かり

日本オラクル
宮本 尚志
2005/9/9

企業の部門内に蓄積された大量のExcelデータをデータベースで管理したい。あるいは、Excelで作成した業務書類からシステムに手作業でデータ入力する工数を削減したい。このようなニーズに応えるべく、OracleデータベースにはExcelからOracleへのさまざまな連携機能が備わっている。(編集部)

はじめに

主な内容
--Page 1--
はじめに
マクロを使用する方法
更新処理における注意点
--Page 2--
 −Excelで変更行を判別する方法
 −更新操作における同時実行性の制御
--Page 3--
KeySQLを使用する方法
 −事前準備
 −KeySQLのGUIから更新
--Page 4--
KeySQLのマクロを使用する方法
KeySQLの誤操作対策
まとめ

 前回までの記事では、ExcelのデータをOracleデータベースに格納する方法と、OracleデータベースのデータをExcelから検索する方法について紹介してきました。最終回となる今回は、ExcelからOracleデータベースのデータを更新する方法について解説します。

 OracleデータベースのデータをExcelで更新する主な方法は、VBAマクロを使用する方法と、KeySQLを使用する方法の2つです。本記事では、それぞれについて具体的な方法を紹介します。

 XMLを利用して簡単に更新する方法もありますが、この方法ではXMLを利用して格納したデータしか変更できません。Oracleデータベース内の通常の表を更新する用途では使えないため、今回の記事では触れません。XMLを利用したデータ格納に関しては「ExcelデータをOracleに格納する裏技」を参照してください。ほかにもODP.NETを利用した方法など、さまざまな方法がありますが、本記事では触れません。

マクロを使用する方法

 VBAマクロでOracleデータベースのデータを更新する方法は、第2回「お手軽が一番、ExcelをOracleクライアントに」で紹介した検索の場合と同様で、SELECT文がUPDATE文に変わるだけです。以下のミドルウェアごとのコードを見てみましょう。

  • ActiveX Data Objects(以下、ADO)からODBCドライバを使用する方法
  • ADOからOLE DBドライバを使用する方法
  • Oracle Objects for OLE(以下、oo4o)を使用する方法
Private Function updateSql(Row As String) As String
  Dim strSql As String    
  strSql = "update ""商品情報"" set "
  strSql = strSql & """価格"" = '" & Cells(Row, 10) & "'"
  strSql = strSql & "where ""商品ID""='" & Cells(Row, 2) & "'"
  oraconn.Execute (strSql)
End Function
リスト1 ADO+ODBC、ADO+OLE DBによるデータベースの更新

Private Function updateSql(Row As String) As String
  Dim strSql As String    
  strSql = "update ""商品情報"" set "
  strSql = strSql & """価格"" = '" & Cells(Row, 10) & "'"
  strSql = strSql & "where ""商品ID""='" & Cells(Row, 2) & "'"
  OraDB.ExecuteSQL (strSql)
End Function
リスト2 oo4oによるデータベースの更新

 上記リストのように、更新を行うUPDATE文の発行そのものは、SELECT文の発行とまったく同じ手順であり、簡単です。検索を行うマクロ同様、上記リストにデータベースへの接続部分を加えれば動作します。データベースへの接続を行うマクロに関しては、第2回を参照してください。

更新処理における注意点

 ただし、更新処理を行う場合、検索処理と違っていくつか注意すべきポイントがあります。まず、Excelシート上での変更行がどの行なのか判別する必要があります。Oracleデータベースの表全体に対して更新処理をすると、サーバ側にかかる負荷は高くなりますので、通常はExcelシート上のどの行が更新されたかをExcel側で判別して、その行のみを対象としてUPDATE文を発行します。当然ながら、それが更新(UPDATE)なのか、削除(DELETE)なのか、追加(INSERT)なのかも判別する必要があります。

 さらに、Oracleデータベースのデータを複数の人が変更する可能性がある場合、検索してから更新するまでの間に、ほかの人が同じデータを変更しているかもしれません。そういった場合にそれを無視して変更処理を行うのか、それとも確認ダイアログを表示させるのか、あるいは処理を失敗させるのか、といった制御についても考慮する必要があるでしょう。(次ページに続く)

  1/4

 Index
Excel‐Oracle連携(3)
ExcelからOracleを更新できれば大助かり
Page 1
・はじめに
・マクロを使用する方法
・更新処理における注意点
  Page 2
 −Excelで変更行を判別する方法
 −更新操作における同時実行性の制御
  Page 3
・KeySQLを使用する方法
 −事前準備
 −KeySQLのGUIから更新
  Page 4
・KeySQLのマクロを使用する方法
・KeySQLの誤操作対策
・まとめ


Excel‐Oracle連携

TechTargetジャパン

Database Expert フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH