[SQL] PATDATAを活用しよう(1)
本日期限
以前のひと言でPATDATA World Edition(以下、「PATDATA」)が利用しているCaché SQLの使い方に関して記載いたしました。今回は、シリーズとしてPATDATAを専用ソフトだけでなくDatabaseに直接アクセスして、データを参照する方法を紹介していきます。
PATDATA World Edition
前にも書きましたが、PATDATAは、日本パテントデータサービス株式会社様が開発・販売する特許・実用新案・意匠・商標の期限管理ソフトです。数多くの特許事務所がPATDATAを利用しております。期限管理ソフトとして、日本国内出願のみならず海外出願の案件も管理ができ、ファミリーとしても管理できるので非常に便利であり、優れたソフトウェアです。PATDATAは、ネットワーク版と スタンドアロン版とがあり、ネットワーク版は、サーバーに1つ入れて、それに対して複数のクライアントからアクセスするというものです。
ただ、このサーバー・クライアント型のネットワーク版を導入してもアクセスするクライアントは、保守契約に入らなければならず、1台につき年間3万円(2016年12月現在)の費用がかかります。便利なソフトですが、事務員のみならず全員のPCに導入するには高価なシステムとなってしまいます。
そこで思いついたのが、Cachéのドライバーを利用して読み取り専用で閲覧することです。いろいろな帳票や管理リストが作れます。データを直接アクセスするので、リアルタイムに期限の状況を把握することが可能です。一度、PATDATAを導入したのなら使い倒したいものです。
Microsoft Excelとの連携
今回は、Microsoft株式会社のExcelのVBAを使ってデータを読み込ませる方法を紹介します。課題は、日本の特許出願における中間(拒絶理由通知)の期限管理です。その当日の期限を表示するものを今回は作ります。まずは必要な外部オブジェクトを利用するための設定を行います。Alt-F11等でVisual Basic エディター(以下、「VBエディター」)を開いて、[ツール] > [参照設定]に行きます。
データベースにアクセスするためにここでは、「Microsoft ActiveX Data Objects Library」が必要なのでチェックを入れます。ADODB関連のデータ型を使用するためです。あとは、下記のスクリプトをVBエディターに転記してください。
Visual Basic部分
Visual Basic部分は、コードのコメントに、説明を記載します。
Sub todaysDue()
Dim adoCON As ADODB.Connection
Dim adoRS As ADODB.Recordset
Dim strSQL As String
Dim i As Integer
'データベースの接続 & 初期化
Set adoCON = New ADODB.Connection
' ODBCのDSNで開く。設定は、「PDWREAD」
adoCON.Open ("DSN=PDWREAD")
'# 本日の期限と整理番号を取得 SQL文の説明は後述。
strSQL = "Select M期限.期限日 As OA, M受付.当方整理番号 From M期限 Inner Join M出願準備 On M期限.SYSID = M出願準備.SYSID Inner Join M受付 On M出願準備.SYSID = M受付.SYSID Where M期限.期限日 = Current_Date And M出願準備.国コード = 'JP' And (M出願準備.法域コード = '01' Or M出願準備.法域コード = '02') And M出願準備.国内区分コード = '01' And M期限.期限コード = '022' Order By M期限.期限日"
Set adoRS = adoCON.Execute(strSQL)
'テーブルの読み込み
i = 1
Do Until adoRS.EOF 'レコードセットが終了するまで処理を繰り返す
Cells(i + 1, 2).Value = adoRS![OA] '2列目にOA期限日を表示
Cells(i + 1, 3).Value = adoRS![当方整理番号] '3列目に整理番号を表示
adoRS.MoveNext '次のレコードに移動する
i = i + 1
Loop
'閉じる
adoRS.Close
Set adoRS = Nothing
adoCON.Close
Set adoCON = Nothing
End Sub
ODBCのユーザーDSNは、[PDWREAD]に設定している前提です。
SQL部分
次にSELECT文だけ表示します。わかりやすいように改行してインデントをつけました。
Select M期限.期限日 As OA, M受付.当方整理番号
From M期限
Inner Join M出願準備 On M期限.SYSID = M出願準備.SYSID
Inner Join M受付 On M出願準備.SYSID = M受付.SYSID
Where M期限.期限日 = Current_Date
And M期限.期限コード = '022'
And M出願準備.国コード = 'JP'
And M出願準備.法域コード = '01'
Order By M期限.期限日"
PATDATAは、期限検索を早くするためにすべての期限を[M期限]というテーブルを有しています。そこで、[M期限]の[期限日]をCurrent_Date(本日)に絞り込みます(Where部分参照)。その他、[M期限]の[期限コード]を中間である’022’に絞り込みます。その他には、[M出願準備]テーブルにある[国コード]や[法域コード]をそれぞれ’JP’及び’01’に絞り込めば、目的のデータを取得することができます。
結果表示
結果は、左図のようになります。ヘッダーを準備しておけば、それなりに期限管理表になってきます。今回の期限日は、当日ということで実際には意味がありませんが、期限日の絞り込みを期間にするなどすれば有効になると思います。
では、簡単ではありますが、「PATDATAを活用しよう」第1回は、これにて終了です。