こんにちは!CData の宮本です。
今回は帳票ツールのCROWNIX にCData Driver を組み込んで、Access とkintone のデータをCData JDBC Driver を使って簡単に帳票出力する方法をご紹介します。
CROWNIX とは?
簡単に基幹系DBや社内で持っているDBデータを、さまざまな形式で出力することができる帳票ツールです。
https://m2soft.co.jp/
レポートの生成・出力を行うクライアントツールはライセンスフリーで利用することができるため、コストを大幅にカットすることが見込めます。
CROWNIX はデータベース連携用モジュールとしてERS Data Server というサーバ用製品があり、Report Viewer から受けた内容をドライバーを経由してDBにSQLを発行し、受け取ったデータをReport Viewer に渡してPDFやExcelなど様々な形式にして出力します。
CData Driver とは?
さまざまなクラウドサービスやファイル、規格に標準 JDBC やODBC、 ADOなどでアクセスすることができる 製品になります。
現在では 200 近くのサービス向けのDriver を提供しています。
https://www.cdata.com/jp/drivers/kintone/jdbc/
Accessは下記リンク
https://www.cdata.com/jp/drivers/access/jdbc/
CROWNIX ERS から kintone と Access にアクセスする構成
サーバ製品のCROWNIX ERS は、JDBCインターフェースで外部DBとの接続を行いますので、CData JDBC Driver を使ってkintone と Access への接続を実現します。
クライアント側のCROWNIX Report からはCROWNIX ERS にアクセスすることで、各データソースへの接続設定をする必要なくアクセスすることが可能となります。
必要なもの
CROWNIX から kintone データをPDF出力する手順
CROWNIX のインストール
CROWNIX ではデータ接続部分のCROWNIX ERS と、帳票デザインや出力を行うCROWNIX Report をそれぞれインストールしていきます。
CROWNIX Report は以下のようにダウンロードファイルの中にあるsetup.exe を実行するだけで完了です。
ERS Data Server は、Apache Tomcat 上で動かす構成になっていますので、Java + Tomcat を事前にインストールしておきます。
それぞれのインストールおよび環境変数やファイアウォールなどの設定はERS 導入用のマニュアルに記載されていますので省略します。
上記までの準備ができたあと、ダウンロードしたERSモジュールをTomcat 上にコピーするだけであとはOKです。
次は、CData JDBC Driver のインストールを行っていきます。
CData JDBC Driver のインストール
今回はkintone とAccess への接続を行いますので、それぞれのJDBC Driver をインストールしていきます。
以下リンクからCData kintone JDBC Driver の画面にアクセスし、ダウンロードボタンからJDBC Driver をダウンロードします。
https://www.cdata.com/jp/drivers/kintone/jdbc/
ダウンロードファイルを解凍後、中にあるjar ファイルをダブルクリックすることでインストールが開始されます。
基本的に全て次へでインストールが完了します。
同じ要領で、CData Access JDBC Driver もインストールします。
※インストール部分は省略します。
https://www.cdata.com/jp/drivers/access/jdbc/
CData JDBC Driver の再配置
インストールしたkintone と、Access のjarファイルおよびライセンスファイルをERS Data Server のlibフォルダにコピーします。
■コピー元
■コピー先
データソースへのコネクション設定
まずはERS Data Server を起動するために、tomcatのstartup.bat を実行します。
実行後ログインし、サイドメニューから「データソース」→「Database」→「JDBC」と進み、接続情報を入力します。
kintone の場合、サンプルになりますが以下のようなURLを設定します。
jdbc:kintone:URL=https://xlqc1.cybozu.com/;User=xxxxxx;Password=xxxxxx;
なお、driver の位置に入れるドライバークラス名は、インストールフォルダにあるヘルプドキュメントにも記載していますので、他のデータソースのドライバーを使用の場合はここを参照ください。
Access も同様に設定します。
それぞれ接続テストでOKならば、設定情報を保存します。
登録したサービスの有効化
「権限設定」→「権限変更」をクリックします。
先ほど作成したデータソースが「すべてのサービスリスト」に表示されているので、両方を選択して左側の「サービスメンバー」に移動して保存します。
Report Designer で帳票レイアウトの作成~データマッピング
帳票レイアウト作成
Report Designer を起動させ、新規レポートから「表」→データベースの接続方式に「Data Server」を選択したらOK ボタンをクリックします。
ヘッダーから表を選択して挿入し、kintone に保存しているデータを出力する明細表を作成します。
※Accessでも同じフォーマットを使用します。
kintoneデータのマッピング
次は実際にkintone、Access にアクセスしてデータを取得します。
ヘッダーの「データソース」から「データベース接続」をクリックし、ERS Data Server へのURLとアカウント情報を入力後に「認証」ボタンをクリックします。
接続に成功すると、登録されたサービス名の一覧に先ほど有効化したサービス(データソース)が表示されますので、両方を選択して「接続」ボタンをクリックします。
あとは取得したいデータをSQLで定義します。
クエリの定義をクリックしてクエリ定義画面を表示し、対象のテーブルを選択します。まずはkintone にある活動履歴(営業支援パック)アプリのデータを選択します。
取得したいカラムを選択します。今回は特に条件は設定しないので、表示順序の設定を行うため「次へ」ではなく、「整列」タブをクリックします。
Id を昇順で指定しました。
最後に「クエリを実行してカラム名を読み取り」をチェックします。チェックをすることでReport Designer のデータセットにカラム名だけを表示して扱うことができます。
入力が終わりましたら下にある「SQL検証」ボタンをクリックして、正しくSQLが実行できることを確認し、問題なければOKボタンをクリックします。
OKボタンを押下後は取得対象項目が左側に表示されますので、あとは一つずつドラッグアンドドロップでレイアウト側の該当箇所と紐づけを行います。
ここで、一度設定した内容を保存しておきます。
kintone データの出力
ホームタブから「プレビュー」→「Report Viewerでプレビュー」をクリックします。
このようにkintone にあるデータが帳票レイアウトにマッピングされて表示されました。プレビューから実際にファイルに出力する場合は、ヘッダーメニューからExcel やPDF などを選択します。
以下は、PDFを選択した場合の出力結果です。
Access データの出力
それでは、今度はデータソースをAccess に変更してみます。
Access には先ほどkintone で使用したテーブルと同じ構成のデータを保存してあります。違いとしては、担当者名や案件にAccessと付与しているくらいです。
Report Designer にてクエリの定義でAccess のテーブルからデータを取得するようサービスのプルダウンから「Access」を選択します。その後、対象のテーブルや項目を選択してクエリを保存します。
データのマッピングを行った後、またプレビューを実行して今度はAccess にあるデータを出力してみます。
Access に保存していたデータが正しく出力されていることが確認できました。
Access データ取込み時にOut of memory が発生する場合
Accessのテーブルの項目にて、データ型に長いテキストというカラムがある場合、
このテーブルをReport Designer で選択してレコードの表示ボタンでSQL を実行しますと、Out of memory というエラーメッセージが表示されてしまいます。
実際にAccess との接続を行っているCData JDBC Driver のログを参照して、Access からデータを取得する際にエラーが発生しているのかどうか確認してみます。ログの出力方法は、ERS Data Server の接続情報に以下の内容を追加することでログを取得することができます。
例)Logfile=C:\log\access.log;Verbosity=5;
※Verbosityとはログレベルになり、1が最小、5が最大となっています。詳しくは以下の記事をご参照下ください。
https://www.cdata.com/jp/blog/2018-12-07-110000
CData のログでは以下のようにデータ取得が正常に完了していることから、CData JDBC Driver → ERS Data Server へデータを渡したあとにエラーが発生していることがわかりました。
実はこの場合、テキスト型にキャストすることでERS Data Server では弾かれていた型の項目も扱えるようになります。キャスト方法は以下のような内容になります。
例)CAST(Access活動履歴.顧客名 AS String) as 顧客名
Access とCData JDBC Driver のデータ型のマッピングについては以下のヘルプドキュメントをご参照ください。
CData JDBC Driver for Access 2019J - データ型マッピング
SQL を修正後にプレビューを行ってみると、先ほど出ていた「Out of memory 」というエラーが解消されてAccess のデータが表示できました。
さいごに
いかがでしたでしょうか。CROWNIX とCData JDBC Driver を組み合わせることで、クラウドサービスやJDBC ではアクセスできないツールなどのデータも帳票出力することができるようになります。
CData JDBC Driver 以外にもODBC Driver や ADO.NET、Excel Add-ins など全製品を30日間無料で使うことができますので、是非お試しくださいませ。
www.cdata.com
関連コンテンツ