LoginSignup
0

More than 3 years have passed since last update.

[帳票編]帳票印刷

Last updated at Posted at 2018-12-11

基本的な印刷関数の利用方法についての例

メソッド:addCopyItem(),addItem(),addList(),addSheet(),setTemplateID(),setErrorMsg()

ステップ1:テーブルと画面の作成

ステップ2:帳票テンプレートの作成

ステップ3:関数を新規作成

ステップ4:印刷結果

ステップ1:テーブルと画面の作成

データベースにテーブルを作成。
(定義インポート>定義を張り付けて作成)
SQL文を張り付けて、実行ボタンをクリックしてテーブルを作成する。
image.png

SQL文:

CREATE TABLE `m_student1` ( 
  `STUDENT_ID` varchar(10) NOT NULL,    
  `STUDENT_FAMILY_NM` varchar(20) DEFAULT NULL, 
  `STUDENT_FIRST_NM` varchar(20) DEFAULT NULL,  
  `STUDENT_FULL_NM_KN` varchar(40) DEFAULT NULL,    
  `SEX` varchar(1) DEFAULT NULL,    
  `STUDENT_SCORE` varchar(3) DEFAULT NULL,  
  `STUDENT_SUBJECT` varchar(5) NOT NULL,    
  `FIRST_REG_DTM` datetime DEFAULT NULL,    
  `FIRST_REG_ID` varchar(50) DEFAULT NULL,  
  `LAST_UPDATE_DTM` datetime DEFAULT NULL,  
  `LAST_UPDATE_ID` varchar(50) DEFAULT NULL,    
  PRIMARY KEY (`STUDENT_ID`,`STUDENT_SUBJECT`)  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;   

テーブル名称と項目名称を編集してください。
データベース反映を選んでください。
image.png

印刷用画面を2つ作成

1.印刷関数ボタンを押し、生徒ID条件によってSQL文のSELECTでデータを取得し、EXCELに出力して印刷できるようにします。

画面:印刷関数(画面作成>画面レイアウト作成>新規)
image.png

1-1画面名(印刷関数)、管理ID(1)、TextBox項目数とButton項目数を入力

image.png

1-2「保存して次へ」(フォルダに追加)

作成した画面を選択表示する際のフォルダ(メニュー)の所属先を指定します。

1-3フォルダ名を1つ選択して登録する

フォルダが無い場合は、新規でフォルダを作成し所属させます。

1-4「画面デザイン画面」

項目のラベル名を設定します。
対象項目にマウスをあてて右クリックのメニューから「項目定義」を選択します。
項目:
・生徒ID入力指定欄(ラベル名は図のdragB3枠)
・「印刷関数」ボタン(図のdragB1枠)
※項目名をドラッグするとレイアウト位置を変更できます。

保存アイコン(フロッピーディスクの図)をクリックし作業内容を保存します。
保存後、閉じるアイコン(×印)にて編集画面を閉じます。
image.png

2.印刷項目作成・編集画面

(画面作成>画面項目定義>新規)
※「新規」ボタンは、上部の「検索条件(虫眼鏡)」をクリックすると表示されます。
ステップ1で作成したテーブルを指定して各項目を入力編集する画面です。

2-1(画面項目定義>画面項目定義新規>画面自動作成タブ)

image.png

2-2項目指定

・画面名(印刷関数画面)、管理ID(1)を入力
・テーブル(M_STUDENT1)のチェックボックスを指定
・画面に表示する項目を指定してチェック(図では全項目)
image.png

2-3「保存して次へ」(フォルダに追加)

作成した画面を選択表示する際のフォルダ(メニュー)の所属先を指定します。

2-4フォルダ名を1つ選択して登録する

フォルダが無い場合は、新規でフォルダを作成し所属させます。

2-5画面項目定義画面上部の「画面レイアウト設計へ遷移」アイコンをクリック。

自動配置された画面の編集を行います。
image.png
image.png
※左側のメインメニューの画面レイアウト作成から、対象画面「印刷関数画面」の「編集」ボタンからも表示できます。

科目のプロパティはdroplistで「0:数学;1:英語;2:国語;」という3つの値があります。
・科目のプロパティは固定の選択リストから選ぶ方式を設定します。
・「科目(図のdragB14)」項目を右クリックし「項目定義」を選択します。
・項目定義画面右上の「表示種類」を「DropdownList」に設定します。
・項目定義>DBタブに「リスト」項目が表示されます。「リスト=リスト値マスタから」を選択します。
・リスト値マスタ情報枠が表示されるので、「0:数学;1:英語;2:国語;」という3つの固定値を
設定します(区切り記号 番号はコロン[:]、リスト値はセミコロン[;])。
・「保存」ボタンで設定値を登録します。
image.png
image.png

2-6動作環境画面の権限設定

・作成した画面は、「メニュー:セキュリティ>フォルダ/コンテンツ設定」画面にて操作するユーザのIDや属するグループ単位に表示や編集の制限をかけています。
・左画面はメニューフォルダや画面単位の区分け設定です。「印刷関数画面」は所属するフォルダの設定権限により下位継承されるので、フォルダ右横にチェックします。
・画面右側のユーザグループやユーザ名の権限(新規、更新、削除、表示)にて動作環境のユーザ(ログインID)が画面に情報を入力保存できるようにし「権限更新」ボタンをクリックします。
image.png

2-7生徒情報テーブルに成績を入力保存

・システム動作環境用のIDにてログインし、データ入力画面(印刷関数画面)から作成したテーブルに情報を入力保存します。(サンプルの入力情報コードの値を参照)

image.png

INSERT INTO `m_student1` VALUES ('K0001', '柴田', '次郎', '柴田次郎', '男', '78', '0', '2018-12-03 12:02:48', '', '2018-12-06 16:22:30', 'sun1');                      
INSERT INTO `m_student1` VALUES ('K0001', '柴田', '次郎', '柴田次郎', '男', '88', '1', '2018-12-03 12:02:48', '', '2018-12-06 16:24:33', 'sun1');                      
INSERT INTO `m_student1` VALUES ('K0001', '柴田', '次郎', '柴田次郎', '男', '67', '2', '2018-12-03 12:02:48', '', '2018-12-06 16:24:56', 'sun1');                      
INSERT INTO `m_student1` VALUES ('k0002', '柴田', '二郎', '柴田二郎', '男', '99', '0', '2018-12-03 12:12:52', 'sun1', '2018-12-06 16:25:41', 'sun1');                      
INSERT INTO `m_student1` VALUES ('k0002', '柴田', '二郎', '柴田二郎', '男', '100', '1', '2018-12-03 12:13:14', 'sun1', '2018-12-06 16:26:10', 'sun1');                     
INSERT INTO `m_student1` VALUES ('k0002', '柴田', '二郎', '柴田二郎', '男', '60', '2', '2018-12-03 12:13:25', 'sun1', '2018-12-06 16:26:36', 'sun1');

ステップ2:帳票テンプレートの作成

帳票用のExcelテンプレートを下記のリンクからダウロードすることができます。
 成績表_帳票印刷.xlsx

新テンプレートを指定

(帳票>帳票テンプレート>新規)
・画面「ステップ1:」枠にて「管理ID」を入力後、アップロードする。
Excel帳票テンプレート定義ファイルを指定します。
・画面下の「更新」ボタンを押し、アップロードを完了します。
・ファイルIDをメモ
「検索条件」枠の「検索」ボタンを押すと画面が更新されアップロードした帳票テンプレートのファイルIDを確認できます。ファイルIDをメモして関数の定義で使います。
image.png
image.png

ステップ3:関数を新規作成(ExcelDataBean関数のコード確認)

ExcelDataBean_sample
//1.SQL文でデータを取得する
// データを検索する方式: select x1, x2, y1, y2 from table where 条件1
// 配列aに入れる
//2.select文でy轴のデータを取得し、 条件は1と同じ
//データを検索する方式: select distinct y1, y2 from table where 条件1
// 配列bに入れる
//データをデータベースから取得する
var cy;
//StringBuilder文字列を連結する
var strSqlc = new StringBuilder();
//生徒ID
var NIANDU1 = getObj('txt2'); 
//グローバル変数
var excelDataBean = null;
//局部変数
var sheeBean = null;
//エクセル印刷
var excelPrint = getExcelPrint();
var rowDataList = null;
var row = null; 
try {   
    //データがある場合  
    strSqlc.append("SELECT STUDENT_ID,STUDENT_FULL_NM_KN,SEX,STUDENT_SUBJECT,
   STUDENT_SCORE FROM M_STUDENT1 ");
    strSqlc.append("where 1 = 1");  
   //idを判断する  
    if (NIANDU1 != null && NIANDU1 != "") { 
   //StringBuilder文字列を連結する    
        strSqlc.append(" AND STUDENT_ID = '").append(NIANDU1).append("'");  
    }   
  //IDによってランキングする 
    strSqlc.append(" ORDER BY STUDENT_ID ");    

    cy = exequeryarrylist(strSqlc.toString());  

    excelDataBean = new ExcelDataBean();    
    //データがある場合  
    if (cy != null && cy.size() > 0) {  
        // list初期化    
        rowDataList = new ArrayList();  

        sheeBean = new ExcelDataBean(); 

        var conditionMap = new HashMap ();  
    //ループでデータの取得    
        for (var i = 0; i < cy.size(); i++) {   

            row1 = new ArrayList(); 

            row = cy.get(i);    

            // 生徒ID 
            row1.add(row.get(0));   

            // 姓名   
            if(nullOrBlank(row.get(1))){    
                row1.add("");   
            } else {    
        // 姓名               
                row1.add(row.get(1));   
            }   

            // 性別   
            if(nullOrBlank(row.get(2))){    
                row1.add("");   
            } else {    
              // 性別 
                row1.add(row.get(2));   
            }   
            // 科目   
            if(nullOrBlank(row.get(3))){    
                row1.add("");   
            } else {    
                // 科目   
                row1.add(row.get(3));   
            }   

            // 成績   
            if(nullOrBlank(row.get(4))){    
                row1.add("");   
            } else {    
                // 成績   
                row1.add(row.get(4));   
            }   

            rowDataList.add(row1);  
        }   

        //テンプレートのヘッダ部分をコピーする    
        sheeBean.addCopyItem("A1", "A5");   

        //指定するセルに値を設定する(ヘッダの利用が多い)  
        sheeBean.addItem("A2", "成績書");    

        //セルタイプの設定  
        conditionMap.put(0, new ExcelCellBean(0, 0, "string")); 
        //セルタイプの設定  
        conditionMap.put(1, new ExcelCellBean(0, 1, "string")); 
        //セルタイプの設定  
        conditionMap.put(2, new ExcelCellBean(0, 2, "string")); 
        //セルタイプの設定  
        conditionMap.put(3, new ExcelCellBean(0, 3, "string")); 
        //セルタイプの設定  
        conditionMap.put(4, new ExcelCellBean(0, 4, "number")); 

        //データを指定する  
        var listBean = sheeBean.addList("A5", rowDataList, conditionMap);   

        //シートを追加する  
        excelDataBean.addSheet("成績書", sheeBean);  

        excelPrint.setExcelDataBean(excelDataBean); 
    //アップロードテンプレートファイルIDを入力する     
        excelPrint.setTemplateID(19);   
        JsonObj = excelPrint.print("19");   
    } else {    
        //エラーメッセージを設定する   
        excelDataBean.setErrorMsg("データは存在しない。");    
        excelPrint.setTemplateID(19);   
        excelPrint.setExcelDataBean(excelDataBean); 
        JsonObj = excelPrint.print("19");   
    }   
} catch (e) {   
trace(e);   
    ActStr += "alert('" + e + "');";    
}   

関数定義:
(ツール>ユーザー定義関数>新規)
image.png
・関数名称を入力
・利用範囲と関数利用画面を選択
・実行場所はサーバーを選択
image.png
関数編集画面で、コードを入力します
image.png
第三行目のgetObj()の パラメータは下図の右側表示された生徒IDです。ご注意ください。
image.png
コード下の部分setTemplateID()の パラメータは前にメモしたファイルIDです。
コードが編集した後、保存ボタンをクリックして関数を保存します。
(画面作成>画面レイアウト作成>印刷関数編集)
image.png
印刷関数ボタンを右クリックし(コード表示)、前に定義した関数を選び、編集ボタンをクリックする。
次は編集ボタンをクリックしてこの画面で関数コードを編集してください。
image.png
image.png

「関数編集」タブを開き、サンプルのSQLコードを編集することができます。
「SQL構文検証」ボタンにより、SQL構文の実行結果を検証できます。
image.png
image.png
不明なところがあればdevelop doc をクリックすると参照でき「ExcelDataBean説明書」があります。不明な方法をコピーし左側のExcelDataBeanをクリック、Ctrl+Fで検索することができます。
image.png

このサンプルに使っているメソッドは以下の通りです。(リンクをクリックすると説明書に遷移します)

addCopyItem: テンプレートのヘッダ部分をコピーする
addItem: 指定するセルに値を設定する(ヘッダーの利用が多い)
addList: データを指定する
addSheet: シートを追加する
setTemplateID: テンプレートを指定する
setErrorMsg: エラーメッセージを設定する

ステップ4:印刷結果(画面からテストデータを入力して、印刷関数ボタンをクリック)

印刷関数ボタンを押すと、Excelファイルがダウンロードされますので、内容を確認して印刷できるようになります。
image.png

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0