連載
» 2005年09月09日 00時00分 公開

Excel‐Oracle連携(3):ExcelからOracleを更新できれば大助かり (4/4)

[宮本尚志,@IT]
前のページへ 1|2|3|4       

KeySQLのマクロを使用する方法

 検索の場合と同じように、KeySQLの画面から「ファイル」→「マクロファイルに保存」を選択して、Excelで実行可能なVBAマクロを生成することができます(図6)。更新を行うマクロを作成する場合は、「作成方法」内の設定を図6のように選択します。

図6 KeySQLのマクロファイル生成のオプション(画像をクリックすると拡大します) 図6 KeySQLのマクロファイル生成のオプション(画像をクリックすると拡大します)
図7 更新系マクロ作成のオプション 図7 更新系マクロ作成のオプション

  図6のように指定すると、Excelから直接実行可能な、更新処理を行うVBAのプロシージャ(リスト6)と宣言部が生成されます。宣言部はExcelマクロの標準モジュールとして入力してください。リスト6のマクロでは、Book1のSheet1上の10〜20行目までを更新することになります。図7の「更新系マクロ作成のオプション」で、「更新」ではなく「追加」や「削除」を選択した場合は、リスト6のKeySQLUpdateファンクションが追加や削除のファンクションに置き換わったプロシージャが生成されます。

Public Sub KeySQLサンプルマクロ()
    Windows("Book1").Activate
    Sheets("Sheet1").Activate
    Range("A1").Activate
    On Error GoTo CloseAndQuit
    ' レコードの更新を行います。
    Status = KeySQLUpdate(10,20,TRUE)
    If IsError(Status) Then GoTo CloseAndQuit
  CloseAndQuit:
End Sub
リスト6 KeySQLから生成されるマクロ

 このように更新処理についてもGUI操作で簡単にマクロを生成できますが、これらのマクロを使用するにはデータベースへの接続処理などが必要になります。その際、oo4oなどを使用した通常のマクロとは違い、更新対象の表から検索を行ったのと同じ接続を使う必要があります。従って、検索をしてから更新するまでの間はデータベースに接続したままの状態にしておくか、あるいは更新を行う際は内部的に検索処理も行うようにするかのどちらかの方法を取ることになります。ただ、データベースへの接続、検索に関してもKeySQLで自動生成できるため、手作業でコーディングする部分はほとんどありません。

KeySQLの誤操作対策

 このように、ExcelからOracleデータベースのデータを更新することは簡単に行えますが、その分操作ミスにより誤った変更処理がなされてしまう可能性もあります。KeySQLでは、そのような非常事態にOracleデータベースの表を過去の状態に戻すことが可能です。図8のように表を右クリックすると「フラッシュバックテーブル」というメニューがあります。

図8 フラッシュバックテーブル(画像をクリックすると拡大します) 図8 フラッシュバックテーブル(画像をクリックすると拡大します)

 このメニューを選択すると、図9のようなダイアログが開くので、どの時点に戻すかを指定すると、表の中身が指定した時点でのデータに戻ります。

図9 フラッシュバックテーブルの設定 図9 フラッシュバックテーブルの設定

 一度に大量のデータを変更してしまった場合など、手作業で元のデータに戻すことが困難な場合でも、この機能を使えば簡単にデータを復旧させることができます。

 ただし、この操作を行うと、表の中身はすべて指定した時点のものになります。特定の行だけを過去の状態に戻す、ということはこの機能ではできません。また、この機能はOracleデータベースの機能であり、実際にはデータベースのUNDO表領域内に存在する過去のデータを使用するため、UNDO表領域にデータが残っていない場合には、過去の状態に戻すことができません。どの時点までデータを戻すことができるかは、初期化パラメータ「UNDO_RETENTION」の値とUNDO表領域のサイズに依存します。また、Oracleデータベースのバージョンが10.1以上、かつEnterprise Editionである必要がありますので注意してください。

まとめ

 本連載では、第1回でExcelデータをOracleデータベースにロードする方法、第2回でExcelからOracleデータベースを検索する方法、そして最終回である今回は更新する方法について紹介してきました。いまやOracleデータベースを利用するアプリケーションといえば、Java言語によるWebアプリケーションが一般的かもしれませんが、ExcelあるいはAccessとOracleデータベースを連携させたい、というユーザーも多いです。本連載が、そういったことを検討されている皆さまのお役に立ったなら幸いです。(連載完)

前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。