開発Blog

SVF(SuperVisualFormade)とintra-martの連携について

投稿日:


※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。
最新のintra-martでは、異なる情報であることがありますので、ご注意ください。


最近、SuperVisualFormade(以下SVF)との連携を要望されるお客様が増えてまいりま した。このコラムでは、intra-martベースモジュール/フレームワークとSVFとの連携方法について詳述いたします(J2EE開発モデルでの連携方法です)。

(1)SVFの概要
図のようにユーザAPIからSVFAPI経由でSVFを呼び出します。

(2)SVF機能一覧
以下にSVFを利用する際の機能一覧を記します。

(3)コーディング例

JAVAサンプルプログラム(クエリー使用)

package servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import jp.co.fit.vfreport.*;      //SVF for WEB パッケージのインポート
public class Servlet_Sample extends HttpServlet{
static Vrw32 svf = new Vrw32();     //PDF生成クラスのインスタンス生成
static int ret;     //グローバル変数の初期化
public void init(ServletConfig config)throws ServletException{
super.init(config);     //HTTP Post リクエストの処理
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
PrintWriter out = new PrintWriter(response.getOutputStream());
response.setContentType("text/html");
ret = svf.Vrinit();     //クラスの初期化
ret = svf.VrSetDocName2("レポートライターサンプル1");     //PDFファイルのドキュメント名の設定
ret = svf.VrSetSpoolFileName2("D:\\demo\\sample.pdf");     //PDFファイル名の設定
ret = svf.VrSetForm("Sample.frm",5);     //SVFで設計したフォームの設定/
ret = svf.VrSetQuery("UID=scott;PWD=tiger","D:\\servlet\\Sample.vrq",0);    // クエリーファイルの設定
ret = svf.VrCondition("DEPTNO=10",0);     //クエリーの条件(Where句)の設定/
ret = svf.VrReport();     //クエリーの実行
ret = svf.VrPrint();     //PDFファイルの出力
ret = svf.VrQuit();     //PDFファイル出力処理終了
out.println("<html><body leftmargin=0 topmargin=0 scroll=no>)
<embed width=100% height=100% fullscreen=yes
src=\"http://10.15.20.105/DEMO/sample.pdf\"></body></html>");     //作成されたPDFファイルをブラウザに表示
out.close();
}
}


JAVAサンプルプログラム(アプリケーション側で データ抽出の場合)

package servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import jp.co.fit.vfreport.*;     //SVF for WEB パッケージのインポート
public class Servlet_Sample2 extends HttpServlet{
static Vrw32 svf = new Vrw32();     //PDF生成クラスのインスタンス生成
static int ret;     //グローバル変数の初期化
public void init(ServletConfig config)throws ServletException{
super.init(config);     //HTTP Post リクエストの処理
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
PrintWriter out = new PrintWriter(response.getOutputStream());
response.setContentType("text/html");
ret = svf.Vrinit();     //クラスの初期化
ret = svf.VrSetDocName2("レポートライターサンプル1");     //PDFファイルのドキュメント名の設定
ret = svf.VrSetSpoolFileName2("D:\\demo\sample.pdf");     //PDFファイル名の設定
ret = svf.VrSetForm("Sample.frm",4);     //SVFで設計したフォームの設定/
ret = svf.VrsOut("DEPTNO","10" );     //フィールドにデータを貼り付け
ret = svf.VrsOut("DNAME","SALES" );
ret = svf.VrsOut("LOC" ,"CHICAGO");
ret = svf.VrsOut("EMPNO","7844" );
ret = svf.VrEndRecord();     //レコードの出力
ret = svf.VrPrint();     //PDFファイルの出力
ret = svf.VrQuit();     //PDFファイル出力処理終了
(PDFファイルが生成される)
out.println("<html><body leftmargin=0 topmargin=0 scroll=no>)
<embed width=100% height=100% fullscreen=yes
src=\"http://10.15.20.105/DEMO/sample.pdf\"></body></html>");     //作成されたPDFファイルをブラウザに表示
out.close();
}
}


JAVAサンプルプログラム (PDFファイルを作らない方法)

package servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import jp.co.fit.vfreport.*;     //SVF for WEB パッケージのインポート
public class Servlet_Sample2 extends HttpServlet{
static Vrw32 svf = new Vrw32();     //PDF生成クラスのインスタンス生成
static int ret;     //グローバル変数の初期化
public void init(ServletConfig config)throws ServletException{
super.init(config);     //HTTP Post リクエストの処理
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
PrintWriter out = new PrintWriter(response.getOutputStream());
response.setContentType("application/pdf");
OutputStream os = response.getOutputStram();

ret = svf.Vrinit();     //クラスの初期化
ret = svf.VrSetDocName2("レポートライターサンプル1");     //PDFファイルのドキュメント名の設定
ret = svf.VrSetSpoolFileStream(os);     //PDFファイルをメモリー出力の設定
ret = svf.VrSetForm("Sample.frm",4);     //SVFで設計したフォームの設定
ret = svf.VrsOut("DEPTNO","10" );     //フィールドにデータを貼り付け
ret = svf.VrsOut("DNAME","SALES" );
ret = svf.VrsOut("LOC" ,"CHICAGO");
ret = svf.VrsOut("EMPNO","7844" );
ret = svf.VrEndRecord();      //レコードの出力
ret = svf.VrPrint();     //PDFファイルの出力
ret = svf.VrQuit();     //PDFファイル出力処理終了

os.close();     //作成されたPDFファイルをブラウザに表示
}
}


以上を参考に連携プログラムを作成してみてください。
ちなみにページベース開発モデルのJavaScriptからはLiveConect(Java呼び出し)を使えばできます。
SVFの提供しているのはJAVAのAPIのみなので、JavaScriptのAPIとして使いたい場合は、こちらでSVFのJAVAのAPIをラップし て、JavaScriptのAPIを作ってあげる必要があります。

以上

-開発Blog
-

執筆者:

関連記事

no image

トイレの空き状況の見える化システム

初めまして、開発本部の矢野と申します。 この記事では今までとはちょっと違い、intra-mart 社の普段の雰囲気を感じていただくために、製品の説明や紹介ではなく、私がつい最近取り組んだ日常的な仕事に …

no image

Formaの画面遷移を制御するには

今回のブログ記事では、スクリプトを利用してFormaの画面遷移を制御する方法を紹介します。 目次 条件に応じて遷移先を変更する フォーム遷移設定 サンプルコード サンプルアプリケーション 処理後の遷移 …

no image

iWPの小ネタ

開発本部の久我です。 今回は、iWPの小ネタを1つ2つ、ご紹介します。 1.スタッフロール v7.2から開発に携わった人のスタッフロールが入っています。 再生方法は、 ①システム管理者でログイン ②シ …

no image

log4jdbcを使ったSQL(JDBC)のトレース

こんにちは、開発本部の榎本です。 開発中にデータベースに対してどのようなクエリが流れているのか確認してみたいことありませんか? 以前、山寺さんが紹介していたResinのログで取得するなど、いろいろな方 …

no image

iPhone/iPad用アプリケーション im-scheduler リリース!!

先日、10月22日に弊社イベント Enterprise Web Solution 2010に多数の方がご参加頂き、 ありがとうございました。 実は、そのイベントの裏で、ひっそりと、 iPhone/iP …