デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド PowerBuilder® 11.5 DOCUMENT ID: DC37775-01-1150-01 LAST REVISED: September 2008 Copyright © 2008 by Sybase, Inc. All rights reserved. 本書は Sybase ソ フ ト ウ ェ アの付属マニ ュ アルで あ り 、 新 し いマニ ュ アル ま たはテ ク ニ カル ノ ー ト で特に示 さ れないかぎ り 、 後続の リ リ ース に も 付属 し ます。 こ のマニ ュ アルの内容は、 予告な く 変更 さ れ る こ と があ り ますが、 Sybase,Inc. お よ びその関連会社では内容の変更に関 し て一切の責任を負い ません。 こ のマニ ュ アルに記載 さ れてい る ソ フ ト ウ ェ アは ラ イ セ ン ス契約に基づいて提供 さ れ る も のであ り 、 無断で使用す る こ と はで き ません。 予定 し た ソ フ ト ウ ェ アの リ リ ース日にのみア ッ プグ レー ド を提供 し ます。 本書に記載 さ れてい る 内容は、 Sybase, Inc. お よ びその関連会社の書面に よ る 事前許可を得ずに、 電子的、 機械的、 手作業、 光学的、 ま たはその他のいかな る 手段に よ っ て も 複製、 転載、 翻訳す る こ と を禁 じ ます。 Sybase の商標は Sybase の商標ページ のサイ ト http://www.sybase.com/detail?id=1011207 に記載 さ れてい ます。 記載の Sybase お よ びマー ク は Sybase, Inc の商標です。 ® はア メ リ カ合衆国におけ る 登録商標を示 し ます。 Java お よ びすべての Java ベース のマー ク は、 米国お よ び他国におけ る Sun Microsystems, Inc. の商標ま たは登録商標です。 Unicode お よ び Unicode の ロ ゴは Unicode, Inc. の登録商標です。 本書で記載 さ れてい る 上記以外の社名お よ び製品名は、 各社の商標ま たは登録商標の場合があ り ます。 本書に記載 さ れてい る 内容は、 将来予告な し に変更す る こ と があ り ます。 ま た、 本 ソ フ ト ウ ェ アお よ び説明書を使用 し た こ と に よ る 損害、 ま たは第三者か ら のいかな る 請求について も 、 サ イ ベース株式会社、 その親会社であ る 米国法人 Sybase, Inc. ま たはその関連会社は、 一切の責任を負わない も の と し ます。 目次 本書について .................................................................................................................................. ix 第1部 デー タ ウ ィ ン ド ウ と デー タ ス ト アの基本 第1章 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジについて ............................................................ 3 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト 、 コ ン ト ロール、 コ ンポーネ ン ト に ついて ................................................................................. 3 提示様式 と デー タ ソ ース .......................................................... 6 基本的な プ ロ セス...................................................................... 7 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジの選択............................................... 8 ク ラ イ ア ン ト / サーバ ア プ リ ケーシ ョ ンおよび分散ア プ リ ケー シ ョ ンの ソ リ ュ ーシ ョ ン .................................................... 9 Web ア プ リ ケーシ ョ ンの ソ リ ュ ーシ ョ ン ................................ 9 PowerBuilder デー タ ウ ィ ン ド ウ コ ン ト ロール ............................. 11 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 ..................................................... 15 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方について ....................... 16 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の コ ン ト ロールへの取 り 込み ..... 17 デー タ ウ ィ ン ド ウ コ ン ト ロール と デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の名前 ........................................................................... 18 PowerBuilder でのデー タ ウ ィ ン ド ウ コ ン ト ロールの操作..... 18 実行段階でのデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の指定............. 21 デー タ ベースへのア ク セス ............................................................ 24 デー タ ウ ィ ン ド ウ コ ン ト ロールへの ト ラ ンザ ク シ ョ ン オブ ジ ェ ク ト の設定........................................................................ 25 デー タ の検索 と 更新 ................................................................ 29 Web サービ ス デー タ ソ ースへのア ク セス ................................... 33 外部 ソ ースから のデー タ のイ ンポー ト .......................................... 33 デー タ ウ ィ ン ド ウ コ ン ト ロールのデー タ の操作........................... 34 デー タ ウ ィ ン ド ウ コ ン ト ロールのデー タ 管理方法 ................ 34 エデ ィ ッ ト コ ン ト ロールのテキス ト へのア ク セス ................ 37 エデ ィ ッ ト コ ン ト ロールのテキス ト の操作 ........................... 38 ItemChanged イ ベン ト のス ク リ プ ト の記述 ........................... 38 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド iii 目次 ItemError イ ベン ト のス ク リ プ ト の記述.................................. 39 デー タ ウ ィ ン ド ウの項目へのア ク セス ................................... 39 ほかのデー タ ウ ィ ン ド ウ メ ソ ッ ド の使い方 ........................... 42 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト のプ ロパテ ィ へのア ク セス......... 43 デー タ ウ ィ ン ド ウ エ ラ ーの処理.................................................... 45 検索および更新エ ラ ー と DBError イ ベン ト ........................... 45 プ ロパテ ィ 式およびデー タ 式のエ ラ ー と Error イ ベン ト ....... 49 デー タ ベースの更新....................................................................... 51 デー タ ウ ィ ン ド ウ コ ン ト ロールによ るデー タ ベースの更新方法 51 プ ログ ラ ムによ る行またはカ ラ ムのス テー タ スの変更 .......... 54 レ ポー ト の作成 .............................................................................. 55 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の計画 と 構築 ....................... 56 レポー ト の印刷 ....................................................................... 56 ネス テ ィ ッ ド レ ポー ト の使い方.................................................... 57 ク ロ ス タ ブの使い方....................................................................... 60 元にな るデー タ の表示 ............................................................ 60 ユーザによ る ク ロ ス タ ブの再定義 .......................................... 61 実行段階での ク ロ ス タ ブのプ ロパテ ィ の修正 ........................ 63 HTML の生成.................................................................................. 64 表示の制御 .............................................................................. 68 SaveAs メ ソ ッ ド の呼び出 し ................................................... 71 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の HTML フ ォ ーム と し ての表示 72 第3章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更 ................................................ 77 動的なデー タ ウ ィ ン ド ウの処理について ...................................... 77 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の修正 ......................................... 78 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の作成 ......................................... 80 ユーザへの ク エ リ 機能の提供 ........................................................ 83 ク エ リ モー ド の仕組み ........................................................... 83 ク エ リ モー ド の使い方 ........................................................... 85 ヘルプ ボ タ ンの使用...................................................................... 88 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の再利用 ..................................... 89 第4章 デー タ ス ト ア オブ ジ ェ ク ト の使い方 ............................................................... 91 デー タ ス ト アについて ................................................................... 91 デー タ ス ト アの操作....................................................................... 95 カ ス タ ム デー タ ス ト ア オブ ジ ェ ク ト の使い方 ............................. 95 デー タ ス ト アにおけるデー タ のア ク セス と 操作............................ 97 デー タ の共有................................................................................ 100 例 : デー タ ス ト アか ら のデー タ の印刷 .................................. 101 例 : 2 つのデー タ ス ト ア オブ ジ ェ ク ト によ るデー タ 処理..... 103 iv PowerBuilder 目次 第5章 グ ラ フの操作 .............................................................................................................. グ ラ フ の使い方 ............................................................................ グ ラ フ のプ ロパテ ィ の修正 .......................................................... グ ラ フ要素の表示.................................................................. グ ラ フ要素の参照.................................................................. デー タ のプ ロパテ ィ へのア ク セス ............................................... デー タ の情報の取得 .............................................................. グ ラ フのデー タ の保存 .......................................................... 色、 模様、 そのほかのデー タ の修正..................................... グ ラ フ メ ソ ッ ド の使い方...................................................... ポ イ ン ト ア ン ド ク リ ッ ク の使い方 ............................................. 第2部 WEB ア プ リ ケーシ ョ ン でのデー タ ウ ィ ン ド ウの使い方 第6章 Web デー タ ウ ィ ン ド ウの使い方 ..................................................................... 125 Web デー タ ウ ィ ン ド ウ と は ......................................................... 125 Web デー タ ウ ィ ン ド ウの種類 .............................................. 126 Web デー タ ウ ィ ン ド ウの仕組み........................................... 126 Web デー タ ウ ィ ン ド ウのサーバ コ ンポーネ ン ト と ク ラ イ ア ン ト コ ン ト ロール .................................................................. 129 XML Web デー タ ウ ィ ン ド ウの使い方 ......................................... 131 XML、 XSLT、 CSS、 および XHTML について .................... 132 XML Web デー タ ウ ィ ン ド ウの仕組み .................................. 133 XML Web デー タ ウ ィ ン ド ウの使い方 .................................. 137 Web デー タ ウ ィ ン ド ウ用のデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の設計.. 139 Web デー タ ウ ィ ン ド ウのプ ロパテ ィ .................................... 142 生成 さ れる コ ー ド のサイ ズの制御 ........................................ 149 ド ロ ッ プダウン デー タ ウ ィ ン ド ウの使い方 ......................... 150 コ ールバ ッ ク および ク ラ イ ア ン ト サイ ド ページ ン グのサポー ト 151 Web デー タ ウ ィ ン ド ウ メ ソ ッ ド への JavaScript キ ャ ッ シ ュの使 い方 ................................................................................ 152 式の使い方 ............................................................................ 156 外国語文字セ ッ ト の使い方 ................................................... 157 デー タ の リ ン ク の実現 .......................................................... 157 HTML Web デー タ ウ ィ ン ド ウ内の コ ン ト ロールに対する HTML の レ ン ダ リ ング .................................................................. 158 ボ タ ン コ ン ト ロール と ピ ク チ ャ コ ン ト ロールの使い方 ...... 159 特定のブ ラ ウザ用の Web 生成の指定................................... 162 デー タ ウ ィ ン ド ウのプ レ ビ ュ ー ............................................ 163 デー タ ベース接続の設定.............................................................. 163 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の コ ンポーネ ン ト サーバへの配布.. デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 107 107 108 109 110 111 111 114 115 116 119 v 目次 167 Web デー タ ウ ィ ン ド ウ コ ン テナ プ ロ ジ ェ ク ト ウ ィ ザー ド 168 ク ラ イ ア ン ト サイ ド ス ク リ プ ト の記述 ...................................... 170 生成 さ れる Web デー タ ウ ィ ン ド ウのカ ス タ マ イ ズ .................... 172 XHTML エ ク スポー ト テ ン プ レー ト ビ ュ ー ......................... 173 カ ス タ マ イ ズで き る部分....................................................... 174 デ フ ォル ト の XHTML エ ク スポー ト テ ン プ レー ト .............. 175 テ ン プ レー ト の管理 .............................................................. 176 テ ン プ レー ト 構造.................................................................. 181 XHTML エ ク スポー ト テ ン プ レー ト の編集 .......................... 184 実行時の XHTML エ ク スポー ト テ ン プ レー ト 選択 .............. 190 XML および XSLT、 または XHTML でのデー タ ウ ィ ン ド ウ Web フ ォ ームのエ ク スポー ト ................................................ 191 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス ................................ 193 サーバ構成の要件 ........................................................................ 193 サーバ コ ンポーネ ン ト のイ ン ス タ ン ス化 と 設定......................... 195 コ ンポーネ ン ト のイ ン ス タ ン ス化 ........................................ 196 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト のロー ド ............................. 197 生成内容の制御 ..................................................................... 198 デー タ ベース接続の指定 と デー タ 検索 ................................. 200 リ ロー ド さ れたページにページ固有のデー タ を渡す............ 201 サーバ コ ンポーネ ン ト にユーザ ア ク シ ョ ン を渡す ............. 205 ページへの生成 さ れた HTML または XHTML の挿入........... 206 カ ス タ ム サーバ コ ンポーネ ン ト の使い方 .................................. 206 EAServer でのカ ス タ ム サーバ コ ンポーネ ン ト の作成........ 209 EAServer でのカ ス タ ム コ ンポーネ ン ト のプ ロパテ ィ の設定 211 カ ス タ ム コ ンポーネ ン ト のイ ン ス タ ン ス化 ......................... 213 サーバ上での状態の保持....................................................... 215 サービ ス ク ラ スの使い方............................................................. 217 PowerBuilder コ ンポーネ ン ト に対するサービ ス ク ラ スの定義 .. 218 Java コ ンポーネ ン ト に対するサービ ス ク ラ スの定義 ......... 220 第8章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 .................. 223 Web ActiveX について ................................................................. 223 Web ページに コ ン ト ロールを挿入する HTML ............................ 227 Object 要素............................................................................ 227 プ ロパテ ィ と Param 要素 ..................................................... 230 Web ActiveX 対応のデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト ................. 231 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト に取 り 込む こ と がで き る内容 ... 231 PowerBuilder ラ イ ブ ラ リ 内でのデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト vi PowerBuilder 目次 の管理............................................................................. 232 コ ン ト ロールに対するデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の指定 233 デー タ ウ ィ ン ド ウ ト ラ ンザ ク シ ョ ン オブ ジ ェ ク ト コ ン ト ロールの使 い方 ................................................................................ 234 デー タ ベース と の接続 ................................................................. 235 デー タ ベース と の接続 と デー タ の検索 ................................. 237 Web ActiveX 用ス ク リ プ ト の記述 ............................................... 238 メ ソ ッ ド の引数および戻 り 値のデー タ 型.............................. 239 イ ベン ト の リ タ ーン コ ー ド の設定 ....................................... 239 Web ActiveX の配布 ..................................................................... 240 索引.............................................................................................................................................. 243 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド vii 目次 viii PowerBuilder 本書について 目的 こ のマニ ュ アルでは、 ク ラ イ ア ン ト / サーバ アプ リ ケーシ ョ ン、 分 散アプ リ ケーシ ョ ン、Web アプ リ ケーシ ョ ンにおけ る DataWindow® テ ク ノ ロ ジの使い方について説明 し ま す。 特に、 作成す る ア プ リ ケーシ ョ ンに合わせてデー タ ウ ィ ン ド ウ オブジ ェ ク ト を定義する 方法、 定義 し たデー タ ウ ィ ン ド ウ オブジ ェ ク ト と 対話す る ための コー ド を作成する方法について説明し ます。 対象 と する読者 こ のマニ ュ アルは、 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジ を使用す る アプ リ ケーシ ョ ン の開発者を対象に し てい ま す。 ま た以下を前提 と し てい ます。 そのほかの情報 • デー タ ウ ィ ン ド ウ ペ イ ン タ に精通 し てい る こ と 。 デー タ ウ ィ ン ド ウ ペ イ ン タ については、PowerBuilder® の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 • PowerScript® プロ グ ラ ミ ン グ 言語について基本的な知識を 持っ ている こ と 。 製品に関す る そのほかの詳細情報については、 PowerBuilder DVD、 N D ソ フ ト ウ ェ ア Web サ イ ト 、お よ び Sybase 製品マニ ュ アル Web サ イ ト (英語) を参照 し て く だ さ い。 • PowerBuilder DVD には、製品マニ ュ アルが収め ら れてい ます。 製品マニ ュ アルは、 PDF 形式で提供 し てい ます。 PDF フ ァ イ ルを読んだ り 、 印刷 し た り す る には、 Adobe Acrobat Reader が 必要です。 Adobe Acrobat Reader は、 Adobe Web サ イ ト か ら 無 料でダ ウ ン ロ ー ド す る こ と がで き ます。 • N D ソ フ ト ウ ェ ア Web サ イ ト には、 標準の Web ブ ラ ウ ザで ア ク セ ス す る こ と がで き る オ ン ラ イ ン版のマ ニ ュ アルが あ り ます。 こ の Web サ イ ト では、 PDF お よ び HTML 形式でマニ ュ アルを見 る こ と がで き ます。 オ ン ラ イ ン 版 の マ ニ ュ ア ル に は、 N D ソ フ ト ウ ェ アの PowerBuilder のサ イ ト http://www.powerbuilder.jp/ に あ る 「技術情 報」 か ら ア ク セ ス で き ます。 • Sybase 製品マニ ュ アル Web サ イ ト (英語) は、 標準の Web ブ ラ ウ ザか ら ア ク セ ス で き 、 Sybase の製品マ ニ ュ ア ルのほか、 EBF/ メ ン テナン ス、技術文書な どへの リ ン ク も 含んでい ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド ix 本書について Sybase 製品マ ニ ュ ア ル Web サ イ ト には、 Product Manuals のサ イ ト http://www.sybase.com/support/manuals/ か ら ア ク セ ス で き ます。 サポー ト について 「サポー ト ハン ド ブ ッ ク 」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド x 第 1 部 デー タ ウ ィ ン ド ウ と デー タ ス ト アの基本 第 1 部では、デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト およびデー タ ス ト ア オブ ジ ェ ク ト を作成、 使用する方法を記述 し ます。 こ れ ら のオ ブ ジ ェ ク ト お よ びデー タ ウ ィ ン ド ウ コ ン ト ロールの追加情報については、『ユーザーズ ガ イ ド 』 マニ ュ アルおよび 『ア プ リ ケーシ ョ ン テ ク ニ ッ ク 』 マニ ュ アルで 入手で き ま す。 リ フ ァ レ ン ス情報は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルおよびオ ン ラ イ ン ヘルプ で入手 で き ます。 第 1 章 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジに ついて こ の章について こ の章では、デー タ ウ ィ ン ド ウ オブジ ェ ク ト について説明 し ます。 ま た、 各種のアプ リ ケーシ ョ ン アーキ テ ク チ ャ やプ ロ グ ラ ミ ン グ 環境でデー タ ウ ィ ン ド ウ を使用す る 方法について も 説明 し ます。 内容 項目 デー タ ウ ィ ン ド ウ オブジ ェ ク ト 、 コ ン ト ロ ール、 コ ン ポーネ ン ト について デー タ ウ ィ ン ド ウ テ ク ノ ロ ジの選択 PowerBuilder デー タ ウ ィ ン ド ウ コ ン ト ロ ール ページ 3 8 11 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト 、 コ ン ト ロール、 コ ンポーネ ン ト について データ ウ ィ ン ド ウ テ ク ノ ロ ジ は、 以下の 2 つの要素に実装さ れ ま す。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト は、 デー タ ソ ース と デー タ の提示様式を定義 し ます。 • デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト • コ ン ト ロー ルや コ ン ポーネ ン ト は、 ア プ リ ケーシ ョ ン に配置す る デー タ ウ ィ ン ド ウ オブジ ェ ク ト の コ ン テナです。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を操作す る には、 コ ン テナの メ ソ ッ ド を呼び出 す コ ー ド を記述 し ます。 デー タ ウ ィ ン ド ウ コ ン ト ロールまたはコ ンポーネン ト デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 3 第1章 デー タ ウ ィ ン ド ウ コ ン ト ロールおよび コ ンポーネ ン ト デー タ ウ ィ ン ド ウ テ ク ノ ロ ジについて 当初、 デー タ ウ ィ ン ド ウ は、 ク ラ イ ア ン ト / サーバ アプ リ ケーシ ョ ン におけ る デー タ 検索、 デー タ 操作、 お よ びデー タ 更新の強力な機能を PowerBuilder で実現す る こ と を目的に設計 さ れ ま し た。 現在、 デー タ ウ ィ ン ド ウ は複数の環境で使用で き ます。 • PowerBuilder デー タ ウ ィ ン ド ウ ク ラ イ アン ト / サーバ型およ び分散 型 PowerBuilder ア プリ ケ ーショ ン で使用さ れる PowerBuilder コ ン ト ロ ールです。 • Web デー タ ウ ィ ン ド ウ • Web アプ リ ケーシ ョ ン のためのシ ン ク ラ イ ア ン ト デー タ ウ ィ ン ド ウ の実装。 PowerBuilder デー タ ウ ィ ン ド ウ のデー タ 操作機能、 表示機能、 お よ び ス ク リ プ ト 機能の大部分を 備え てい ます。 コ ン ポーネ ン ト サーバ側には Web デー タ ウ ィ ン ド ウ コ ン ポーネ ン ト が必要ですが、 ク ラ イ ア ン ト 側に PowerBuilder DLL は必要あ り ません。 Web デー タ ウ ィ ン ド ウ は、 以下の 3 つの 方法で実装す る こ と がで き ます。 XML (内容)、XSLT (レ イ ア ウ ト )、 CSS (表示様式) の 3 つに分けて記述 し 、 XHTML に変換 し て 利用 • XML Web デー タ ウ ィ ン ド ウ • XHTML Web デー タ ウ ィ ン ド ウ • HTML Web デー タ ウ ィ ン ド ウ XHTML HTML Sybase デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX Web ペ ー ジ 上 で 使用す る ActiveX コ ン ト ロ ール。 ク ラ イ ア ン ト ブ ラ ウ ザ は、 ActiveX コ ン ト ロ ールをサポー ト し ていない と 、 こ の コ ン ト ロ ール で使用 さ れ る デー タ ウ ィ ン ド ウ オブジ ェ ク ト を表示で き ません。 各環境の比較については、 8 ページの 「デー タ ウ ィ ン ド ウ テ ク ノ ロ ジ の選択」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の コ ン テナ と し て、デー タ ス ト ア オブ ジ ェ ク ト を使用す る こ と も で き ます。 デー タ ス ト アは、 デー タ 検索や デー タ 操作な ど のデー タ ウ ィ ン ド ウ の機能を、 画面出力を行わずに実 現 し ます。 印刷時の レ イ ア ウ ト 指定、 分散アプ リ ケーシ ョ ン のサーバ コ ン ポーネ ン ト でのデー タ 管理な ど にデー タ ス ト ア を使用で き ます。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト と は デー タ ウ ィ ン ド ウ オブジ ェ ク ト は、 デー タ の検索、 表示、 操作を行 う ためのオブジ ェ ク ト です。 デー タ ウ ィ ン ド ウ で扱 う デー タ は、 リ レー シ ョ ナル デー タ ベースや、そのほかのデー タ ソ ース (Excel ワ ー ク シー ト 、 dBASE フ ァ イ ルな ど) か ら 読み込まれ ます。 デー タ の更新につい ては、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト でサポー ト す る か ど う か を指定 で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 4 第1章 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジについて デー タ ウ ィ ン ド ウ オブジ ェ ク ト には、 検索対象のデー タ に関す る 情報 が格納 さ れ ます。 ユーザが効率的にデー タ を操作で き る よ う に、 表示 書式や提示様式な ど のデー タ プ ロ パテ ィ を指定で き ます。 デー タ ウ ィ ン ド ウ ペ イ ン タ では、 Powersoft レ ポー ト (PSR) フ ァ イ ル を作成す る こ と も で き ます。 PSR フ ァ イ ルは、 デー タ ウ ィ ン ド ウ の コ ン ト ロ ール ま たは コ ン ポーネ ン ト で使用で き ます。PSR フ ァ イ ルには、 その フ ァ イ ルの作成時に レ ポー ト 内に存在 し ていたデー タ と 、 レ ポー ト 自体の定義 (基本的には、 更新機能の な いデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト ) が含まれ ます。 デー タ 検索は行い ません。 デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト を定義する 場所 デー タ ウ ィ ン ド ウ オブジ ェ ク ト は、 PowerBuilder のデー タ ウ ィ ン ド ウ ペ イ ン タ で定義 し ます。 更新機能のないデー タ ウ ィ ン ド ウ オブジ ェ ク ト は、 InfoMaker の レ ポー ト ペ イ ン タ 内で定義す る こ と も で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 5 第1章 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジについて 提示様式 と デー タ ソ ース デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を 定義す る には、 提示様式 と デー タ ソ ース を選択 し ます。 提示様式 提示様式は、 レ ポー ト の一般的な様式を定義す る と と も に、 ページ上 で行を ど の よ う にグループ化す る か を指定 し ます。 それぞれの提示様 式では、 デー タ の表示方法 を カ ス タ マ イ ズ で き ま す。 提示様式には、 以下の よ う な種類があ り ます。 表 1-1: デー タ ウ ィ ン ド ウの提示様式 提示様式 タブラ フ リ ーフ ォーム グリ ッド ラ ベル 段組み グループ ツ リ ービ ュ ー コ ン ポジ ッ ト グラフ ク ロ ス タブ リ ッ チテ キ ス ト OLE 説明 ページの横方向にデー タ カ ラ ムが並べ ら れ、 各カ ラ ム の上にヘ ッ ダがあ る 。 複数の行を一度に表示で き る ページの縦方向にデー タ カ ラ ムが並べ ら れ、 各カ ラ ム の横に ラ ベルがあ る 。 一度に表示で き る のは 1 行だけ ス プ レ ッ ド シー ト と 似た グ リ ッ ド 線 を 使用 し た表書 式。 ユーザは境界線やカ ラ ム を移動で き る 1 つの ラ ベルにつ き 1 行分のデー タ を表示 し 、1 ページ に複数の ラ ベルが表示 さ れ る 。 郵便 ラ ベルな ど に使用 2 行以上のデー タ をページ上に隣 り 合わせで表示。 曜 日単位、 四半期の各月のデー タ な ど、 周期的なデー タ を表示す る 場合に便利 見出 し の下に行が グループ化 さ れてい る タ ブ ラ 様式。 それぞれのグループ別に、 合計を表示する 要約フ ィ ー ル ド を取 り 込む こ と がで き る 階層的にデー タ を グループ化 し 、 展開、 折 り た たみ可 能な方法でデー タ を表示す る タ ブ ラ 様式 複数のデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を 1 つの提示 様式に ま と め て表示。 Web デー タ ウ ィ ン ド ウ ではサ ポー ト さ れていない デー タ を グ ラ フ ィ カルに提示。 Web デー タ ウ ィ ン ド ウ ではサポー ト さ れていない デー タ を要約 し て表書式で表示 テ キ ス ト にデー タ カ ラ ム が埋め込ま れたパ ラ グ ラ フ。 Web デー タ ウ ィ ン ド ウ、 Sybase デー タ ウ ィ ン ド ウ Web コ ン ト ロ ール ActiveX ではサポー ト さ れていない 検索 さ れたデー タ と 関連付け ら れ る OLE オブジ ェ ク ト がデー タ ウ ィ ン ド ウ 内に リ ン ク ま た は埋め込 ま れ る 。 Web デー タ ウ ィ ン ド ウ ではサポー ト さ れていない 提示様式の例については、PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 6 第1章 デー タ ソ ース デー タ ウ ィ ン ド ウ テ ク ノ ロ ジについて デー タ ソ ース は、 デー タ ウ ィ ン ド ウ で使用す る デー タ を ど こ か ら 持っ て き て、 ど の よ う なデー タ 項目を表示す る のか を指定 し ます。 デー タ は、 デー タ ベー ス 内のテーブルや Web サービ ス か ら 持っ て く る ほか、 フ ァ イ ルか ら イ ン ポー ト し た り 、 コ ー ド でデー タ を指定 し た り す る こ と がで き ます。デー タ ベース か ら 取 り 出す場合は、デー タ の指定が SQL 文に保存 さ れ ます。 ど の場合で も 、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト に は、表示 さ れ る デー タ 項目の名前 と そのデー タ 型が保存 さ れてい ます。 表 1-2: デー タ ウ ィ ン ド ウで使用する こ と がで き るデー タ ソ ース デー タ ソ ース Quick Select SQL Select クエ リ 外部 ス ト ア ド プロ シージ ャ Web サービ ス 説明 SQL デー タ ベー ス 内の 1 つ ま たは複数のテーブルか ら デー タ が取 り 出 さ れ る 。 複数のテーブルのデー タ を使用 す る には、 テーブル間は外部キーに よ っ て結合 さ れてい なければな ら ない。 カ ラ ム、 選択条件、 お よ び ソ ー ト 条 件を選択す る だけの場合に使用 データ ソ ース に関し て生成する SELECT 文を 制御する 場 合に使用。 グループ条件や計算カ ラ ム など を 指定でき る デー タ があ ら か じ め選択 さ れ、ク エ リ ペ イ ン タ で定義 さ れた ク エ リ オブジ ェ ク ト に SQL 文が保存 さ れてい る 。 ク エ リ オブジ ェ ク ト はデー タ ウ ィ ン ド ウ オブジ ェ ク ト を 定義す る と き にデー タ ウ ィ ン ド ウ に取 り 込 ま れ る の で、アプ リ ケーシ ョ ンの実行時は ク エ リ オブジ ェ ク ト が 存在 し ていな く て も か ま わない デー タ ベー ス にデー タ が格納 さ れていない場合に使用。 デー タ はフ ァ イ ル ( タ ブで区切 ら れた フ ァ イ ル、 dBASE フ ァ イ ルな ど) か ら イ ン ポー ト さ れた り 、 コ ー ド か ら 生 成 さ れた り す る デー タ ベー ス ス ト ア ド プ ロ シージ ャ に定義 さ れてい る デー タ が取 り 出 さ れ る デー タ は Web サ ー ビ ス で 定義 さ れ る 。 Web サー ビ ス デー タ ソ ース は、 コ ン ポジ ッ ト 、 リ ッ チテ キ ス ト 、 お よ び OLE 提示様式では使用で き ない 基本的な プ ロ セス デー タ ウ ィ ン ド ウ を使用す る には、 大 き く 分けて以下の 2 つの ス テ ッ プが必要です。 1 デー タ ウ ィ ン ド ウ ペ イ ン タ を使用 し て、 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を作成ま たは編集 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 7 第1章 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジについて ペ イ ン タ では、 デー タ ソ ー スや提示様式のほかに、 表示書式、 入 力条件則、 ソ ー ト 条件、 フ ィ ル タ 条件、 グ ラ フ な ど、 オブ ジ ェ ク ト のあ ら ゆ る プ ロ パテ ィ を定義 し ます。 2 開発環境で、デー タ ウ ィ ン ド ウ コ ン ト ロ ールを ウ ィ ン ド ウ 、ビ ジ ュ アル ユーザ オブジ ェ ク ト 、 ま たはフ ォ ーム に配置 し 、 デー タ ウ ィ ン ド ウ コ ン テナ を Web ページに配置 し 、 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト をデー タ ウ ィ ン ド ウ コ ン ト ロ ール ま たはデー タ ウ ィ ン ド ウ コ ン テナ と 関連付け ます。 デー タ ウ ィ ン ド ウ ペ イ ン タ で 作成 し た デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト と アプ リ ケーシ ョ ン と の通信は、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール ま たは コ ン テナ を介 し て行われ ま す。 デー タ ウ ィ ン ド ウ コ ン ト ロ ール ま た は コ ン テ ナ と 、 そ のデー タ ウ ィ ン ド ウ コ ン ト ロ ール ま たは コ ン テナに含ま れ る デー タ ウ ィ ン ド ウ オブジ ェ ク ト を 操作す る コ ー ド を 記述 し ま す。 通常は、 デー タ の検索 と 更新、 デー タ の表示形式の変更、 エ ラ ー処理、 お よ びデー タ ウ ィ ン ド ウ コ ン ト ロ ール間でのデー タ 共有を行 う コ ー ド な ど を記述 し ます。 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジの選択 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジ は さ ま ざ ま な環境で使用で き る た め、 デー タ ベー ス対応のアプ リ ケーシ ョ ン を実装す る 方法は状況に応 じ て 異な り ます。 こ の節では、 基本的な アプ リ ケーシ ョ ン アーキ テ ク チ ャ で使用可能なデー タ ウ ィ ン ド ウ テ ク ノ ロ ジ と 、各デー タ ウ ィ ン ド ウ ソ リ ュ ーシ ョ ン の要件について説明 し ます。 基本的な アーキ テ ク チ ャ は、 以下の と お り です。 • ク ラ イ ア ン ト / サーバ ア プ リ ケーシ ョ ン ク ラ イ ア ン ト 側の ワ ー ク ス テーシ ョ ン で動作す る プ ロ グ ラ ム が、 サーバ上で動作す る デー タ ベース にア ク セ ス し ます。 ク ラ イ ア ン ト 側の コ ン ピ ュ ー タ に、ユー ザ イ ン タ フ ェ ー ス と ビ ジ ネ ス ロ ジ ッ ク の両方が組み込 ま れて い ます。 • ク ラ イ ア ン ト 側の コ ン ピ ュ ー タ のユーザ イ ン タ フ ェ ー ス が、 中間層に あ る サーバ上の コ ン ポーネ ン ト を呼び 出 し ます。 こ の コ ン ポーネ ン ト に よ っ て、 ビ ジネ ス ロ ジ ッ ク が実 行 さ れ、 デー タ ベース サーバへア ク セ ス し ます。 分散ア プ リ ケーシ ョ ン デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 8 第1章 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジについて ク ラ イ ア ン ト 側の Web ブ ラ ウ ザが、 HTML ド キ ュ メ ン ト ま たは JSP ド キ ュ メ ン ト の要求を Web サーバに送信 し ます。 Web サーバは制御をページ サーバ ま たはアプ リ ケーシ ョ ン サーバに渡 し 、サーバ サ イ ド ス ク リ プ ト を使用 し て ト ラ ンザ ク シ ョ ン サーバ上の コ ン ポーネ ン ト にア ク セ ス し 、 さ ら に こ れを通 じ てデー タ ベース サーバ上のデー タ ベース に接続で き ます。 • Web ア プ リ ケーシ ョ ン • .NET ア プ リ ケーシ ョ ン PowerBuilder では、 .NET Web フ ォ ーム ア プ リ ケ ー シ ョ ン お よ び Windows フ ォ ー ム ア プ リ ケ ー シ ョ ン で デー タ ウ ィ ン ド ウ を配布で き ます。 .NET アプ リ ケーシ ョ ン の詳細 については、 『アプ リ ケーシ ョ ン と コ ン ポーネ ン ト の .NET への配 布 』 マニ ュ アルを参照 し て く だ さ い。 ク ラ イ ア ン ト / サーバ ア プ リ ケーシ ョ ンおよび分散ア プ リ ケーシ ョ ンの ソ リ ュ ーシ ョ ン PowerBuilder デー タ ウ ィ ン ド ウ は、 当初、 ク ラ イ ア ン ト / サーバ アプ リ ケーシ ョ ン で使用す る こ と を目的に開発 さ れ ま し た。 PowerBuilder デー タ ウ ィ ン ド ウ は、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を 表示す る コ ン ト ロ ール と し て実装す る か、 ま たはデー タ を表示せずに デー タ の検索や更新を行 う こ と がで き る デー タ ス ト ア と し て実装 し ま す。 PowerScript でプ ロ グ ラ ム さ れた イ ベン ト と メ ソ ッ ド の組み合わせ に よ っ て、 デー タ の検索、 表示、 検証、 更新な ど、 デー タ ウ ィ ン ド ウ のあ ら ゆ る 要素を制御で き ます。 PowerBuilder デー タ ウ ィ ン ド ウ は、 分散アプ リ ケーシ ョ ン で使用す る コ ン ポーネ ン ト と し て配布す る こ と も で き ます。 詳細については、 11 ページの 「PowerBuilder デー タ ウ ィ ン ド ウ コ ン ト ロ ール」 を参照 し て く だ さ い。 Web ア プ リ ケーシ ョ ンの ソ リ ュ ーシ ョ ン Web アプ リ ケーシ ョ ン では、 以下のデー タ ウ ィ ン ド ウ テ ク ノ ロ ジ を使 用で き ます。 • Web デー タ ウ ィ ン ド ウ • Sybase デー タ ウ ィ ン ド ウ Web コ ン ト ロ ール ActiveX • .NET アプ リ ケーシ ョ ン デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 9 第1章 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジについて Web デー タ ウ ィ ン ド ウ Web デー タ ウ ィ ン ド ウ は、 Web アプ リ ケーシ ョ ン のためのシ ン ク ラ イ ア ン ト デー タ ウ ィ ン ド ウ の実装です。こ の環境では、PowerBuilder デー タ ウ ィ ン ド ウ のデー タ 操作機能、 表示機能、 お よ び ス ク リ プ ト 機能の 大部分を実現で き ます。 ク ラ イ ア ン ト 側には PowerBuilder DLL は必要 あ り ません。 機能 Web デー タ ウ ィ ン ド ウ は、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の動的変更 な ど、 PowerBuilder デー タ ウ ィ ン ド ウ の イ ベン ト お よ び メ ソ ッ ド のサ ブセ ッ ト を サポー ト し ます。 ユーザはデー タ の修正や更新を行 う こ と がで き ます。 コ ン ポジ ッ ト 、 グ ラ フ、 OLE、 ツ リ ービ ュ ー、 お よ び リ ッ チテ キ ス ト の提示様式 と コ ン ト ロ ールはサポー ト し てい ません。 ク ラ イ ア ン ト の要件 HTML Web デー タ ウ ィ ン ド ウ はど のブ ラ ウ ザで も 機能 し ますが、 生成 さ れた HTML を表示す る 場合は Internet Explorer が最適です。 生成 さ れた HTML は、Netscape ま たは Internet Explorer に合わせて動的に最適 化で き ます。 ま た、 旧型のブ ラ ウ ザ を使用す る 場合、 そのブ ラ ウ ザに 合わせて元の ス ケールに戻す こ と も で き ます。XML Web デー タ ウ ィ ン ド ウ お よ び XHTML Web デー タ ウ ィ ン ド ウ では、 ク ラ イ ア ン ト サ イ ド テ ク ノ ロ ジ (XML、 XSLT、 XHTML、 CSS、 お よ び JavaScript) を サ ポー ト す る ブ ラ ウ ザが必要 と な り ます。 サポー ト さ れてい る ブ ラ ウ ザ については、 137 ページの 「XML Web デー タ ウ ィ ン ド ウ のブ ラ ウ ザ要 件」 を参照 し て く だ さ い。 サーバの要件 コ ン ポーネ ン ト サーバ と 動的ページ サーバは連携 し なが ら 、デー タ と ク ラ イ ア ン ト コ ン ト ロ ールを生成 し 、それを Web ページに取 り 込みま す。 ユーザがデー タ の新規ページ を要求 し た り 、 デー タ の更新、 あ る いは行の挿入や削除を行っ た り す る たびに、 サーバはその要求を取得 し て、 新規ページ を生成 し ます。 状態の管理の仕方に よ っ ては、 コ ン ポ ー ネ ン ト は呼び出 さ れ る た びにデー タ の検索 を 行 う こ と が あ り 、 サーバ側の負荷が増え る こ と にな り ます。 Sybase デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX Sybase データ ウ ィ ン ド ウ Web コ ン ト ロ ール ActiveX は、 Internet Explorer での使用を 目的 と し た対話型のデー タ ウ ィ ン ド ウ コ ン ト ロ ールです。 PowerBuilder データ ウ ィ ン ド ウ の リ ッ チテキ ス ト 以外のすべての機能が 実装さ れています。 機能 Web ActiveX は、 完全にプ ロ グ ラ ム実行可能で、 デー タ ウ ィ ン ド ウ の イ ベン ト や メ ソ ッ ド 、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の動的変更を サ ポー ト し ま す。 ユーザはデー タ の修正や更新 を行 う こ と がで き ま す。 リ ッ チテ キ ス ト 提示様式はサポー ト さ れてい ません。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 10 第1章 ク ラ イ ア ン ト の要件 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジについて コ ン ト ロ ールは ActiveX テ ク ノ ロ ジ を使用し 、 Microsoft Internet Explorer でのみ動作し ます。 ユーザは、 コ ン ポーネ ン ト の CAB フ ァ イ ル (2 MB 未満) を ダ ウ ン ロ ー ド す る 必要が あ り ま す。 JDBC を介 し たデー タ ベー ス と の接続は ク ラ イ ア ン ト 側か ら 行われ、 こ のため接続 ソ フ ト ウ ェ ア を ク ラ イ ア ン ト 側 に設定す る 必要があ り ます。 接続 ソ フ ト ウ ェ アは、 Web サーバか ら ダ ウ ン ロ ー ド で き ます。 SaveAs 機能な ど、 ク ラ イ ア ン ト のセキ ュ リ テ ィ を脅かす よ う なデー タ ウ ィ ン ド ウ の動作は無効にな り ます。 サーバの要件 JDBC を 介 し たデー タ ベー ス と の接続に よ り 、 リ モー ト サーバ上の デー タ ベース にア ク セ ス で き ます。 詳細 に つ い て は、 第 8 章 の 「デー タ ウ ィ ン ド ウ Web コ ン ト ロ ール ActiveX の使い方」 を参照 し て く だ さ い。 .Net ア プ リ ケーシ ョ ン 詳細については、 『アプ リ ケーシ ョ ン と コ ン ポーネ ン ト の .NET への配 布』 マニ ュ アルを参照 し て く だ さ い。 PowerBuilder デー タ ウ ィ ン ド ウ コ ン ト ロール 機能 PowerBuilder デー タ ウ ィ ン ド ウ コ ン ト ロ ールは、 PowerBuilder アプ リ ケーシ ョ ン に配置す る デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の コ ン テナで す。 デー タ ウ ィ ン ド ウ コ ン ト ロ ールを ウ ィ ン ド ウ で使用す る こ と で、 対話形式に よ る デー タ 表示を実現で き ます。 ユーザはデー タ を表示 し て変更 し 、 変更内容をデー タ ベース に送信で き ます。 デー タ ウ ィ ン ド ウ コ ン ト ロ ールのほかに、デー タ ス ト ア オブジ ェ ク ト を使用で き ま す。 デー タ ス ト ア オブ ジ ェ ク ト は、 サーバ ア プ リ ケー シ ョ ンや、 画面表示が必要ない場合の非表示 コ ン テナです。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 11 第1章 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジについて デー タ ウ ィ ン ド ウ では、 検索引数を使用 し たデー タ 検索 と デー タ 更新 を サポー ト し てい ます。 デー タ 入力やデー タ 表示の一貫性を保つため に、 編集様式、 表示書式、 お よ び入力条件則を使用で き ま す。 デー タ ウ ィ ン ド ウ では、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ を変更 す る Modify メ ソ ッ ド な ど、デー タ ウ ィ ン ド ウ を操作す る ための メ ソ ッ ド が多数用意 さ れてい ます。 さ ら に、 結果集合を複数のデー タ ウ ィ ン ド ウ コ ン ト ロ ール間で共有 し た り 、 ク ラ イ ア ン ト と サーバの間でデー タ を同期 さ せた り す る こ と がで き ます。 開発環境 PowerBuilder では、 デー タ ウ ィ ン ド ウ を実装す る ために必要な両方の 要素を開発で き ます。 以下のペ イ ン タ を使用 し ます。 • デー タ ウ ィ ン ド ウ ペ イ ン タ 。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を定 義 し ます。 • ウ ィ ン ド ウ ペ イ ン タ ま たはユーザ オブジ ェ ク ト ペ イ ン タ 。デー タ ウ ィ ン ド ウ コ ン ト ロ ール を ウ ィ ン ド ウ ま たは ビ ジ ュ アル ユーザ オブ ジ ェ ク ト に追加 し ま す。 デー タ ウ ィ ン ド ウ コ ン ト ロ ールは、 ペ イ ン タ の ド ロ ッ プ ダ ウ ン コ ン ト ロ ール パ レ ッ ト 上に並べ ら れ てい ます。 ウ ィ ン ド ウ ペ イ ン タ ま たはユーザ オブジ ェ ク ト ペ イ ン タ で、デー タ ウ ィ ン ド ウ の動作を制御 し た り 、 検索 さ れ る デー タ を操作 し た り す る ための ス ク リ プ ト を記述 し ます。 ま た、 デー タ ス ト ア オブ ジ ェ ク ト の イ ン ス タ ン ス も 生成で き ます。 オブジ ェ ク ト ブ ラ ウ ザでは、 [シ ス テ ム] タ ブ ページで、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールやデー タ ス ト ア オブジ ェ ク ト のプ ロ パテ ィ 、 イ ベ ン ト 、 お よ び メ ソ ッ ド を調べ る こ と がで き ます。 デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト が含 ま れ る ラ イ ブ ラ リ を 開い て い る 場合は、 ブ ラ ウ ザの [デー タ ウ ィ ン ド ウ ] タ ブ ページで、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の内部プ ロ パテ ィ を調べ る こ と がで き ます。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト デー タ ウ ィ ン ド ウ コ ン ト ロ ールやデー タ ス ト ア オブジ ェ ク ト は、ど の 提示様式で も 定義で き る デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を 使用す る こ と で、 ど の よ う なデー タ を検索 し 、 検索 し たデー タ を ど の よ う に表 示す る か を判断 し ます。 コ ン ト ロ ールには、 デー タ を検索す る 必要が ない Powersoft レ ポー ト (PSR) を表示す る こ と も で き ます。 デー タ ベース と の接続 PowerBuilder デー タ ウ ィ ン ド ウ では、 デー タ ベース に接続す る ために、 ODBC、 JDBC、 お よ びネ イ テ ィ ブなデー タ ベース ド ラ イ バを使用で き ま す。 こ れに よ っ て、 ユーザは ア ク セ ス 先のサーバ上に あ る デー タ ソ ー ス ( イ ン タ ーネ ッ ト 上のデー タ ベース や中間層のサーバな ど) に 接続で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 12 第1章 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジについて 接続を確立す る には、 デー タ ウ ィ ン ド ウ の内部 ト ラ ンザ ク シ ョ ン オブ ジ ェ ク ト を使用で き ます。ま た、独立 し た PowerBuilder ト ラ ンザ ク シ ョ ン オブジ ェ ク ト に接続す る こ と も で き ます。 PowerBuilder ア プ リ ケーシ ョ ン には、 デフ ォ ル ト の ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト SQLCA が用意 さ れてい ま すが、 追加の接続が必要な場 合は、 ほかの ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を定義で き ます。 接続に 独立 し た ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を使用す る と 、SQL COMMIT 文お よ び ROLLBACK 文を実行す る タ イ ミ ン グ を制御 し た り 、 複数の コ ン ト ロ ールに対 し て同 じ 接続を使用 し た り す る こ と がで き ます。 デー タ ウ ィ ン ド ウ と ト ラ ン ザ ク シ ョ ン オブ ジ ェ ク ト を 併用す る 方法 についての詳細は、 第 2 章の 「デー タ ウ ィ ン ド ウ オブジ ェ ク ト の使い 方」 を参照 し て く だ さ い。 PowerBuilder ト ラ ン ザ ク シ ョ ン オ ブ ジ ェ ク ト に つ い て の 詳 細 は、 PowerBuilder マニ ュ アル セ ッ ト の 『アプ リ ケーシ ョ ン テ ク ニ ッ ク 』 マ ニ ュ アルを参照 し て く だ さ い。 ス ク リ プ ト の記述 デー タ ベース と の接続、デー タ の検索、ユーザ入力の処理、お よ びデー タ の更新を行 う ための ス ク リ プ ト は、 ウ ィ ン ド ウ ペ イ ン タ ま たはユー ザ オブジ ェ ク ト ペ イ ン タ で記述 し ます。 PowerBuilder では、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールか ら 継承す る ユー ザ オブジ ェ ク ト を定義 し 、 それに独自のカ ス タ ム機能を追加す る こ と に よ っ て、 オブジ ェ ク ト の継承を利用す る こ と がで き ます。 こ の よ う に し て カ ス タ マ イ ズ し たデー タ ウ ィ ン ド ウ コ ン ト ロ ールは、 ア プ リ ケーシ ョ ン全体で再利用で き ます。 非 ビ ジ ュ アルなデー タ ウ ィ ン ド ウ コ ン ト ロ ールで あ る デー タ ス ト ア オブジ ェ ク ト を作成す る には、 まずそのオブジ ェ ク ト を作成す る ため の ス ク リ プ ト を記述 し 、 そのオブジ ェ ク ト に対す る メ ソ ッ ド を呼び出 し ます。 ま た、 デー タ ス ト アか ら 継承 さ れ る ユーザ オブジ ェ ク ト を定 義 し 、 それを カ ス タ マ イ ズす る こ と も で き ます。 詳細については、 第 4 章の 「デー タ ス ト ア オブジ ェ ク ト の使い方」 を参照 し て く だ さ い。 ラ イ ブ ラ リ と アプ リ ケーシ ョ ン 開発段階では、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト は、 PowerBuilder ラ イ ブ ラ リ (PBL) に格納 し てお き ま す。 ア プ リ ケーシ ョ ン の構築時に、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を、 アプ リ ケーシ ョ ンの実行フ ァ イ ル ま たは PowerBuilder 動的 ラ イ ブ ラ リ (PBD) の中に取 り 込む こ と がで き ます。 デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト を 設計 し 、 PowerBuilder ア プ リ ケ ー シ ョ ン を構築す る 方法についての詳細は、 PowerBuilder の 『ユーザー ズ ガ イ ド 』 マニ ュ アルお よ び 『アプ リ ケーシ ョ ン テ ク ニ ッ ク 』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 13 第 2 章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の 使い方 こ の章について こ の章では、 アプ リ ケーシ ョ ン でのデー タ ウ ィ ン ド ウ オブジ ェ ク ト の使い方について説明 し ます。 内容 は じ めに 項目 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の使い方について デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の コ ン ト ロ ールへの 取 り 込み デー タ ベースへのア ク セ ス Web サービ ス デー タ ソ ースへのア ク セ ス 外部 ソ ース か ら のデー タ の イ ン ポー ト デー タ ウ ィ ン ド ウ コ ン ト ロ ールのデー タ の操作 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ へのア ク セ ス デー タ ウ ィ ン ド ウ エ ラ ーの処理 デー タ ベース の更新 レ ポー ト の作成 ネ ス テ ィ ッ ド レ ポー ト の使い方 ク ロ ス タ ブの使い方 HTML の生成 ページ 16 17 24 33 33 34 43 45 51 55 57 60 64 こ の章では、デー タ ウ ィ ン ド ウ ペ イ ン タ でのデー タ ウ ィ ン ド ウ オ ブジ ェ ク ト の構築方法を把握 し てい る こ と が前提にな り ま す。 こ れについては、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アル を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 15 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方について デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の構築 アプ リ ケーシ ョ ン でデー タ ウ ィ ン ド ウ オブジ ェ ク ト を使用す る には、 まずそのオブジ ェ ク ト を構築す る 必要があ り ます。 PowerBuilder には、 デー タ ベー ス 管理、 デー タ ウ ィ ン ド ウ 定義、 お よ び ラ イ ブ ラ リ 管理用 の個別のペ イ ン タ があ り ます。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト は、デー タ ウ ィ ン ド ウ ペ イ ン タ で定義 お よ び編集を行い ます。 デー タ ソ ースや提示様式を指定 し た後、 表示 書式や編集様式な ど を指定 し てオブジ ェ ク ト を拡張 し ます。 デー タ ウ ィ ン ド ウ ペ イ ン タ では、 Powersoft レ ポー ト (PSR) フ ァ イ ル を作成す る こ と も で き ます。 こ の PSR フ ァ イ ルはアプ リ ケーシ ョ ン で 使用す る こ と がで き ます。 PSR フ ァ イ ルには、 その フ ァ イ ルの作成時 に レ ポー ト 内に存在 し ていたデー タ と 、 レ ポー ト 自体の定義 (基本的 には、更新機能のないデー タ ウ ィ ン ド ウ オブジ ェ ク ト ) が含まれます。 レポー ト オブ ジ ェ ク ト を使用で き るのは InfoMaker のみ 以前のバージ ョ ンの PowerBuilder には、 デー タ ウ ィ ン ド ウ ペ イ ン タ の ほかに、 レ ポー ト ペ イ ン タ があ り ま し た。 レ ポー ト オブジ ェ ク ト は、 デー タ の書 き 出 し はで き ますが、 デー タ の更新はで き ません。 レ ポー ト オブジ ェ ク ト は、 基本的には、 更新機能のないデー タ ウ ィ ン ド ウ オ ブジ ェ ク ト です。 現在、 レ ポー ト ペ イ ン タ は InfoMaker でのみ使用で き ます。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の管理 い く つかのペ イ ン タ では、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の管理 と ア プ リ ケーシ ョ ン用のパ ッ ケージ化が可能です。 特に、 1 つ ま たは複数の ラ イ ブ ラ リ (PBL フ ァ イ ル) にデー タ ウ ィ ン ド ウ オブジ ェ ク ト を保持で き ます。 アプ リ ケーシ ョ ン でデー タ ウ ィ ン ド ウ オブジ ェ ク ト を使用す る 準備がで き た ら 、 こ れ ら のオブジ ェ ク ト を よ り コ ン パ ク ト な ラ ン タ イ ム ラ イ ブ ラ リ (PBD フ ァ イ ル) にパ ッ ケージ化で き ます。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の構築方法お よ び編成方法につい て の詳細は、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト の使い方 デー タ ウ ィ ン ド ウ ペ イ ン タ でデー タ ウ ィ ン ド ウ オブジ ェ ク ト (ま たは PSR フ ァ イ ル) を構築 し た ら 、 そのオブジ ェ ク ト を使用 し て、 適切な デー タ ソ ース か ら 情報を表示 し 、 処理す る こ と がで き ます。 以降の節 では、 こ の方法について詳 し く 説明 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 16 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の コ ン ト ロールへの 取 り 込み デー タ ウ ィ ン ド ウ コ ン ト ロ ールは、 アプ リ ケーシ ョ ンに配置す る デー タ ウ ィ ン ド ウ オブジ ェ ク ト の コ ン テナです。デー タ ウ ィ ン ド ウ コ ン ト ロ ールは、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のデー タ や外観を操作す る ためのプ ロ パテ ィ 、 メ ソ ッ ド 、 お よ び イ ベン ト を提供 し ます。 デー タ ウ ィ ン ド ウ コ ン ト ロ ールは、アプ リ ケーシ ョ ンのユーザ イ ン タ フ ェ ー ス の一部です。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト は、 非ビ ジ ュ アルなデー タ ス ト アや、 ド ロ ッ プ ダ ウ ン デー タ ウ ィ ン ド ウ や コ ン ポ ジ ッ ト 提示様式な ど の子 デー タ ウ ィ ン ド ウ で も 使用で き ます。デー タ ス ト アについての詳細は、 第 4 章の 「デー タ ス ト ア オブジ ェ ク ト の使い方」 を参照 し て く だ さ い。 ド ロ ッ プダ ウ ン デー タ ウ ィ ン ド ウ お よ び コ ン ポ ジ ッ ト デー タ ウ ィ ン ド ウ についての詳細は、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を アプ リ ケーシ ョ ン で使用す る には、 ウ ィ ン ド ウ ま たは フ ォ ー ム にデー タ ウ ィ ン ド ウ コ ン ト ロ ール を 追加 し 、 その コ ン ト ロ ールをデー タ ウ ィ ン ド ウ オブジ ェ ク ト と 関連付け ま す (図 2-1 を参照)。 図 2-1: デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト のデー タ ウ ィ ン ド ウ コ ン ト ロールへ の取 り 込み こ の節では、 以下の内容について説明 し ます。 • デー タ ウ ィ ン ド ウ コ ン ト ロ ール と デー タ ウ ィ ン ド ウ オブジ ェ ク ト の名前 • コ ン ト ロ ールを挿入 し 、 その コ ン ト ロ ールにデー タ ウ ィ ン ド ウ オ ブジ ェ ク ト を割 り 当て る ための手順 • 実行段階でのデー タ ウ ィ ン ド ウ オブジ ェ ク ト の指定 デー タ ウ ィ ン ド ウ オブジ ェ ク ト と Web デー タ ウ ィ ン ド ウ コ ン ト ロ ー ル と の関連付けについての詳細は、 197 ページの 「デー タ ウ ィ ン ド ウ オブジ ェ ク ト の ロ ー ド 」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 17 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 デー タ ウ ィ ン ド ウ オブジ ェ ク ト と Web コ ン ト ロ ール ActiveX と の関 連付けについての詳細は、 233 ページの 「 コ ン ト ロ ールに対す る デー タ ウ ィ ン ド ウ オブジ ェ ク ト の指定」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ コ ン ト ロールと デー タ ウ ィ ン ド ウ オブジ ェ ク ト の名前 デー タ ウ ィ ン ド ウ を操作す る 際に、注意が必要な名前が 2 つあ り ます。 • デー タ ウ ィ ン ド ウ コ ン ト ロ ールの名前 • コ ン ト ロ ールに関連付け ら れてい る デー タ ウ ィ ン ド ウ オブジ ェ ク ト の名前 ウ ィ ン ド ウ ま たは フ ォ ー ム にデー タ ウ ィ ン ド ウ コ ン ト ロ ールを配置す る と 、 その コ ン ト ロ ールにデフ ォ ル ト の名前が付け ら れ ます。 こ の名前を アプ リ ケーシ ョ ン内で意味のあ る 名前に変更 し て く だ さ い。 デー タ ウ ィ ン ド ウ コ ン ト ロール名 PowerBuilder では、 コ ン ト ロ ール名に dw_ と い う プ レ フ ィ ッ ク ス が付 け ら れ ます。 開発環境に関係な く 、 こ の規則を守っ てお く と 便利です。 た と えば、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールに顧客名が リ ス ト さ れてい る 場合は、 その コ ン ト ロ ールに dw_customer と い う 名前を付けてお く と 便利です。 名前の使い方 コ ー ド で デ ー タ ウ ィ ン ド ウ を 参 照 す る 場 合 は、 コ ン ト ロ ー ル 名 (dw_customer な ど) を使用 し て く だ さ い。 コ ン ト ロ ール内にあ る デー タ ウ ィ ン ド ウ オブジ ェ ク ト は参照で き ません。 混乱を避け る ために、デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト と デー タ ウ ィ ン ド ウ コ ン ト ロ ールには、 異な る プ レ フ ィ ッ ク ス を付け て く だ さ い。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト には、 プ レ フ ィ ッ ク ス d_ を付け る のが一般的です。 た と えば、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール名が dw_customer の場合、 それに対応す る デー タ ウ ィ ン ド ウ オブジ ェ ク ト 名は d_customer に し ます。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト 名 PowerBuilder でのデー タ ウ ィ ン ド ウ コ ン ト ロールの操作 v ウ ィ ン ド ウにデー タ ウ ィ ン ド ウ コ ン ト ロールを配置するには 1 データ ウ ィ ン ド ウ コ ン ト ロ ールを配置する ウ ィ ン ド ウ を開き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 18 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 2 メ ニ ュ ー バーか ら [挿入| コ ン ト ロ ール|デー タ ウ ィ ン ド ウ ] を 選択 し ます。 3 コ ン ト ロ ールを表示す る 位置を ク リ ッ ク し ます。 ウ ィ ン ド ウ に空のデー タ ウ ィ ン ド ウ コ ン ト ロ ールが配置 さ れ ま す。 4 (オプシ ョ ン) デー タ ウ ィ ン ド ウ コ ン ト ロ ールのサ イ ズ を変更す る には、 コ ン ト ロ ールを選択 し 、 いずれかのハ ン ド ル を ド ラ ッ グ し ます。 デー タ ウ ィ ン ド ウ コ ン ト ロ ールを配置 し た ら 、 次は、 その コ ン ト ロ ー ルにデー タ ウ ィ ン ド ウ オブジ ェ ク ト を関連付け ます。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の指定 v コ ン ト ロールにデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を関連付けるには 1 デー タ ウ ィ ン ド ウ プ ロ パテ ィ ビ ュ ーで、 [デー タ オブジ ェ ク ト ] プ ロ パテ ィ の参照 ([...]) ボ タ ン を ク リ ッ ク し ます。 2 コ ン ト ロ ール内に配置す る デー タ ウ ィ ン ド ウ オブジ ェ ク ト を選択 し 、 [OK] を ク リ ッ ク し ます。 デー タ ウ ィ ン ド ウ プ ロ パテ ィ ビ ュ ーの、 [デー タ オブジ ェ ク ト ] ボ ッ ク ス に、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の名前が表示 さ れま す。 3 (オプシ ョ ン) 必要であれば、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールのプ ロ パテ ィ を変更 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 19 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 ユーザ側でデー タ ウ ィ ン ド ウ コ ン ト ロールを移動で き る よ う にする 実行時にユーザがデー タ ウ ィ ン ド ウ コ ン ト ロ ールを移動で き る よ う にす る には、コ ン ト ロ ールに タ イ ト ルを付けて、[ タ イ ト ル バー] チ ェ ッ ク ボ ッ ク ス を選択 し ます。 こ れで、ユーザは、 タ イ ト ル バー を ド ラ ッ グ し て コ ン ト ロ ールを移動で き ます。 再利用可能なデー タ ウ ィ ン ド ウ コ ン ト ロールの定義 アプ リ ケーシ ョ ン内のすべてのデー タ ウ ィ ン ド ウ コ ン ト ロ ールに、 同 じ 外観お よ び同 じ 動作を定義で き ます。た と えば、すべての コ ン ト ロ ー ルで同 じ エ ラ ー処理が可能です。 こ の よ う な動作を一度定義 し 、それを各 ウ ィ ン ド ウ で再利用す る には、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール を基に標準的な ユーザ オブ ジ ェ ク ト を作成す る 必要があ り ます。 ユーザ オブジ ェ ク ト のプ ロ パテ ィ を定義 し 、 エ ラ ー処理な ど 必要な汎用処理 を行 う ス ク リ プ ト を作成 し ま す。 次に、 新 し いデー タ ウ ィ ン ド ウ コ ン ト ロ ールを作成す る のではな く 、 こ のユーザ オブジ ェ ク ト を ウ ィ ン ド ウ に配置 し ます。 デー タ ウ ィ ン ド ウ ユーザ オブジ ェ ク ト には、あ ら か じ め定義 さ れてい る 目的の機能が すべて取 り 込ま れ ます。 再度指定す る 必要はあ り ません。 ユーザ オ ブ ジ ェ ク ト の作成方法お よ び使用方法につい て の詳細は、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 コ ン ト ロール内のデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の編集 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を ウ ィ ン ド ウ 内のデー タ ウ ィ ン ド ウ コ ン ト ロ ール と 関連付け る と 、 デー タ ウ ィ ン ド ウ ペ イ ン タ に直接ア ク セ ス し て、 関連付け ら れてい る デー タ ウ ィ ン ド ウ オブジ ェ ク ト を編集 で き ます。 v 関連付け ら れているデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を編集するには • デー タ ウ ィ ン ド ウ コ ン ト ロ ールの ポ ッ プ ア ッ プ メ ニ ュ ーか ら 、 [デー タ ウ ィ ン ド ウ の修正] を選択 し ます。 関連付け ら れ て い る デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト が、 デー タ ウ ィ ン ド ウ ペ イ ン タ 内で開 き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 20 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 実行段階でのデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の指定 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の変更 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の変更方法は、 環境に よ っ て異な り ま す。 DataObject プ ロ パテ ィ を、 アプ リ ケーシ ョ ン に組み 込んだいずれかのデー タ ウ ィ ン ド ウ オブジ ェ ク ト に設定 し ます。 • PowerBuilder • Web ActiveX • Web デー タ ウ ィ ン ド ウ 新 し い ラ イ ブ ラ リ フ ァ イ ルお よ びデー タ ウ ィ ン ド ウ を選択す る よ う に、 SourceFileName お よ び DataWindowObject プ ロ パテ ィ を設定 し ます。 Web タ ーゲ ッ ト オブ ジ ェ ク ト モデル を 使 用 し ない場合は、 Web デー タ ウ ィ ン ド ウ ジ ェ ネ レー タ コ ン ポーネ ン ト の SetDWObject メ ソ ッ ド を呼び出す こ と がで き ます。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の変更時の ト ラ ンザク シ ョ ン オブ ジ ェ ク ト の 設定 実行時にデー タ ウ ィ ン ド ウ オブジ ェ ク ト を変更す る 場合、 setTrans ま たは setTransObject を再度呼び出 さ なければな ら ない こ と があ り ます。 詳細については、 25 ページの 「デー タ ウ ィ ン ド ウ コ ン ト ロ ールへの ト ラ ンザ ク シ ョ ン オブジ ェ ク ト の設定」 を参照 し て く だ さ い。 データ ウィ ン ド ウ オ ブ ジ ェ ク ト の動的な 作成 実行時に新 し いデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を 作成 し て、 コ ン ト ロ ール と 関連付け る こ と も で き ます。 詳細については、 第 3 章の 「デー タ ウ ィ ン ド ウ オブジ ェ ク ト の動的変 更」 を参照 し て く だ さ い。 PowerBuilder でのデー タ ウ ィ ン ド ウの変更 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を ウ ィ ン ド ウ 内の コ ン ト ロ ール と 関 連付け る と き には、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの DataObject プ ロ パテ ィ の初期値を設定 し ます。 こ れ に よ っ て、 ア プ リ ケ ー シ ョ ン の 実行時 に は、 コ ン ト ロ ー ル の DataObject プ ロ パテ ィ に指定 さ れたデー タ ウ ィ ン ド ウ オブジ ェ ク ト の イ ン ス タ ン ス が作成 さ れ、 その イ ン ス タ ン ス が コ ン ト ロ ールで使用 さ れ ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 21 第2章 コ ー ド での DataObject プ ロパテ ィ の設定 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 ウ ィ ン ド ウ ペ イ ン タ でデー タ ウ ィ ン ド ウ オブジ ェ ク ト を指定す る 方 法以外に も 、コ ー ド 内で DataObject プ ロ パテ ィ の値を変更す る こ と で、 実行時に コ ン ト ロ ールに表示 さ れ る オブジ ェ ク ト を切 り 替え る こ と が で き ます。 例 : デー タ ウ ィ ン ド ウ コ ン ト ロ ール dw_emp 内に、 ラ イ ブ ラ リ emp.pbl のデー タ ウ ィ ン ド ウ オブジ ェ ク ト d_emp_hist を表示す る には、次の ス ク リ プ ト を記述 し ます。 dw_emp.DataObject = "d_emp_hist" デー タ ウ ィ ン ド ウ オブジ ェ ク ト d_emp_hist は、 デー タ ウ ィ ン ド ウ ペ イ ン タ で作成 さ れ、 アプ リ ケーシ ョ ン の検索パ ス 内の ラ イ ブ ラ リ に格 納 さ れて い ま す。 コ ン ト ロ ール dw_emp は ウ ィ ン ド ウ に取 り 込 ま れ、 ウ ィ ン ド ウ 定義の一部 と し て保存 さ れてい ます。 再描画を防ぐ方法 SetRedraw メ ソ ッ ド を使用 し て再描画機能を オ フ に し てお く と 、 オブ ジ ェ ク ト や コ ン ト ロ ールのプ ロ パテ ィ を い く つか変更 し た場合のち ら つ き を防ぎ、 再描画時間を短縮で き ます。 実行時にデー タ ウ ィ ン ド ウ オブジ ェ ク ト を動的に変更す る と 、 再描画機能は暗黙的にオ ン にな り ます。 再描画機能を再度オ フ にす る には、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を変更す る たびに、 SetRedraw メ ソ ッ ド を呼び出 し ます。 dw_emp.DataObject = "d_emp_hist" dw_emp.SetRedraw(FALSE) PSR フ ァ イ ルの使い方 実行時にデー タ ウ ィ ン ド ウ コ ン ト ロ ールに PSR フ ァ イ ル を取 り 込む には、 コ ン ト ロ ールの DataObject プ ロ パテ ィ に目的の PSR フ ァ イ ル名 を指定 し ます。 Web ActiveX でのデー タ ウ ィ ン ド ウの変更 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト をデー タ ウ ィ ン ド ウ コ ン ト ロ ール と 関連付け る と き は、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの SourceFileName お よ び DataWindowObject プ ロ パテ ィ の初期値を設定 し ます。 こ れに よ っ て、 アプ リ ケーシ ョ ンの実行時に次の処理が行われ ます。 1 コ ン ト ロ ールの SourceFileName プ ロ パテ ィ に指定 さ れた ラ イ ブ ラ リ (PBL フ ァ イ ル) ま たは ラ ン タ イ ム ラ イ ブ ラ リ (PBD フ ァ イ ル) 内のデー タ ウ ィ ン ド ウ オブジ ェ ク ト が検索 さ れ ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 22 第2章 2 コ ー ド での SourceFileName およ び DataWindowObject プ ロパテ ィ の設定 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 コ ン ト ロ ールの DataWindowObject プ ロ パテ ィ に指定 さ れたデー タ ウ ィ ン ド ウ オブジ ェ ク ト の イ ン ス タ ン ス が作成 さ れ、 その イ ン ス タ ン ス が コ ン ト ロ ールで使用 さ れ ま す。 こ の と き 使用 さ れ る デー タ ウ ィ ン ド ウ オブジ ェ ク ト は、 指定 さ れた ラ イ ブ ラ リ 内に存 在 し なければな り ません。 ウ ィ ン ド ウ ペ イ ン タ でデー タ ウ ィ ン ド ウ オブジ ェ ク ト を指定す る 方 法以外に も 、 コ ー ド 内で SourceFileName お よ び DataWindowObject プ ロ パテ ィ の値を変更す る こ と で、 実行時に コ ン ト ロ ールに表示 さ れ る オブジ ェ ク ト を切 り 替え る こ と がで き ます。 DataWindowObject プ ロ パテ ィ を変更す る だけで、 同 じ ラ イ ブ ラ リ 内に あ る 別のデー タ ウ ィ ン ド ウ オブジ ェ ク ト を使用で き ます。 ま た、 両方 のプ ロ パテ ィ を変更す る と 、 ほかの ラ イ ブ ラ リ 内のデー タ ウ ィ ン ド ウ オブジ ェ ク ト を使用で き ます。 SourceFileName の URL については、 233 ページの 「 コ ン ト ロ ールに対 す る デー タ ウ ィ ン ド ウ オブジ ェ ク ト の指定」 を参照 し て く だ さ い。 SourceFileName お よ び DataWindowObject プ ロ パ テ ィ につい て の詳細 は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アル を参照 し て く だ さ い。 実行時にデータ ウ ィ ン ド ウ コ ン ト ロ ールに PSR フ ァ イ ルを動的に取 り 込む場合は、 コ ン ト ロ ールの SourceFileName プ ロ パテ ィ を空の文字列に変更し て、DataWindowObject プ ロ パテ ィ の値 と し て PSR フ ァ イ ルの URL を指定し ます。 PSR フ ァ イルの使い方 例 以下の例では、JavaScript を使用し てプ ロ パテ ィ を設定し ます。 こ の コー ド では、 フ ォーム ま たは Web ページに配置 さ れ る データ ウ ィ ン ド ウ コ ン ト ロ ール dw_emp のデー タ ウ ィ ン ド ウ オブジ ェ ク ト を 変更 し ま す。 dw_emp は、 フ ォーム ま たは Web ページの定義の一部 と し て保存さ れて います。 DataWindowObject の値は d_emp_hist です。 こ のデータ ウ ィ ン ド ウは、 データ ウ ィ ン ド ウ ペイ ン タ で作成さ れ、 SourceFileName の値が示 す emp.pbl と い う 名前の ラ イ ブ ラ リ 内に格納 さ れています。 Web ページの Web ActiveX の場合は、 SourceFileName お よ び DataWindowObject プ ロ パテ ィ を直接設定 し ます。 Web ActiveX デー タ ウ ィ ン ド ウ コ ン ト ロ ール dw_emp 内に、 ラ イ ブ ラ リ emp.pbl の デー タ ウ ィ ン ド ウ オブジ ェ ク ト d_emp_hist を表示す る には、次の ス ク リ プ ト を記述 し ます。 dw_emp.SourceFileName = "dwlibs/emp.pbl"; dw_emp.DataWindowObject = "d_emp_hist"; デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 23 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 デー タ ベースへのア ク セス デー タ ウ ィ ン ド ウ コ ン ト ロ ールにデー タ を表示す る には、デー タ ソ ー ス に格納 さ れてい る デー タ を取得 し て、 目的の コ ン ト ロ ールに取 り 込 む必要があ り ます。デー タ を取得す る ための も っ と も 一般的な方法は、 デー タ ベース にア ク セ スす る こ と です。 アプ リ ケーシ ョ ン でデー タ ベー ス にア ク セ スす る には、 次の手順を行 い ます。 1 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト に適切な値を設定 し ます。 2 デー タ ベース に接続 し ます。 3 デー タ ウ ィ ン ド ウ コ ン ト ロ ールに ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を設定 し ます。 4 デー タ を検索 し 、 更新 し ます。 5 デー タ ベース と の接続を解除 し ます。 こ の節では、デー タ ウ ィ ン ド ウ コ ン ト ロ ールに ト ラ ンザ ク シ ョ ン オブ ジ ェ ク ト を設定す る 方法、 お よ びデー タ ウ ィ ン ド ウ オブジ ェ ク ト を使 用 し てデー タ を検索お よ び更新す る 方法について説明 し ます。 ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト の値の設定、 デー タ ベー ス と の接続、 お よ びデー タ ベー ス と の接続の解除についての詳細は、 以下を参照 し て く だ さ い。 『アプ リ ケーシ ョ ン テ ク ニ ッ ク 』 マニ ュ アルの 「 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト の使い方」 • PowerBuilder • Web デー タ ウ ィ ン ド ウ 200 ページの 「デー タ ベー ス 接続の指定 と デー タ 検索」 • 234 ページの 「デー タ ウ ィ ン ド ウ ト ラ ンザ ク シ ョ ン オブジ ェ ク ト コ ン ト ロ ールの使い方」 Web ActiveX デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 24 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 デー タ ウ ィ ン ド ウ コ ン ト ロールへの ト ラ ンザク シ ョ ン オブ ジ ェ ク ト の 設定 デー タ ウ ィ ン ド ウ コ ン ト ロ ール に対す る デー タ ベー ス 接続お よ び デー タ ベース ト ラ ンザ ク シ ョ ン を制御す る には、 2 つの方法があ り ま す。 次のいずれかの方法を使用で き ます。 • 内部 ト ラ ンザ ク シ ョ ン管理 • 独立 し た ト ラ ンザ ク シ ョ ン オブジ ェ ク ト こ の 2 つの方法では、 デー タ ベース ト ラ ンザ ク シ ョ ン を制御す る ため の レベルが異な り ます。 コ ン ト ロールに PSR フ ァ イルを表示 し ている場合 デー タ ウ ィ ン ド ウ コ ン ト ロ ールに PSR フ ァ イ ルを表示 し てい る 場合 は、 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を使用 し た り 、 デー タ ベース に接 続 し た り す る 必要はあ り ません。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を変更する場合 データ ウ ィ ン ド ウ コ ン ト ロ ールに関連付けら れている データ ウ ィ ン ド ウ オブジェ ク ト を 実行時に変更する 場合は、SetTrans ま たは SetTransObject メ ソ ッ ド を 再度呼び出さ なければなら ないこ と があり ま す。 ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト を設定す る には、 いず れか一方の メ ソ ッ ド を呼び出す必要があ り ます。 PowerBuilder 独立 し た ト ラ ン ザ ク シ ョ ン オブ ジ ェ ク ト を使用 し てい る 場合に限 り 、 SetTransObject を再度呼び出す必要があ り ます。 Web ActiveX こ の節では、 こ れ ら のオプシ ョ ンについて詳 し く 説明 し ます。 内部 ト ラ ンザ ク シ ョ ン管理 機能 デー タ ウ ィ ン ド ウ コ ン ト ロ ールで内部 ト ラ ン ザ ク シ ョ ン 管理 を 使用 す る と 、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールは、 接続、 接続解除、 コ ミ ッ ト 、 お よ び ロ ールバ ッ ク を処理 し ます。 必要に応 じ て、 接続 と 接続解 除が自動的に行われ ます。 ま た、エ ラ ーが生 じ た場合は、自動的に ロ ー ルバ ッ ク が行われ ます。 デー タ ウ ィ ン ド ウ は デー タ ベー ス に ア ク セ ス す る 必要が あ る 場合 (Retrieve ま たは Update メ ソ ッ ド の実行時な ど)、 内部的な CONNECT 文 を発行し 、 適切なデータ ア ク セ ス を行っ た後、 内部的な DISCONNECT 文を発行し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 25 第2章 使用の適否 使用 し ない場合 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 次の よ う な場合は、 内部 ト ラ ンザ ク シ ョ ン管理を使用 し ません。 • アプ リ ケーシ ョ ン でで き る 限 り 高いパフ ォーマ ン ス が必要な場合 内部 ト ラ ン ザ ク シ ョ ン管理では、 デー タ ベー ス にア ク セ ス す る た びに接続 と 接続解除を行わな ければな ら ないため、 処理速度が遅 く 、 シ ス テ ム リ ソ ース が大量に消費 さ れます。 • ト ラ ン ザ ク シ ョ ン を コ ミ ッ ト ま たは ロ ールバ ッ ク す る タ イ ミ ン グ を制御 し たい場合 内部 ト ラ ン ザ ク シ ョ ン管理では、 デー タ ベー ス へのア ク セ ス が終 了す る と 接続を解除 し な ければな ら ないため、 変更内容はただち に コ ミ ッ ト さ れ ます。 使用する場合 サ イ ト で使用可能な接続数が限 ら れてい る 場合、 接続を 開いた ま ま に し てお く こ と がで き ないので、 内部 ト ラ ン ザ ク シ ョ ン管 理が便利です。 内部 ト ラ ンザ ク シ ョ ン管理が有効な場合 と は、 検索のみが目的で (レ ポー ト 作成時な ど)、 デー タ ベース を ロ ッ ク し てお く 必要がない、 つま り ト ラ ンザ ク シ ョ ン の コ ミ ッ ト や ロ ールバ ッ ク を アプ リ ケーシ ョ ン で 管理す る 必要がない場合です。 仕組み 内部 ト ラ ン ザ ク シ ョ ン管理 を使用す る には、 ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト ( こ の場合は、 自動的に イ ン ス タ ン ス化 さ れた SQLCA) に接続値を指定 し ます。 次に、 SetTrans メ ソ ッ ド を呼び出 し て、 指定 し た ト ラ ンザ ク シ ョ ン オブジ ェ ク ト の値をデー タ ウ ィ ン ド ウ コ ン ト ロ ールの内部 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト に コ ピー し ます。 PowerBuilder SQLCA.DBMS = ProfileString("myapp.ini", & "database", "DBMS", " ") ... // ほかの接続パラ メ ー タ を設定 dw_employee.SetTrans(SQLCA) dw_employee.Retrieve( ) デー タ ベース と の接続 SetTrans を 使 用 し た 場 合 は、 ス ク リ プ ト 内 に CONNECT 文 や DISCONNECT 文を 明示的にコ ーディ ン グする 必要はあり ま せん。 必要に 応じ て、 CONNECT 文と DISCONNECT 文が自動的に発行さ れま す。 PowerBuilder の ト ラ ン ザ ク シ ョ ン オ ブ ジ ェ ク ト につい て の詳細は、 PowerBuilder の 『アプ リ ケーシ ョ ン テ ク ニ ッ ク 』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 26 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 内部 ト ラ ンザ ク シ ョ ン管理を使用す る には、 デー タ ウ ィ ン ド ウ ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト コ ン ト ロ ールを使用す る ので は な く 、 デー タ ウ ィ ン ド ウ Web ActiveX コ ン ト ロ ールに ト ラ ン ザ ク シ ョ ン プ ロ パテ ィ を設定 し ます。 プ ロ パテ ィ は、 Param 要素で設定す る か、 ス ク リ プ ト 内で設定で き ま す。 次の例では、 ス ク リ プ ト 内で DbParm プ ロ パテ ィ を設定 し 、 Retrieve を呼び出 し ます。 Web ActiveX dw_employee.DbParm = "Driver='com.sybase.jdbc3.jdbc.SybDriver', URL='jdbc:sybase:Tds:www.domain.com:7373'"; dw_employee.Retrieve( ); 内部 ト ラ ンザ ク シ ョ ン管理では、 SetTransObject は呼び出 し ません。 実 行時にデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を 変更 し て も 接続情報は有効 な ま ま で あ り 、 必要に応 じ て、 デー タ ウ ィ ン ド ウ は接続 を 行い ま す。 接続情報を変更す る には、 DbParm プ ロ パテ ィ の値を変更 し ます。 独立 し た ト ラ ンザク シ ョ ン オブ ジ ェ ク ト を使用 し た ト ラ ンザ ク シ ョ ン管理 仕組み 独立 し た ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を使用す る と 、 デー タ ベース ト ラ ン ザ ク シ ョ ン の継続時間 を制御で き ま す。 ス ク リ プ ト に よ っ て、 デー タ ベー ス と の接続お よ び接続解除を明示的に行い ます。 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト の AutoCommit プ ロ パテ ィ が false に設定 さ れて い る 場合は、 更新内容を コ ミ ッ ト ま たは ロ ールバ ッ ク す る タ イ ミ ン グ も プ ロ グ ラ ム し ます。 デー タ の検索や更新を行 う ための ス ク リ プ ト には、 通常、 次の文が必 要です。 Connect SetTransObject Retrieve ま たは Update Commit ま たは Rollback Disconnect PowerBuilder では、接続 と コ ミ ッ ト に埋め込み SQL を使用 し ます。Web ActiveX の場合、 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト には こ れ ら の操作を 行 う ための メ ソ ッ ド があ り ます。 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト は、 デー タ ベース か ら 返 さ れたエ ラ ー メ ッ セージ も プ ロ パテ ィ に格納 し ます。 こ のエ ラ ー情報を基に、 デー タ ベース への変更内容を コ ミ ッ ト ま たは ロ ールバ ッ ク す る か ど う か を 判断で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 27 第2章 使用する場合 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 デー タ ウ ィ ン ド ウ コ ン ト ロ ールで独立 し た ト ラ ン ザ ク シ ョ ン オ ブ ジ ェ ク ト を使用す る と 、 よ り 柔軟なデー タ ベー ス 処理が可能にな り ま すが、 デー タ ベース ト ラ ンザ ク シ ョ ンの管理について責任を負わなけ ればな り ません。 独立 し た ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を使用す る には、 い く つかの 理由があ り ます。 仕組み • 同 じ デー タ ベース に接続 し てい る デー タ ウ ィ ン ド ウ コ ン ト ロ ール が複数あ る と き に、 そのすべてに対 し て 1 つのデー タ ベー ス 接続 を確立 し て、 複数の接続に よ る オーバーヘ ッ ド を軽減 し たい場合 • ト ラ ンザ ク シ ョ ン処理を制御 し たい場合 • デー タ ベー ス 接続 を 開い た ま ま にす る こ と で実現 さ れ る 高いパ フ ォ ーマ ン ス が必要な場合 SetTransObject メ ソ ッ ド は、 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト と デー タ ウ ィ ン ド ウ コ ン ト ロ ールを関連付け ま す。 PowerBuilder には、 自動的に イ ン ス タ ン ス 化 さ れ る SQLCA と い う デフ ォ ル ト の ト ラ ンザ ク シ ョ ン オブジ ェ ク ト があ り ます。 その接続プ ロ パテ ィ を設定 し 、 接続 し て、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールに割 り 当て る こ と がで き ます。 PowerBuilder 次の文では、 SetTransObject を使用 し て、 デフ ォ ル ト の ト ラ ンザ ク シ ョ ン オブジ ェ ク ト (SQLCA) と デー タ ウ ィ ン ド ウ コ ン ト ロ ール dw_emp を関連付け ます。 // ト ラ ンザ ク シ ョ ン オブ ジ ェ ク ト の接続パラ メ ー タ を設定 SQLCA.DBMS = ... SQLCA.database = ... CONNECT USING SQLCA; dw_emp.SetTransObject(SQLCA) dw_emp.Retrieve() あ ら か じ め定義 さ れてい る SQLCA ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を 使用す る かわ り に、 ス ク リ プ ト 内に独自の ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を定義で き ます。 アプ リ ケーシ ョ ン で同時に複数のデー タ ベー ス に接続す る 必要があ る 場合は、 こ の方法を使用 し ます。 次の ス テー ト メ ン ト では、 SetTransObject を使用 し て、 プ ロ グ ラ マが作 成 し た ト ラ ンザ ク シ ョ ン オブジ ェ ク ト (trans_customer) と dw_customer を関連付け ます。 transaction trans_customer trans_customer = CREATE transaction // ト ラ ンザ ク シ ョ ン オブ ジ ェ ク ト の接続パラ メ ー タ を設定 trans_customer.DBMS = ... trans_customer.database = ... デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 28 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 CONNECT USING trans_customer; dw_customer.SetTransObject(trans_customer) dw_customer.Retrieve( ) Web ActiveX に独立 し た ト ラ ン ザ ク シ ョ ン オ ブ ジ ェ ク ト を使用す る には、 Sybase デー タ ウ ィ ン ド ウ ト ラ ン ザ ク シ ョ ン オブ ジ ェ ク ト コ ン ト ロ ールの OBJECT 要素を Web ページに追加 し ます。接 続プ ロ パテ ィ の設定には、 Param 要素か ス ク リ プ ト を使用 し ます。 Web ActiveX デー タ ベー ス に接続 し てデー タ を検索す る ス ク リ プ ト は、 次の よ う な 文にな り ます。 trans_1.Connect( ); dw_employee.SetTransObject( trans_1 ); dw_employee.Retrieve( ); trans_1.Disconnect( ); 詳細情報 デー タ ベース ト ラ ンザ ク シ ョ ン処理についての詳細は、 以下を参照 し て く だ さ い。 『アプ リ ケーシ ョ ン テ ク ニ ッ ク 』 マニ ュ アルの ト ラ ンザ ク シ ョ ン オブジ ェ ク ト の使い方に関す る 章 • PowerBuilder • Web ActiveX 第 8 章 の 「デ ー タ ウ ィ ン ド ウ Web コ ン ト ロ ー ル ActiveX の使い方」 SetTrans お よ び SetTransObject メ ソ ッ ド につい て の詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 デー タ の検索 と 更新 デー タ ウ ィ ン ド ウ コ ン ト ロ ールか ら デー タ ベー ス に ア ク セ ス す る に は、 以下の 2 つの メ ソ ッ ド を呼び出 し ます。 Retrieve Update 基本的なデー タ 検索 デー タ ウ ィ ン ド ウ コ ン ト ロ ールに ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト を 設定 し た後、 Retrieve メ ソ ッ ド を使用 し て、 デー タ ベース か ら デー タ を 検索 し 、 検索 し たデー タ を目的の コ ン ト ロ ールに取 り 込む こ と がで き ます。 dw_emp.Retrieve() デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 29 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 Web デー タ ウ ィ ン ド ウ サーバ コ ン ポーネ ン ト の場合、 RetrieveEx メ ソ ッ ド には、 引数が必要な と き に使用す る も う 1 つ別の書式があ り ま す。Web デー タ ウ ィ ン ド ウ でのデー タ 検索についての詳細は、200 ペー ジの 「デー タ ベース接続の指定 と デー タ 検索」 お よ び 201 ページの 「 リ ロ ー ド さ れたページにページ固有のデー タ を渡す」 を参照 し て く だ さ い。 検索引数の使い方 検索引数について 検索引数は、 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト に関連付け ら れて い る SELECT 文を修飾す る も ので、 条件に従っ て、 検索 さ れ る 行数を減 ら す こ と がで き ます。 た と えば、 次の SELECT 文の場合、 Salary がデー タ ウ ィ ン ド ウ ペ イ ン タ で定義 さ れ る 検索引数です。 SELECT Name, emp.sal FROM Employee WHERE emp.sal > :Salary Retrieve メ ソ ッ ド を呼び出す際に、Salary の値を指定し ます。PowerBuilder では、 次の よ う な ス ク リ プ ト を記述し ます。 dw_emp.Retrieve( 50000 ) それぞれの環境におけ る 注意事項について、 以下に説明 し ます。 引数を使用 し て Retrieve の ス ク リ プ ト を記述す る 場合、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト で定義 さ れてい る 順に引数を指定 し ま す。 Retrieve メ ソ ッ ド には、 特定のデー タ ウ ィ ン ド ウ オブジ ェ ク ト で必要 と な る 引 数 よ り 多 く の引数を取 り 込む こ と がで き ます。 余分な引数は無視 さ れ ます。 こ れに よ っ て、 い く つかの異な る デー タ ウ ィ ン ド ウ オブジ ェ ク ト に対応す る 汎用的な Retrieve を作成で き ます。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト で検索引数 を 取 る 場 合に、 Retrieve メ ソ ッ ド に検索引数を渡 し ていない と 、 Retreive メ ソ ッ ド の呼び出 し 時に、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールはユーザに対 し て 検索引数の指定を求め る プ ロ ン プ ト を表示 し ます。 検索引数の省略 引数の数が 16 個よ り 多い場合 一部の環境では、 Retrieve メ ソ ッ ド に指定で き る 引数の数の上限は 16 個です。 PowerBuilder 指定で き る 検索引数の数に制限はあ り ません。 RetrieveEx メ ソ ッ ド を使用 し て指定で き る 引数 の数の上限は 16 個です。 Web デー タ ウ ィ ン ド ウ Retrieve に指定で き る引数の数の上限は 16 個です。 16 個 よ り 多 く の引数を指定する必要があ る場合は、Web ActiveX の RetrieveEx メ ソ ッ ド を使用し て、 配列要素を検索引数に し て配列を渡し ます。 Web ActiveX デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 30 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 デー タ の更新 ユーザがデー タ ウ ィ ン ド ウ コ ン ト ロ ール内のデー タ を変更 し た場合、 Update メ ソ ッ ド を使用 し て、 その変更内容をデー タ ベース に保存で き ます。 PowerBuilder では、 次の よ う な ス ク リ プ ト を記述 し ます。 dw_emp.Update() Update メ ソ ッ ド を使用す る と 、前回 Update メ ソ ッ ド が実行 さ れてか ら デー タ ウ ィ ン ド ウ コ ン ト ロ ールに対 し て行われたすべて の挿入、 変 更、お よ び削除がデー タ ベース に送信 さ れ ます。外部の ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を使用 し てい る 場合は、 こ の時点でデー タ ベース の更 新内容を コ ミ ッ ト (ま たは ロ ールバ ッ ク ) で き ま す。 PowerBuilder で は SQL 文を使用で き ます。 Web ActiveX では、 ト ラ ンザ ク シ ョ ン オブ ジ ェ ク ト の メ ソ ッ ド と プ ロ パテ ィ を使用 し ます。 Web デー タ ウ ィ ン ド ウ ク ラ イ ア ン ト コ ン ト ロ ールでは、 更新要求 を行 う と 、 コ ミ ッ ト や ロ ールバ ッ ク を処理す る 、 サーバ コ ン ポーネ ン ト の更新 メ ソ ッ ド が呼 び出 さ れ ます。 デー タ ウ ィ ン ド ウ コ ン ト ロ ールに よ る デー タ ベース の更新方法 (ど の よ う な場合に ど の よ う な SQL 文が送信 さ れ る か) についての詳細は、 51 ページの 「デー タ ベース の更新」 を参照 し て く だ さ い。 例 以下の例に、 デー タ ベース と の接続、 検索、 更新、 コ ミ ッ ト ま たは ロ ー ルバ ッ ク 、お よ びデー タ ベース と の接続解除を行 う コ ー ド を示 し ます。 こ の例では、 すべてのデー タ ベース操作を 1 つの ス ク リ プ ト ま たは関 数で示 し てい ますが、 ほ と ん ど のアプ リ ケーシ ョ ン では こ れ ら の操作 は分割 さ れてい ま す。 た と えば、 PowerBuilder アプ リ ケーシ ョ ン の場 合、 デー タ ベー ス と の接続は ア プ リ ケーシ ョ ン の Open イ ベ ン ト で、 デー タ の検索 と 更新は 1 つ ま た は複数の ウ ィ ン ド ウ ス ク リ プ ト で、 デー タ ベー ス と の接続解除はアプ リ ケーシ ョ ン の Close イ ベン ト でそ れぞれ行い ます。 次の文では、 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト EmpSQL と デー タ ウ ィ ン ド ウ コ ン ト ロ ール dw_emp を使用 し て、 デー タ の検索 お よ び更新を行い ます。 PowerBuilder // ト ラ ンザ ク シ ョ ン オブ ジ ェ ク ト EmpSQL で // 指定 さ れたデー タ ベースに接続 し ます。 CONNECT USING EmpSQL; // EmpSQL を dw_emp の ト ラ ンザク シ ョ ン オブ ジ ェ ク ト // と し て設定 し ます。 dw_emp.SetTransObject(EmpSQL) デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 31 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 // EmpSQL で指定 さ れたデー タ ベースから // デー タ を検索 し て、 dw_emp に取 り 込みます。 dw_emp.Retrieve( ) // デー タ に変更を加え ます。 ... // デー タ ベース を更新 し ます。 IF dw_emp.Update( ) > 0 THEN COMMIT USING EmpSQL; ELSE ROLLBACK USING EmpSQL; END IF // デー タ ベース と の接続を解除 し ます。 DISCONNECT USING EmpSQL; 次の JavaScript の文では、 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト EmpSQL と データ ウ ィ ン ド ウ コ ン ト ロ ール dw_emp を使用し て、データ の検索およ び更新を行います。 Web ActiveX // ト ラ ンザ ク シ ョ ン オブ ジ ェ ク ト EmpSQL で // 指定 さ れたデー タ ベースに接続 し ます。 EmpSQL.Connect( ); // EmpSQL を dw_emp の ト ラ ンザク シ ョ ン オブ ジ ェ ク ト // と し て設定 し ます。 dw_emp.SetTransObject(EmpSQL); // EmpSQL で指定 さ れたデー タ ベースから // デー タ を検索 し て、 dw_emp に取 り 込みます。 dw_emp.Retrieve( ); // デー タ に変更を加え ます。 ... // デー タ ベース を更新 し ます。 if (dw_emp.Update( ) > 0) { EmpSQL.Commit( ); } else { EmpSQL.Rollback( ); } // デー タ ベース と の接続を解除 し ます。 EmpSQL.Disconnect( ); デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 32 第2章 検索または更新エ ラ ー の処理 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 実働アプ リ ケーシ ョ ン では、 デー タ ベース操作を行 う たびにエ ラ ー テ ス ト を実行す る 必要があ り ます。 エ ラ ーのチ ェ ッ ク についての詳細は、 45 ページの 「デー タ ウ ィ ン ド ウ エ ラ ーの処理」 を参照 し て く だ さ い。 Web サービ ス デー タ ソ ースへのア ク セス Web サービ ス デー タ ソ ース か ら デー タ にア ク セ スす る ために、 ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト を使用す る こ と はで き ません。 し か し 、 一部 の Web サービ ス は、 ユーザ ID と パ ス ワ ー ド 、 フ ァ イ ア ウ ォ ール設定 の よ う なほかのセ ッ シ ョ ン関連のプ ロ パテ ィ を サポー ト あ る いは要求 し ます。 WSConnection オブジ ェ ク ト は、 デー タ ウ ィ ン ド ウ 接続に関す る こ の情報を提供 し ます。 WSConnection オブジ ェ ク ト の イ ン ス タ ン ス を使用 し て、 SetWSObject メ ソ ッ ド の呼び出 し で Web サービ ス に接続す る こ と がで き ます。 Web サービ ス 接続のプ ロ パテ ィ 設定についての詳細は、 オ ン ラ イ ンヘ ルプの WSConnection お よ び SetWSObject を参照 し て く だ さ い。 外部 ソ ースか らのデー タ のイ ンポー ト PowerBuilder および Web ActiveX デー タ ウ ィ ン ド ウ のデー タ がデー タ ベー ス ま たは Web サービ ス デー タ ソ ー ス 以外か ら 取得 さ れてい る (つ ま り 、 デー タ ソ ー ス がデー タ ウ ィ ン ド ウ ウ ィ ザー ド で [外部 ソ ース] と し て定義 さ れてい る ) 場合、 以下の メ ソ ッ ド を使用 し て、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールにデー タ を イ ン ポー ト で き ます。 ImportClipboard ImportFile ImportString すべての環境 ま た、 SetItem メ ソ ッ ド ま たはデー タ ウ ィ ン ド ウ 式を使用 し て、 デー タ ウ ィ ン ド ウ にデー タ を取 り 込む こ と も で き ます。 SetItem メ ソ ッ ド お よ びデー タ ウ ィ ン ド ウ 式につい て の詳細は、 次の 「デー タ ウ ィ ン ド ウ コ ン ト ロ ールのデー タ の操作」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 33 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 デー タ ウ ィ ン ド ウ コ ン ト ロールのデー タ の操作 デー タ ウ ィ ン ド ウ でのデー タ の追加、 修正、 お よ び削除のユーザ要求 を処理す る には、 そのデー タ を 処理す る ための コ ー ド を記述 し ま す。 ただ し 、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールでのデー タ の管理方法につい て理解 し てお く 必要があ り ます。 デー タ ウ ィ ン ド ウ コ ン ト ロールのデー タ 管理方法 ユーザが追加ま たは変更 し たデー タ は、 まずエデ ィ ッ ト コ ン ト ロ ール 内のテ キ ス ト と し て処理 さ れ ます。 その後、 デー タ が受け入れ ら れ る と 、 そのデー タ はバ ッ フ ァ 内に項目 と し て格納 さ れ ます。 デー タ ウ ィ ン ド ウ バ ッ フ ァ について デー タ ウ ィ ン ド ウ は、 次の 3 つのバ ッ フ ァ を使用 し てデー タ を格納 し ます。 表 2-1: デー タ ウ ィ ン ド ウ バ ッ フ ァ バッ フ ァ 主バ ッ フ ァ フ ィ ルタ バ ッ フ ァ 削除バ ッ フ ァ デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 内容 削除やフ ィ ル タ も 適用 さ れていないデー タ 、つま り 表 示可能な行 フ ィ ル タ の適用に よ っ て非表示に さ れたデー タ ユーザやス ク リ プ ト に よ っ て削除 さ れたデー タ 34 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 エデ ィ ッ ト コ ン ト ロールについて ユーザがデー タ ウ ィ ン ド ウ コ ン ト ロ ール内に フ ォ ーカ ス を 移動す る と 、 現行のセル (行 と カ ラ ム) にエデ ィ ッ ト コ ン ト ロ ールが配置 さ れ ます。 テキス ト について エデ ィ ッ ト コ ン ト ロ ールの内容は、 テ キ ス ト と 呼ばれます。 こ のテ キ ス ト は、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールで ま だ受け入れ ら れていない デー タ です。 エデ ィ ッ ト コ ン ト ロ ールに入力 さ れたデー タ は、 デー タ ウ ィ ン ド ウ バ ッ フ ァ には格納 さ れてい ません。 つま り 、 エデ ィ ッ ト コ ン ト ロ ール内のテ キ ス ト にすぎ ません。 項目について ユーザがエデ ィ ッ ト コ ン ト ロ ールの内容を変更 し た後、 〔Enter〕 を押 すか、 ま たはセルか ら 抜け る ( タ ブやマ ウ ス を使用す る か、上矢印キー か下矢印キーを押す) と 、 デー タ が処理 さ れ、 カ ラ ム に指定 さ れてい る 条件を満た し てい る か ど う かに応 じ て、 デー タ が受け付け ら れ る か 拒否 さ れ ます。 デー タ が受け付け ら れ る と 、 テ キ ス ト はデー タ ウ ィ ン ド ウ の主バ ッ フ ァ 内の現行の行お よ び カ ラ ム に移 さ れ ま す。 主バ ッ フ ァ 内の特定のカ ラ ム に対す る デー タ は、 項目 と し て参照 さ れ ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 35 第2章 テキス ト および項目を 変更する イ ベン ト デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 エデ ィ ッ ト コ ン ト ロ ール内のデー タ が変更 さ れ る と 、 い く つかの イ ベ ン ト が発生 し ます。 イ ベン ト 名は環境に よ っ て異な り ます (次の表を 参照)。 こ の章では、 PowerBuilder の イ ベン ト 名を使用 し ます。 表 2-2: 異な る環境でのイ ベン ト 名 イ ベン ト PowerBuilder、 Web デー タ ウ ィ ン ド ウ ク ラ イアン ト コ ン ト ロール EditChanged ( ク ラ イ ア ン ト コ ン ト ロ ール では使用不可) ItemChanged エデ ィ ッ ト コ ン ト ロール内のテキス ト の 処理方法 説明 Web ActiveX onEditChange beforeItemChange ItemError onItemError ItemFocusChanged onItemFocusChange ユーザがエデ ィ ッ ト コ ン ト ロ ール内に キ ー入力 を 行 う たびに発生 セルが修正 さ れた後、フ ォー カ ス が失われた場合に発生 カ ラ ム に新 し く 入力 さ れ た デー タ が入力条件則 を 満た し ていない場合に発生 コ ン ト ロ ール内の現行項目 が変更 さ れ る と 発生 デー タ ウ ィ ン ド ウ のカ ラ ム内のデー タ が変更 さ れた後、 そのカ ラ ム が フ ォ ー カ ス を 失 う と (ユーザが次の カ ラ ム に タ ブ で移動 し た場合な ど)、 次の よ う な一連の イ ベン ト が発生 し ます。 1 デー タ ウ ィ ン ド ウ コ ン ト ロ ールが、 テ キ ス ト を そのカ ラ ム に合っ た正 し いデー タ 型に変換 し ま す。 た と えば、 数値 カ ラ ム の場合、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールは入力 さ れた文字列を数字に変換 し ます。 デー タ を変換で き ない場合は、 ItemError イ ベン ト が発生 し ます。 2 デー タ が正 し いデー タ 型に変換 さ れ る と 、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールは そ の カ ラ ム に定義 さ れ て い る 入力条件則 を 適用 し ま す。 デー タ が入力条件則を満た し ていない場合は、 ItemError イ ベ ン ト が発生 し ます。 3 デー タ が入力条件則を満た し てい る 場合は、ItemChanged イ ベン ト が発生 し ます。ItemChanged イ ベン ト のア ク シ ョ ン / リ タ ーン コ ー ド に 1 が設定 さ れてい る 場合、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールは デー タ を拒否 し 、 フ ォ ーカ ス を移動で き ない よ う に し ま す。 こ の 場合、 ItemError イ ベン ト が発生 し ます。 4 ItemChanged イ ベン ト でデータ が受け付けら れる と 、ItemFocusChanged イ ベン ト が発生し 、 データ がバッ フ ァ 内に項目と し て格納さ れま す。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 36 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 図 2-2: エデ ィ ッ ト コ ン ト ロール内のテキス ト の処理方法 イ ベン ト のア ク シ ョ ン / リ タ ーン コ ー ド イ ベン ト のプ ロ グ ラ ム コ ー ド に数値を指定す る こ と で、 イ ベン ト の結 果を制御で き ます。 た と えば、 上記の手順 3 は、 ItemChanged イ ベン ト に コ ー ド 1 を指定す る と 、 デー タ を強制的に拒否で き る こ と を示 し て い ます。 ア ク シ ョ ン / リ タ ーン コ ー ド を指定す る には • PowerBuilder および Web データ ウィ ンド ウ RETURN 文を 使用し ま す。 • Web ActiveX SetActionCode ま たは setActionCode メ ソ ッ ド を呼び 出 し ます。 個々の イ ベン ト の コ ー ド については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 エデ ィ ッ ト コ ン ト ロールのテキス ト へのア ク セス メ ソ ッ ド の使い方 イ ベン ト コ ー ド 以下の メ ソ ッ ド を使用す る と 、 エデ ィ ッ ト コ ン ト ロ ールのテ キ ス ト に ア ク セ ス で き ます。 • GetText ― エデ ィ ッ ト コ ン ト ロ ールのテ キ ス ト を取 り 出す • SetText ― エデ ィ ッ ト コ ン ト ロ ールにテ キ ス ト を設定す る 以上の メ ソ ッ ド のほかに、 以下の イ ベン ト を使用 し て も 、 エデ ィ ッ ト コ ン ト ロ ールのテ キ ス ト にア ク セ ス で き ます。 EditChanged ItemChanged ItemError デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 37 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 エデ ィ ッ ト コ ン ト ロ ールの テ キ ス ト に ア ク セ ス す る には、 Data パ ラ メ ー タ を使用 し ます。 こ のパ ラ メ ー タ は イ ベン ト に渡 さ れ ます。 こ れ ら の イ ベン ト の コ ー ド で、 テ キ ス ト の値を テ ス ト し て、 その値に応 じ て特別な処理を実行で き ます。 例については、 38 ページの 「ItemChanged イ ベン ト の ス ク リ プ ト の記 述」 を参照 し て く だ さ い。 エデ ィ ッ ト コ ン ト ロールのテキス ト の操作 デー タ ウ ィ ン ド ウ コ ン ト ロ ール内に あ る エデ ィ ッ ト コ ン ト ロ ールの 内容を さ ら に操作す る 場合は、 以下の メ ソ ッ ド を使用で き ます。 CanUndo Clear Copy Cut LineCount Paste Position ReplaceText Scroll SelectedLength SelectedLine SelectedStart SelectedText SelectText TextLine Undo こ れ ら の イ ベン ト についての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 ItemChanged イ ベ ン ト のス ク リ プ ト の記述 デー タ が正 し く 変換 さ れ、 入力条件則を満た し てい る と 、 ItemChanged イ ベン ト が発生 し ます。 デフ ォ ル ト では、 ItemChanged イ ベン ト はデー タ 値を受け付け、 フ ォ ーカ ス の移動を可能に し ます。 ItemChanged イ ベ ン ト の ス ク リ プ ト を記述 し て、 さ ら にほかの処理を行 う こ と がで き ま す。 た と えば、 なん ら かのテ ス ト を実行 し 、 デー タ を拒否す る コ ー ド を設定 し た後、 カ ラ ムに フ ォ ーカ ス を設定 し 、 ItemError イ ベン ト を発 生 さ せ る ス ク リ プ ト を記述で き ます。 例 次のサン プル コ ー ド は、dw_Employee と い う デー タ ウ ィ ン ド ウ コ ン ト ロ ールの ItemChanged イ ベン ト の コ ー ド です。 こ の コ ー ド では、 従業 員の年齢に満た な いデー タ は拒否 さ れ る よ う に、 dw_Employee に リ タ ーン コ ー ド を設定 し ます。 従業員の年齢は、 SingleLineEdit テ キ ス ト ボ ッ ク ス コ ン ト ロ ールに指定 さ れ ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 38 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 こ れは、 PowerBuilder の コ ー ド です。 int a, age age = Integer(sle_age.text) a = Integer(data) // // // IF ItemChanged イ ベン ト 内で リ タ ーン コ ー ド を 1 に設定 し て、 デー タ を拒否 し ますが、 フ ォ ー カ スは変更 し ないよ う に し ます。 a < age THEN RETURN 1 ItemError イ ベン ト のス ク リ プ ト の記述 ItemError イ ベン ト は、 デー タ になん ら かの問題があ る 場合に発生 し ま す。 デフ ォ ル ト では、 デー タ 値を拒否 し て、 メ ッ セージ ボ ッ ク ス を表 示 し ます。 ItemError イ ベン ト の コ ー ド を記述 し て、 さ ら にほかの処理 を実行で き ます。 た と えば、 デー タ 値を受け付け る コ ー ド や、 デー タ 値は拒否す る が フ ォ ーカ ス は変更で き る コ ー ド を記述で き ます。 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの イ ベン ト についての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウの項目へのア ク セス デー タ ウ ィ ン ド ウ のデー タ 値にア ク セ ス す る には、 メ ソ ッ ド かデー タ ウ ィ ン ド ウ のデー タ 式を使用 し ます。ど ち ら の方法で も 、すべてのバ ッ フ ァ 内のデー タ にア ク セ ス で き 、 オ リ ジナルの値や現行値を取得で き ます。 ど の方法を使用す る かは、 ア ク セ ス す る デー タ 量、 お よ び ス ク リ プ ト の コ ン パ イ ル時にデー タ ウ ィ ン ド ウ カ ラ ム 名が判明 し て い る か ど う かに よ っ て決ま り ます。 使用方法を決定す る ためのガ イ ド ラ イ ンについては、『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス 』 マニ ュ アルを参照 し て く だ さ い。 メ ソ ッ ド の使い方 デー タ ウ ィ ン ド ウ コ ン ト ロ ールのデー タ 操作用 メ ソ ッ ド と し て、 い く つかの メ ソ ッ ド があ り ます。 こ れ ら の メ ソ ッ ド は、 指定 さ れたバ ッ フ ァ 内の、 指定 さ れた行お よ び カ ラ ム のデー タ を取得 し ま す。 Web デー タ ウ ィ ン ド ウ の メ ソ ッ ド は、 多重定義 さ れた独立 し た メ ソ ッ ド です。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 39 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 • PowerBuilder GetItemDate、 GetItemDateTime、 GetItemDecimal、 GetItemNumber、 GetItemString、 GetItemTime • Web ActiveX • Web デー タ ウ ィ ン ド ウ サーバ コ ンポーネ ン ト GetItemDate、 GetItemNumber、 GetItemString GetItemDate、 GetItemDateByColNum、 GetItemDateByColNumEx、 GetItemDateEx、 GetItemDateTime、 GetItemDateTimeByColNum、 GetItemDateTimeByColNumEx、 GetItemDateTimeEx、 GetItemNumber、 GetItemNumberByColNum、 GetItemNumberByColNumEx、 GetItemNumberEx、 GetItemStatus、 GetItemStatusByColNum、 GetItemString、 GetItemStringByColNum、 GetItemStringByColNumEx、 GetItemStringEx、 GetItemTime、 GetItemTimeByColNum、 GetItemTimeByColNumEx、 GetItemTimeEx 次の メ ソ ッ ド は、 指定 さ れてい る 行お よ びカ ラ ム の値を設定 し ます。 • PowerBuilder および Web ActiveX • Web デー タ ウ ィ ン ド ウ サーバ コ ンポーネ ン ト SetItem SetItemDate、 SetItemDateByColNum、 SetItemDateTime、 SetItemDateTimeByColNum、 SetItemNumber、 SetItemNumberByColNum、 SetItemStatus、 SetItemStatusByColNum、 SetItemString、 SetItemStringByColNum、 SetItemTime、 SetItemTimeByColNum た と えば、 次の文では、 PowerBuilder の構文を使用 し て、 主バ ッ フ ァ 内の先頭行の empname カ ラ ム の値を変数 ls_Name に代入 し ます。 ls_Name = dw_1.GetItemString (1, "empname") 次の PowerBuilder の文では、 先頭行の empname カ ラ ム の値 を 文字列 Waters に設定 し ます。 dw_1.SetItem(1, "empname", "Waters") 特定の行お よ び カ ラ ム のデー タ を 取得す る には、 GetItem メ ソ ッ ド を呼び出 し ます。 ま た、 デー タ ベース を更新す る 前に、 GetItem メ ソ ッ ド を使用 し て、特定のバ ッ フ ァ 内のデー タ をチ ェ ッ ク で き ます。 メ ソ ッ ド はカ ラ ム のデー タ 型に合っ た も の を使用 し な ければな り ませ ん。 使い方 上に示 し た メ ソ ッ ド についての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 40 第2章 式の使い方 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 デー タ ウ ィ ン ド ウ のデー タ 式では、 単一の項目や、 カ ラ ム、 デー タ の ブ ロ ッ ク 、 選択 さ れてい る ブ ロ ッ ク 、 ま たはデー タ ウ ィ ン ド ウ 全体を 参照で き ます。 デー タ 式の構築方法は、 環境に よ っ て異な り ます。 • PowerBuilder • Web ActiveX ド ッ ト (.) 表記を使用す る デー タ 式はサポー ト さ れていない デー タ ウ ィ ン ド ウ コ ン ト ロ ールの Object プ ロ パ テ ィ を使用す る と 、 その コ ン ト ロ ールのデー タ ウ ィ ン ド ウ オブジ ェ ク ト のデー タ を 直接参照す る 式 を 指定で き ま す。 こ の よ う な直接的な デー タ 操作に よ り 、 メ ソ ッ ド を呼び出す こ と な く 、 ア ク セ ス す る デー タ 量に も 関係な く 、 1 つの文でデー タ にア ク セ ス で き ます。 PowerBuilder の式 dw_1.Object.jobtitle[3] = "Programmer" 次の文では、 デー タ ウ ィ ン ド ウ の先頭行の先頭カ ラ ム の値を Smith に 設定 し ます。 dw_1.Object.Data[1,1] = "Smith" デー タ ウ ィ ン ド ウ のデー タ 式の構築方法につい て の詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 41 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 ほかのデー タ ウ ィ ン ド ウ メ ソ ッ ド の使い方 こ れ ま で説明 し て き た メ ソ ッ ド のほかに も 、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールでの処理に使用可能な多 く の メ ソ ッ ド があ り ます。 それ ら の メ ソ ッ ド の う ち、以下に一般的に使用 さ れ る メ ソ ッ ド の一部を示 し ます。 表 2-3: デー タ ウ ィ ン ド ウ コ ン ト ロールで一般的に使用 さ れる メ ソ ッ ド メソッド AcceptText DeleteRow Filter GetRow InsertRow Reset Retrieve RowsCopy、 RowsMove ScrollToRow SelectRow ShareData Update 目的 エデ ィ ッ ト コ ン ト ロ ールの内容 を、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの現行の項目に適用 する 指定 さ れた行をデー タ ウ ィ ン ド ウ コ ン ト ロ ー ルか ら 削除す る 。 実際にデー タ ベー ス か ら 行 が削除 さ れ る のではな く 、 行は削除バ ッ フ ァ に格納 さ れ る 現行の フ ィ ル タ に基づいて、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの行を表示する 現行の行番号を返す 新 し い行を挿入す る デー タ ウ ィ ン ド ウ コ ン ト ロ ール内のすべての 行を消去す る デー タ ベース か ら 行を検索す る デー タ ウ ィ ン ド ウ コ ン ト ロ ール間で行 を コ ピーま たは移動す る 指定 さ れた行に ス ク ロ ールす る 指定 さ れた行を強調表示す る 異な る デー タ ウ ィ ン ド ウ コ ン ト ロ ールの間で デー タ を共有す る デー タ ウ ィ ン ド ウ コ ン ト ロ ールに対 し て行わ れた挿入、 変更、 お よ び削除 をすべてデー タ ベース に送信す る 以上の メ ソ ッ ド の一部は、Web デー タ ウ ィ ン ド ウ ク ラ イ ア ン ト コ ン ト ロ ールま たはサーバ コ ン ポーネ ン ト 、 あ る いはその両方で使用で き ま す。 開発環境ご と に、 メ ソ ッ ド の参照 リ ス ト が提供 さ れてい ます。 デー タ ウ ィ ン ド ウ メ ソ ッ ド についての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス 』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 42 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 データ ウィ ン ド ウ オブ ジェ ク ト のプロ パティ へのアク セス デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト のプ ロパ テ ィ について デー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ には、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の動作を制御す る 情報が格納 さ れてい ます。 こ のプ ロ パ テ ィ は、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールのプ ロ パテ ィ ではな く 、 コ ン ト ロ ールに表示 さ れて い る デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト のプ ロ パ テ ィ です。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト その も のは、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ を持つ個別の コ ン ト ロ ール (カ ラ ム、 テ キ ス ト 、 グ ラ フ、 お よ び描画 コ ン ト ロ ール) で構成 さ れます。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ の初期値は、 デー タ ウ ィ ン ド ウ ペ イ ン タ で設定 し ます。 コ ー ド 内で実行時にプ ロ パテ ィ 値を取 得お よ び設定す る こ と も で き ます。 デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト の プ ロ パ テ ィ に ア ク セ ス す る には、 Describe お よ び Modify メ ソ ッ ド を使用す る か、 デー タ ウ ィ ン ド ウ のプ ロ パテ ィ 式を使用 し ます。 ど ち ら の方法を使用す る かは、 実行す る エ ラ ー チ ェ ッ ク の種類、 お よ びス ク リ プ ト の コ ンパ イ ル時にア ク セ スす る 、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト 内の コ ン ト ロ ールの名前 と プ ロ パ テ ィ の名前が判明 し てい る か ど う かに よ っ て決ま り ます。 Web ActiveX では、 Describe お よ び Modify メ ソ ッ ド のみサポー ト さ れ ます。 プ ロ パテ ィ 式はサポー ト さ れません。 使用す る 方法を決定す る ためのガ イ ド ラ イ ン、 お よ びデー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ の一覧 と 説明については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 メ ソ ッ ド の使用によ る オブ ジ ェ ク ト プ ロパ テ ィ へのア ク セス デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト のプ ロ パテ ィ の処理には、 以下の メ ソ ッ ド を使用で き ます。 • Describe ― デー タ ウ ィ ン ド ウ オブジ ェ ク ト と そのオブジ ェ ク ト 内 の コ ン ト ロ ールのプ ロ パテ ィ 値を レ ポー ト す る • Modify ― デー タ ウ ィ ン ド ウ オブジ ェ ク ト の定義を変更す る 命令 の リ ス ト を指定す る こ と で、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を修 正す る た と えば、 次の ス テー ト メ ン ト は、 empname カ ラ ム の Border プ ロ パテ ィ の値を文字列変数に代入 し ます。 PowerBuilder string ls_border ls_border = dw_1.Describe("empname.Border") 次の ス テー ト メ ン ト は、 empname カ ラ ム の Border プ ロ パテ ィ の値を 1 に変更 し ます。 dw_emp.Modify("empname.Border=1") デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 43 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 Web ActiveX JavaScript の コ ー ド は、 PowerScript の コ ー ド と ほ と ん ど 同 じ です。 次の ス テー ト メ ン ト は、 empname カ ラ ム の Border プ ロ パ テ ィ の値を取得 し ます。 string ls_border ls_border = dw_1.Describe("empname.Border"); 次の ス テー ト メ ン ト は、 empname カ ラ ム の Border プ ロ パテ ィ の値を 1 に変更 し ます。 dw_emp.Modify("empname.Border=1"); 動的デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト について Describe お よ び Modify を 使用す る と 、 ア プ リ ケーシ ョ ン の実行時に ユーザ がデー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト を 変更す る た め の イ ン タ フ ェース を提供で き ます。 た と えば、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の外観を変更 し た り 、 ユーザが一時的な レ ポー ト を作成で き る よ う に し た り で き ます。 詳細については、 第 3 章の 「デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更」 を参照 し て く だ さ い。 式の使い方 デー タ ウ ィ ン ド ウ のプ ロ パテ ィ 式を使用す る と 、 入れ子の文字列の数 を少な く し て、 プ ロ パテ ィ にア ク セ ス で き ます。 PowerBuilder では、 オ ブジ ェ ク ト 名やプ ロ パテ ィ 名の間違いに関す る 問題を Error イ ベン ト で処理で き ます。 Object プ ロ パテ ィ と ド ッ ト (.) 表記を使用 し ま す。 次 に例を示 し ます。 PowerBuilder integer li_border li_border = Integer(dw_1.Object.empname.Border) dw_1.Object.empname.Border = 1 有効な各種プ ロ パテ ィ 式の参照資料につい ては、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 44 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 デー タ ウ ィ ン ド ウ エ ラ ーの処理 デー タ ウ ィ ン ド ウ の処理中には、 以下の よ う なエ ラ ーが発生す る 可能 性があ り ます。 • 無効なデー タ 項目 (34 ページの 「デー タ ウ ィ ン ド ウ コ ン ト ロ ール のデー タ の操作」 を参照) • デー タ の検索ま たは更新時の失敗 • 無効ま たは存在 し ないプ ロ パテ ィ やデー タ へのア ク セ ス こ の節では、 以上の う ち最後の 2 種類のエ ラ ーの処理方法について説 明 し ます。 検索および更新エ ラ ー と DBError イ ベン ト 検索および更新テ ス ト デー タ ウ ィ ン ド ウ コ ン ト ロ ールで Retrieve ま たは Update メ ソ ッ ド を 使用 し てい る 場合は、 その メ ソ ッ ド の リ タ ーン コ ー ド を テ ス ト し て、 処理が正 し く 行われてい る か ど う か を確認す る 必要があ り ます。 SQLCode 属性はテ ス ト し ない SQL 文 (CONNECT、 COMMIT、 DISCONNECT な ど)、 ま たはそれに 相当す る ト ラ ン ザ ク シ ョ ン オブ ジ ェ ク ト の メ ソ ッ ド を 発行 し た場合 は、 必ず成否 コ ー ド ( ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト の SQLCode 属 性) を テ ス ト す る 必要があ り ます。 ただ し 、 こ の よ う なエ ラ ー チ ェ ッ ク は、 デー タ ウ ィ ン ド ウ で検索ま たは更新を行っ た場合には使用で き ません。 SQL 文の後のエ ラ ー処理についての詳細は、以下を参照 し て く だ さ い。 『アプ リ ケーシ ョ ン テ ク ニ ッ ク 』 マニ ュ アルの ト ラ ンザ ク シ ョ ン オブジ ェ ク ト の使い方に関す る 章 • PowerBuilder • Web ActiveX 第 8 章 の 「デ ー タ ウ ィ ン ド ウ Web コ ン ト ロ ー ル ActiveX の使い方」 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 45 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 表 2-4: Retrieve メ ソ ッ ド および Update メ ソ ッ ド の リ タ ーン コ ー ド メソッド Retrieve Update 例 リ タ ーン コー ド >=1 -1 0 1 -1 意味 検索が成功。 検索 さ れた行数が返 さ れ る 検索が失敗。 DBError イ ベン ト が発生 検索 さ れ る デー タ がない 更新が成功 更新が失敗。 DBError イ ベン ト が発生 更新が成功 し た場合に限 り 、 デー タ ベー ス に対 し て行 われた変更内容を コ ミ ッ ト す る には、 次の ス ク リ プ ト を記述 し ます。 PowerBuilder IF dw_emp.Update() > 0 THEN COMMIT USING EmpSQL; ELSE ROLLBACK USING EmpSQL; END IF 更新が成功 し た場合に限 り 、 デー タ ベース に対 し て行わ れた変更内容を コ ミ ッ ト す る には、 次の ス ク リ プ ト を記述 し ます。 Web ActiveX number rtn; rtn = dw_emp.Update( ); if (rtn == 1) { trans_a.Commit( ); } else { trans_a.Rollback( ); } DBError イ ベ ン ト の 使い方 検索 ま た は更新時に エ ラ ーが発生す る と (つ ま り 、 Retrieve ま た は Update メ ソ ッ ド で -1 が返 さ れ る と )、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール は DBError イ ベン ト を発生 さ せます。 た と えば、 NULL が認め ら れて いない カ ラ ム に対 し て値を持た ない行を挿入 し よ う と す る と 、 DBMS はその行を拒否 し 、 DBError イ ベン ト が発生 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 46 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 デフ ォ ル ト では、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールは、 DBMS か ら のエ ラ ー メ ッ セージ を次の よ う な メ ッ セージ ボ ッ ク ス に表示 し ます。 実際には、 DBError イ ベン ト に独自の処理を行 う コ ー ド を記述 し 、 デ フ ォ ル ト の メ ッ セージボ ッ ク ス は表示 し ない こ と がほ と ん ど です。 次 の表に、 エ ラ ー処理に関す る い く つかの ヒ ン ト を示 し ます。 表 2-5: DBError イ ベン ト から 渡 さ れる メ ッ セージ処理時の ヒ ン ト 目的 DBMS のエ ラ ー コ ー ド を取得 する DBMS の メ ッ セージ テ キ ス ト を取得す る デ フ ォ ル ト の メ ッ セージ ボ ッ ク ス を表示 し ない よ う にす る 処理 DBError イ ベン ト の SQLDBCode 引数を使 用す る DBError イ ベ ン ト の SQLErrText 引数 を 使 用す る ア ク シ ョ ンのア ク シ ョ ン / リ タ ーン コ ー ド と し て 1 を指定す る デー タ ウ ィ ン ド ウのア ク シ ョ ン / リ タ ーン コ ー ド について デー タ ウ ィ ン ド ウ コ ン ト ロ ールの一部の イ ベン ト には、 その イ ベン ト が発生 し た場合に行われ る デフ ォ ル ト のア ク シ ョ ン を上書 き す る ため の コ ー ド があ り ます。 コ ー ド と その定義は、 イ ベン ト に よ っ て異な り ます。 PowerBuilder では、 RETURN 文で こ の コ ー ド を設定 し ます。 Web ActiveX では、SetActionCode ま たは setActionCode メ ソ ッ ド を呼び出 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 47 第2章 例 PowerBuilder デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 こ れは、 DBError イ ベン ト のサン プル ス ク リ プ ト です。 // デー タ ベース エ ラ ー -195 は、 必要な値の一部が // 欠けている こ と を意味 し ます。 IF sqldbcode = -195 THEN MessageBox(" デー タ が足 り ません ", & " デー タ が入力 さ れていない " & +" フ ィ ール ド があ り ます ") END IF // リ タ ーン コ ー ド によ っ て、 デ フ ォル ト メ ッ セージ ボ ッ ク ス を // 表示 し ないよ う に し ます。 RETURN 1 ア プ リ ケ ーシ ョ ン の実行中に エ ラ ーが発生す る と 、 次の よ う な メ ッ セージ ボ ッ ク ス がユーザに表示 さ れます。 Web ActiveX JavaScript では、DBError イ ベン ト の コ ー ド は次の よ う に な り ます。 // デー タ ベース エ ラ ー -195 は、 必要な値の一部が // 欠けている こ と を意味 し ます。 if (sqldbcode == -195) { alert(" デー タ が足 り ません :\n" + " デー タ が入力 さ れていない " + " フ ィ ール ド があ り ます "); } // ア ク シ ョ ン コ ー ド によ っ て、 デ フ ォル ト メ ッ セージ ボ ッ ク ス を // 表示 し ないよ う に し ます。 dw_1.SetActionCode(1); デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 48 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 プ ロパテ ィ 式およびデー タ 式のエ ラ ー と Error イ ベン ト 実行時にデー タ 式ま たはプ ロ パテ ィ 式でエ ラ ーが発生 し た場合、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの Error イ ベン ト が発生 し ます。 こ れ ら の 式はデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト のデー タ やプ ロ パテ ィ を 参照す る ので、 実行時の条件に よ っ て有効であ る 場合 と 有効でない場合があ り ます。 Error イ ベン ト を使用す る と 、 式が有効でない場合に、 エ ラ ー 復旧 ロ ジ ッ ク を返す こ と がで き ます。 PowerBuilder の 構文チ ェ ッ ク PowerBuilder では、データ 式ま たはプロ パティ 式を 使用する と 、PowerScript コ ン パイ ラ によ っ て Object プロ パティ ま での構文チェ ッ ク が行われま す。 Object プロ パティ よ り 後のも のは、 実行時に評価さ れま す。 たと えば、 次 の式の場合、カラ ム 名 emp_name と プロ パティ Visible は実行時にチェ ッ ク さ れま す。 dw_1.Object.emp_name.Visible = "0" emp_name カ ラ ム がデー タ ウ ィ ン ド ウ に存在 し ない場合で も 、ま たはプ ロ パ テ ィ 名の ス ペルが間違 っ て い る 場合で も 、 コ ン パ イ ラ は そ の エ ラ ー を 検出 し ま せん。 た だ し 、 実行時に、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの Error イ ベン ト が発生 し ます。 Try-Catch ブ ロ ッ クの 使い方 Error イ ベン ト は、 エ ラ ーの原因 と な っ てい る デー タ やプ ロ パテ ィ 式を Try-Catch ブ ロ ッ ク で囲んでい る 場合で も 発生 し ます。 catch 文は Error イ ベン ト が発生 し た後で実行 さ れ ます。 し か し 、 こ れは Error イ ベン ト の コ ー ド を 記述 し て い な い場合や ExceptionFail! が引 き 金 と な り 発生 す る Error イ ベン ト のデ フ ォ ル ト のア ク シ ョ ン を変更 し ていない場合 に限 ら れ ます。 次の例は、 Try-Catch ブ ロ ッ ク で囲んだプ ロ パテ ィ 式で す。 TRY dw_1.Object.emp_name.Visible = "0" CATCH (dwruntimeerror dw_e) MessageBox ("DWRuntimeError", dw_e.text) END TRY エ ラ ー原因の究明 Error イ ベン ト には、 エ ラ ー状態に関す る 情報を提供す る い く つかの引 数が用意 さ れてい ます。 こ れ ら の引数の値を チ ェ ッ ク す る こ と で、 エ ラ ーの原因 を 究明す る こ と がで き ま す。 た と えば、 内部エ ラ ー番号、 エ ラ ーのテ キ ス ト 、 エ ラ ーの原因 と な っ た ス ク リ プ ト に対応す る オブ ジ ェ ク ト 名、 エ ラ ーが発生 し た ス ク リ プ ト の フル テ キ ス ト な ど を調べ る こ と がで き ます。 Error イ ベン ト の引数に よ っ て与え ら れ る 情報は、 コ ンパ イ ラ でチ ェ ッ ク さ れない式をデバ ッ グす る 場合に便利です。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 49 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 DWRuntimeError エ ラ ーを捕捉 し た場合、 Error イ ベン ト の引数を使用 す る かわ り に、 その ク ラ ス のプ ロ パテ ィ を使用 し て、 エ ラ ー状態に関 す る 情報を提供す る こ と も で き ます。 次の表は、 Error イ ベン ト の引数 と DWRuntimeError のプ ロ パテ ィ の対応です。 表 2-6: Error event の引数 と DWRuntimeError のプ ロパテ ィ の対応 Error イ ベン ト の引数 errornumber errorline errortext errorwindowmenu errorobject errorscript イ ベン ト の結果の制御 DWRuntimeError のプ ロパテ ィ number line text objectname class routinename Error イ ベン ト が発生 し た場合、 アプ リ ケーシ ョ ン ではエ ラ ーを無視 し て処理を続行 し た り 、 戻 り 値を異な る 値に置 き 換え た り 、 エ ラ ーの レ ベルを上げて SystemError イ ベン ト を発生 さ せ る こ と がで き ます。Error イ ベン ト では、 イ ベン ト の結果を制御す る ために、 参照渡 し の 2 つの 引数を設定で き ます。 表 2-7: Error イ ベ ン ト の引数の設定 引数 Action ReturnValue 説明 こ の引数に値を 指定する こ と で、エラ ーの結果と し てアプリ ケーショ ン の処置を 制御する 。 使用可能な値は次のと おり ExceptionIgnore! ExceptionSubstituteReturnValue! ExceptionFail! (デフ ォ ル ト のア ク シ ョ ン) こ の引数に指定す る 値のデー タ 型は、 デー タ ウ ィ ン ド ウ で 返 さ れ る と 予想 さ れ る 値 と 一致す る 。 こ の値は、 Action の 値が ExceptionSubstituteReturnValue! の場合に使用 さ れ る Error イ ベン ト の引数についての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 50 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 戻 り 値を置き換え る場合 ExceptionSubstituteReturnValue! ア ク シ ョ ン を 使用する と 、式の最後 の要素が原因で エ ラ ーが発生し た 場合に、 戻り 値を 置き 換え る こ と が で き ま す。 式 の 途 中 の 要 素 が 原 因 で エ ラ ー が 発 生 し た 場 合 は、 ExceptionSubstituteReturnValue! を 使用し て 戻り 値を 置き 換え な い でく ださ い。 ExceptionSubstituteReturnValue! ア ク シ ョ ン は、 デー タ 式のエ ラ ー を 処 理す る 場合に非常に便利です。 デー タ ベースの更新 ユーザがデー タ ウ ィ ン ド ウ コ ン ト ロ ール内のデー タ を変更 し た場合、 Update メ ソ ッ ド を使用 し て、変更内容をデー タ ベース に保存で き ます。 Update メ ソ ッ ド を使用す る と 、前回 Update ま たは Retrieve メ ソ ッ ド が 実行 さ れて か ら デー タ ウ ィ ン ド ウ コ ン ト ロ ールに対 し て行われたす べての挿入、 変更、 お よ び削除がデー タ ベース に送信 さ れます。 デー タ ウ ィ ン ド ウ コ ン ト ロールに よ るデー タ ベースの更新方法 デー タ ベー ス の更新時、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールは、 デー タ ウ ィ ン ド ウ バ ッ フ ァ 内の各行の ス テー タ ス を調べ る こ と で、 生成す る SQL 文の種類を決定 し ます。 デー タ ウ ィ ン ド ウ 項目には 4 つの ス テー タ ス があ り ますが、 こ の う ち 2 つは行だけに適用 さ れ る も のです。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 51 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 表 2-8: デー タ ウ ィ ン ド ウ項目の行 と カ ラ ムのス テー タ ス ス テー タ ス PowerBuilder 名 New! NewModified! NotModified! DataModified! 適用先 Web デー タ ウ ィ ン ド ウ名 New NewModified NotModified DataModified 数値 2 3 0 1 行 行 行と カラム 行と カラム 名前付き定数または数値定数 こ の表の定数は、 各環境で使用方法が異な り ます。 名前付 き の値は、 カ タ ロ グ デー タ 型 dwItemStatus の値 です。 感嘆符で終わ る 名前付 き の値を使用 し なければな り ません。 PowerBuilder 文字列値 を 使用す る 際に感嘆符 を 付け て も 付 けな く て も か ま い ません。 Web デー タ ウ ィ ン ド ウ Web ActiveX 名前付 き の値は定義 さ れ て い ま せん。 数値 を 使用 し ま す。 こ の節では、 PowerBuilder 名を使用 し ます。 ス テー タ スの設定方法 デー タ の検索時 デー タ が検索 さ れ、 デー タ ウ ィ ン ド ウ に取 り 込まれ る と 、 行 と カ ラ ム にはすべて初期ス テー タ ス と し て NotModified! が割 り 当て ら れ ます。 ユーザがデー タ を変更 し た り 、 SetItem メ ソ ッ ド を使用 し てプ ロ グ ラ ム か ら デー タ を変更 し た り し て、 特定の行のカ ラ ム のデー タ が変更 さ れ る と 、 そのカ ラ ムの ス テー タ ス は DataModified! に変わ り ます。 検索 さ れた行のいずれかのカ ラ ム の ス テー タ ス が DataModified! に変わ る と 、 行の ス テー タ ス も DataModified! に変わ り ます。 行がデー タ ウ ィ ン ド ウ に挿入 さ れ る と 、 行には初期ス テー タ ス と し て New! が割 り 当て ら れ、 その行のすべてのカ ラ ム には初期 ス テー タ ス と し て NotModified! が割 り 当て ら れ ます。 ユーザがデー タ を変更 し た り 、 SetItem メ ソ ッ ド な ど を使用 し てプ ロ グ ラ ム か ら デー タ を変更 し た り し て、 挿入 し た行内の カ ラ ム のデー タ が変更 さ れ る と 、 そのカ ラ ムの ス テー タ ス は DataModified! に変わ り ます。挿入 さ れた行 のいずれかのカ ラ ムの ス テー タ ス が DataModified! に変わ る と 、行の ス テー タ ス は NewModified! に変わ り ます。 行の挿入時 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 52 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 デー タ ウ ィ ン ド ウ カ ラ ム にデフ ォ ル ト 値が割 り 当て ら れてい る 場合、 ユーザが実際にその行のいずれかのカ ラ ム に最低 1 つ以上の変更を行 う ま では、 そのカ ラ ムの ス テー タ ス が DataModified! に変わ る こ と はあ り ません。 Update が呼び出 さ れ た場合 主バ ッ フ ァ および フ ィ ル タ バ ッ フ ァ 内の行の場合 Update メ ソ ッ ド が呼び 出 さ れ る と 、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールは以下の行の ス テー タ ス に基づい て、 主バ ッ フ ァ や フ ィ ル タ バ ッ フ ァ 内 の行に対 し て SQL INSERT 文 と UPDATE 文を生成 し ます。 表 2-9: INSERT 文お よび UPDATE 文の後の行のス テー タ ス 行のス テー タ ス NewModified! DataModified! 生成 さ れる SQL 文 INSERT UPDATE UPDATE 文にカ ラ ム が含まれ る のは、 以下の 2 つの条件が満た さ れて い る 場合に限 り ます。 • カ ラ ム がデー タ ウ ィ ン ド ウ オブジ ェ ク ト で保持 さ れ る 更新可能な カ ラ ム リ ス ト 内にあ る デー タ ウ ィ ン ド ウ オブジ ェ ク ト の更新特性の設定についての詳細 は、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 • カ ラ ム の ス テー タ ス が DataModified! であ る デー タ ウ ィ ン ド ウ コ ン ト ロ ールは、 生成 し た INSERT 文の中にすべて の カ ラ ム を読み込み ま す。 値が設定 さ れて い ない カ ラ ム につい ては、 NULL が挿入 さ れ ます。 こ のため、 そのカ ラ ムに NULL が認め ら れて いないデー タ ベース の場合は、 デー タ ベース エ ラ ーが発生 し ます。 削除バ ッ フ ァ 内の行の場合 データ ウ ィ ン ド ウ コ ン ト ロ ールは、DeleteRow メ ソ ッ ド を 使用し て削除バッ フ ァ に移さ れた行に対し て、 SQL DELETE 文を 生成し ま す。 ただし 、 DeleteRow が呼び出さ れる 前に、 行ス テータ ス と し て New! ま たは NewModified! が割り 当てら れていた行に対し ては、 DELETE 文は生成さ れま せん。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 53 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 プ ログ ラ ムに よ る行ま たはカ ラ ムのス テー タ スの変更 行ま たはカ ラ ム の ス テー タ ス を プ ロ グ ラ ム に よ っ て変更 し なければな ら ない こ と があ り ます。 こ の処理が必要にな る 典型的な例は、 デフ ォ ル ト の動作を行わない よ う にす る 場合です。 た と えば、 デー タ ウ ィ ン ド ウ 間 で 行 を コ ピ ー し た 場 合、 ユ ー ザ が そ の 行 を 修 正 し た 後 に、 INSERT 文ではな く UPDATE 文を発行で き ます。 デー タ ウ ィ ン ド ウ の行ま たはカ ラ ム の ス テー タ ス情報を プ ロ グ ラ ム に よ っ て変更す る には、 SetItemStatus メ ソ ッ ド を使用 し ま す。 個々の行 ま たはカ ラ ム の ス テー タ ス を調べ る には、 GetItemStatus メ ソ ッ ド を使 用 し ます。 カ ラ ムのス テー タ スの 変更 SetItemStatus を 使用 し て、 カ ラ ム の ス テー タ ス を DataModified! か ら NotModified! に、 ま たは NotModified! か ら DataModified! に変更で き ま す。 行のス テー タ ス を変更 し た場合に必要 と な る カ ラ ムのス テー タ スの変更 行の ス テー タ ス を変更す る と 、 その行の中のすべてのカ ラ ム の ス テー タ ス が NotModified! に変わ り ます。 こ のため、 Update メ ソ ッ ド を呼び 出 し た場合に、 SQL Update 文は生成 さ れ ません。 行の ス テー タ ス を変 更 し た場合は、 更新す る カ ラ ム の ス テー タ ス を変更 し な ければな り ま せん。 行のス テー タ スの変更 行の ス テー タ ス の変更は、 も う 少 し 複雑です。 次の表に、 行の ス テー タ ス を別の ス テー タ ス に変更 し た場合の影響を示 し ます。 表 2-10: 行のス テー タ ス を別のス テー タ スに変更 し た場合の影響 オ リ ジナルのス テー タ ス New! NewModified! DataModified! NotModified! 指定 し たス テー タ ス New! NewModified! Yes No NewModified! Yes Yes Yes DataModified! Yes Yes Yes NotModified! No New! Yes - 上の表で、 Yes は、 変更が有効であ る こ と を意味 し ます。 た と えば、 ス テー タ ス が NotModified! の行で SetItemStatus を発行 し て、 ス テー タ ス を New! に変更す る と 、 ス テー タ ス は New! に変わ り ます。 No は、 変 更が有効でな く 、 ス テー タ ス が変更 さ れない こ と を意味 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 54 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 SetItemStatus を 発 行 し て、 行 の ス テ ー タ ス を NewModified! か ら NotModified! に変更す る と 、実際には ス テー タ ス は New! に変更 さ れ ま す。 SetItemStatus を 発行 し て、 行の ス テ ー タ ス を DataModified! か ら New! に変更す る と 、 実際には ス テー タ ス は NewModified! に変更 さ れ ます。 行の ス テー タ ス を NotModified! ま たは New! に変更す る と 、 その行の すべて の カ ラ ム に NotModified! と い う ス テー タ ス が割 り 当て ら れ ま す。 こ のため、Update メ ソ ッ ド を呼び出 し た と き に SQL Update 文が生 成 さ れ る よ う にす る には、 必要な カ ラ ムの ス テー タ ス を DataModified! に変更 し て く だ さ い。 ス テー タ スの間接的な変更 通常、 目的の ス テー タ ス に直接変更で き な く て も 、 間接的に ス テー タ ス を変更す る こ と がで き ま す。 た と えば、 New! を 一度 DataModified! に変更 し 、 その後 NotModified! に変更 し ます。 レポー ト の作成 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を使用 し て、財務諸表、受注レ ポー ト 、 従業員 リ ス ト 、 在庫レ ポー ト な ど、 標準的な ビ ジネ ス レ ポー ト を作成 で き ます。 レ ポー ト を作成す る には、 次の操作を行い ます。 • 作成す る レ ポー ト の種類を決定す る • レ ポー ト のデー タ を表示す る デー タ ウ ィ ン ド ウ オブジ ェ ク ト を構 築す る • デー タ ウ ィ ン ド ウ オブジ ェ ク ト を ウ ィ ン ド ウ ま たはフ ォ ーム内の デー タ ウ ィ ン ド ウ コ ン ト ロ ールに配置す る • データ ウ ィ ン ド ウ コ ン ト ロ ールに値を設定する ために必要な処理 を実行し 、 内容を レ ポー ト と し て印刷する ための コー ド を記述する デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 55 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 ア プ リ ケーシ ョ ンから の InfoMaker の呼び出 し ユーザが InfoMaker (Sybase の レ ポー ト 作成用ツール) を イ ン ス ト ール し てい る 場合、 アプ リ ケーシ ョ ン か ら InfoMaker を呼び出す こ と がで き ます。 こ れに よ っ て、 ユーザ側で固有の レ ポー ト を作成 し 保存で き ます。 PowerBuilder で InfoMaker を起動す る には、 Run 関数を使用 し ま す。 InfoMaker の呼び出 し 方法については、 InfoMaker の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の計画 と 構築 レ ポー ト をデザ イ ンす る には、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を作成 し ます。デー タ ソ ース と 提示様式を選択 し た後、次の作業を行い ます。 • デー タ を ソ ー ト す る • データ ウ ィ ン ド ウ オブジ ェ ク ト にグループを作成する。 こ れに よ っ て、 レ ポー ト 内のデータ を整理し 、 グループの値が変わっ た と き に、 強制的に改ページする こ と がで き る • レ ポー ト の体裁を整え る ために、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を改良す る 。 た と えば、 タ イ ト ル、 カ ラ ム ヘ ッ ダ、 ページ番号を 表示す る 計算フ ィ ール ド な ど を追加す る フ ォ ン ト の使い方 通常 ス ク リ ー ン フ ォ ン ト よ り も プ リ ン タ の フ ォ ン ト の方が高 さ が低 く 幅広で あ る ので、 デー タ ウ ィ ン ド ウ ペ イ ン タ に表示 さ れ る も の と ま っ た く 同 じ テ キ ス ト が レ ポー ト に印刷 さ れ る と は限 り ません。 こ の 違いは、 テ キ ス ト フ ィ ール ド を大 き めに し て余裕を持たせ る こ と で補 正で き る 場合があ り ます。 大 き な レ ポー ト を印刷す る 場合は、 あ ら か じ めデー タ 量が少ない状態で レ ポー ト を テ ス ト し てみ る こ と をお勧め し ます。 レポー ト の印刷 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を構築 し 、 印刷に関す る 指定を行っ た ら 、 ウ ィ ン ド ウ ま たはフ ォ ーム のデー タ ウ ィ ン ド ウ コ ン ト ロ ールにそ のデー タ ウ ィ ン ド ウ オブジ ェ ク ト を配置で き ます (17 ページの 「デー タ ウ ィ ン ド ウ オブジ ェ ク ト の コ ン ト ロ ールへの取 り 込み」 を参照)。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 56 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 ユーザが レ ポー ト を印刷で き る よ う にす る には、 印刷 ロ ジ ッ ク を実行 す る コ ー ド がアプ リ ケーシ ョ ン に必要にな り ます。 た と えば、 ウ ィ ン ド ウ ま た は フ ォ ー ム に ボ タ ン を 配置 し て、 ユーザが そ の ボ タ ン を ク リ ッ ク し た と き に実行 さ れ る コ ー ド を作成で き ます。 1 つのデー タ ウ ィ ン ド ウ コ ン ト ロ ール ま たはデー タ ス ト アの内容を印 刷す る には、 Print メ ソ ッ ド を呼び出 し ま す。 た と えば、 PowerBuilder の次の文では、デー タ ウ ィ ン ド ウ コ ン ト ロ ール dw_Sales の レ ポー ト を 印刷 し ます。 dw_Sales.Print(TRUE) Print メ ソ ッ ド については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アル を 参照 し て く だ さ い。 ネ ス テ ィ ッ ド レ ポー ト を 使用 し て複数の デー タ ウ ィ ン ド ウ を 印刷す る 方法 に つ い て は、 57 ペー ジ の 「ネ ス テ ィ ッ ド レ ポー ト の使い方」 を参照 し て く だ さ い。 複数の異な るデー タ ウィ ンドウ コン ト ロールを 1 つの印刷 ジ ョ ブ で印刷する ウ ィ ン ド ウ 内に複数のデー タ ウ ィ ン ド ウ コ ン ト ロ ールがあ る 場合、ス ク リ プ ト で複数の PrintDataWindow メ ソ ッ ド 呼び出 し を 使用す る と 、 すべて のデー タ ウ ィ ン ド ウ コ ン ト ロ ールの内容を 1 つの印刷ジ ョ ブで印刷で き ます。 PowerBuilder ア プ リ ケーシ ョ ン専用 次の文では、 1 つの印刷ジ ョ ブで 3 つのデー タ ウ ィ ン ド ウ コ ン ト ロ ー ルの内容を印刷 し ます。 int job job = PrintOpen(" 作業員レ ポー ト ") // 各デー タ ウ ィ ン ド ウが新規ページの印刷を開始 し ます。 PrintDataWindow(job, dw_EmpHeader) PrintDataWindow(job, dw_EmpDetail) PrintDataWindow(job, dw_EmpDptSum) PrintClose(job) 印刷用の PowerBuilder シ ス テ ム関数については、 『PowerScript リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 ネス テ ィ ッ ド レ ポー ト の使い方 レ ポー ト 用のデー タ ウ ィ ン ド ウ オブジ ェ ク ト のデザ イ ン時に、 レ ポー ト 内にほかの レ ポー ト (デー タ ウ ィ ン ド ウ オブジ ェ ク ト ) を ネ ス ト で き ます。 アプ リ ケーシ ョ ン でネ ス テ ィ ッ ド レ ポー ト を使用す る ための 基本的な手順は、 ほかの種類の レ ポー ト の場合 と 同 じ です。 た だ し 、 ネ ス テ ィ ッ ド レ ポー ト に関 し て、 把握 し ておかなければな ら ない点が い く つかあ り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 57 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 使用で き る環境 コ ン ポジ ッ ト お よ びネ ス テ ィ ッ ド レ ポー ト は、 Web デー タ ウ ィ ン ド ウ では使用で き ません。 ネ ス テ ィ ッ ド レ ポー ト のデザ イ ン 方法につい て は、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 更新可能な複数の デー タ ウ ィ ン ド ウ を 1 ページに印刷する コ ン ポジ ッ ト レ ポー ト を使用す る と 、 1 ページに複数の レ ポー ト を印 刷で き ます。ただ し 、 コ ン ポジ ッ ト レ ポー ト は更新可能ではないので、 更新可能な複数のデー タ ウ ィ ン ド ウ を 1 ページに直接印刷す る こ と は で き ません。 こ の場合は、 次の よ う な間接的な方法を使用 し ます。 コ ン ポ ジ ッ ト レ ポー ト 内の名前が付け ら れた ネ ス テ ィ ッ ド レ ポー ト に対 し て GetChild メ ソ ッ ド を使用す る こ と で、 ネ ス テ ィ ッ ド レ ポー ト の参照を取得で き ま す。 ネ ス テ ィ ッ ド レ ポー ト の参照を取得すれば、 ほかのデー タ ウ ィ ン ド ウ と 同 じ よ う に、 実行時にネ ス テ ィ ッ ド レ ポー ト を操作で き ます。 こ の方法では、 ShareData メ ソ ッ ド を 呼び出 し て、 更新可能な複数の デー タ ウ ィ ン ド ウ コ ン ト ロ ール と コ ン ポ ジ ッ ト レ ポ ー ト 内の ネ ス テ ィ ッ ド レ ポー ト 間でデー タ を共有で き ます。 こ のため、 コ ン ポジ ッ ト レ ポー ト を介 し て、 1 ページに更新可能な複数のデー タ ウ ィ ン ド ウ を印刷で き ます。 v コ ンポジ ッ ト デー タ ウ ィ ン ド ウを使用 し て、 複数のデー タ ウ ィ ン ド ウを 1 ページに印刷するには 1 更新可能な複数のデータ ウ ィ ン ド ウ オブジェ ク ト がある データ ウ ィ ン ド ウ コ ン ト ロ ールを ウ ィ ン ド ウ ま たはフ ォ ーム に配置し ま す。 2 印刷す る ウ ィ ン ド ウ ま たは フ ォ ーム内の各デー タ ウ ィ ン ド ウ に対 応 し た レ ポー ト か ら 構成 さ れ る コ ン ポジ ッ ト レ ポー ト を定義 し ま す。 こ の際、 コ ン ポジ ッ ト レ ポー ト 内の各ネ ス テ ィ ッ ド レ ポー ト には名前を付けておいて く だ さ い。 ネス テ ィ ッ ド レポー ト の命名 ネ ス テ ィ ッ ド レ ポー ト で GetChild を使用す る には、 ネ ス テ ィ ッ ド レ ポー ト に名前がなければな り ません。 デー タ ウ ィ ン ド ウ ペ イ ン タ でネ ス テ ィ ッ ド レ ポー ト に名前を付け る には、 ワ ー ク スペース で目的の レ ポー ト を ダブル ク リ ッ ク し 、 [全般] プ ロ パテ ィ ページ の [名前] ボ ッ ク ス に レ ポー ト 名を入力 し ます。 3 ウ ィ ン ド ウ ま たはフ ォ ーム にコ ン ポジッ ト レ ポート を 追加し ま す。 非表示のま ま でも かま いま せん。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 58 第2章 4 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 アプ リ ケーシ ョ ン で、 次の作業を行い ます。 a デー タ を検索 し て、 更新可能なデー タ ウ ィ ン ド ウ コ ン ト ロ ー ルに取 り 込みます。 b GetChild を使用 し て、 コ ン ポジ ッ ト レ ポー ト 内のネ ス テ ィ ッ ド レ ポー ト の参照を取得 し ます。 c ShareData を使用 し て、 更新可能なデー タ ウ ィ ン ド ウ オブジ ェ ク ト と ネ ス テ ィ ッ ド レ ポー ト の間でデー タ を共有 し ます。 d 上記の処理が完了 し た ら 、 コ ン ポジ ッ ト レ ポー ト を印刷 し ま す。 レ ポー ト には、 更新可能なデー タ ウ ィ ン ド ウ オブジ ェ ク ト の 情報が取 り 込ま れます。 デー タ の再検索 デー タ を 検索 し て コ ン ポ ジ ッ ト レ ポ ー ト に取 り 込む た び に、 ネ ス テ ィ ッ ド レ ポー ト のすべて の参照 (ハ ン ド ル) が無効に な り 、 ネ ス テ ィ ッ ド レ ポー ト と のデー タ の共有は解除 さ れ ます。 こ のため、 デー タ を検索 し た場合は、 そのつど GetChild と ShareData を呼び出 し て く だ さ い。 実行段階でのネス テ ィ ッ ド レ ポー ト の 作成および破棄 実行時に、デー タ ウ ィ ン ド ウ オブジ ェ ク ト 内にネ ス テ ィ ッ ド レ ポー ト を動的に作成 し た り 破棄 し た り す る には、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト 内にオブジ ェ ク ト を作成 し た り 破棄 し た り す る 場合 と 同 じ 方法を 使用 し ます。 ネス テ ィ ッ ド レポー ト の作成 ネ ス テ ィ ッ ド レ ポー ト を 作成す る には、 Modify メ ソ ッ ド と 一緒に CREATE キー ワー ド を使用 し ます。 こ の際、 ネ ス テ ィ ッ ド レ ポー ト のプ ロ パテ ィ に適切な値を指定 し ます。 ネス テ ィ ッ ド レポー ト を作成する ための構文の表示 ネ ス テ ィ ッ ド レ ポー ト を 動的に作成す る ための構文 を 簡単に確かめ る には、ネ ス テ ィ ッ ド レ ポー ト が含ま れ る 既存のデー タ ウ ィ ン ド ウ オ ブジ ェ ク ト を エ ク ス ポー ト し ます。 エ ク ス ポー ト フ ァ イ ルに、 必要な 構文が取 り 込ま れ ます。 ラ イ ブ ラ リ ペ イ ン タ で の 構文 の エ ク ス ポ ー ト に つ い て の 詳細 は、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 59 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 ネ ス テ ィ ッ ド レ ポー ト を作成す る 際には、 デー タ を検索 し 直 し て、 レ ポー ト を 表示す る 必要が あ り ま す。 コ ン ポ ジ ッ ト レ ポー ト では、 レ ポー ト 全体のデー タ を検索す る か、 ま たは GetChild を使用 し て、 新 し いネ ス テ ィ ッ ド レ ポー ト の参照を取得 し 、 そのデー タ を直接検索で き ま す。 ほかの レ ポー ト のネ ス テ ィ ッ ド レ ポー ト の場合は、 ベー ス レ ポー ト のデー タ を検索す る 必要があ り ます。 ネス テ ィ ッ ド レポー ト の破棄 ネ ス テ ィ ッ ド レ ポー ト を 破棄す る には、 Modify メ ソ ッ ド と 一緒に DESTROY キーワ ー ド を使用 し ます。 こ れに よ っ て、 ただちにネ ス テ ィ ッ ド レ ポー ト が消去 さ れ ます。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト ま たは レ ポー ト 内の コ ン ト ロ ールの 作成お よ び破棄についての詳細は、 第 3 章の 「デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更」 を参照 し て く だ さ い。 ネ ス テ ィ ッ ド レ ポー ト のプ ロ パテ ィ リ ス ト については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 ク ロ ス タ ブの使い方 特定の種類のデー タ 分析 を 行 う 場合、 ク ロ ス タ ブ提示様式でデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を デザ イ ン し た方が望 ま し い と い う こ と が あ り ます。 アプ リ ケーシ ョ ン で ク ロ ス タ ブ を使用す る ための基本的な 手順は、 ほかの タ イ プのデー タ ウ ィ ン ド ウ の場合 と 同 じ です。 ただ し 、 ク ロ ス タ ブに関す る い く つかの注意事項を把握 し てお く 必要があ り ま す。 ク ロ ス タ ブのデザ イ ン については、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 元にな るデー タ の表示 ユーザが ク ロ ス タ ブ提示様式のデー タ だけでな く 元のデー タ も 参照で き る よ う にす る には、 次のいずれかの作業を行い ます。 • ウ ィ ン ド ウ ま たはフ ォームに、 2 つのデータ ウ ィ ン ド ウ コ ン ト ロ ー ルを配置 し 、 一方のデー タ ウ ィ ン ド ウ コ ン ト ロ ールは ク ロ ス タ ブ に、 も う 一方のデータ ウ ィ ン ド ウ コ ン ト ロ ールは検索し たデータ を 表示するデータ ウ ィ ン ド ウ オブジ ェ ク ト に関連付け ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 60 第2章 • デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 2 つの レ ポー ト を含む コ ン ポジ ッ ト デー タ ウ ィ ン ド ウ オブジ ェ ク ト を作成 し 、 一方の レ ポー ト には元のデー タ 、 も う 一方の レ ポー ト には ク ロ ス タ ブ を表示 し ます。 2 つのデー タ ウ ィ ン ド ウ オブジ ェ ク ト またはレポー ト 間でデー タ を共有し ない こ の 2 つは SQL SELECT デー タ 定義は同 じ であ っ て も 、 結果集合は異 な り ます。 コ ン ポ ジ ッ ト デー タ ウ ィ ン ド ウ につい て の詳細は、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 ユーザに よ る ク ロ ス タ ブの再定義 使用で き る環境 こ の方法は、 PowerBuilder お よ び Web ActiveX で使用で き ます。 CrosstabDialog メ ソ ッ ド を使用す る と 、検索 さ れたデー タ の ど のカ ラ ム を ク ロ ス タ ブのカ ラ ムや行、 値 と 関連付け る か を アプ リ ケーシ ョ ン の 実行時にユーザに再度定義 さ せ る こ と がで き ます。 CrossTabDialog メ ソ ッ ド を使用す る と 、 ク ロ ス タ ブの定義 ダ イ ア ロ グ ボ ッ ク ス が表示 さ れ、 ユーザが ク ロ ス タ ブのカ ラ ムや行、 値に対す る デー タ を定義で き ます。 こ の と き の定義方法は、 デー タ ウ ィ ン ド ウ ペ イ ン タ で使用す る 方法 と 同 じ です。 こ のダ イ ア ロ グ ボ ッ ク ス でユーザ が [OK] を ク リ ッ ク す る と 、 その新 し い指定に基づいて、 ク ロ ス タ ブ が再構築 さ れ ます。 情報 メ ッ セージの表示 実行時に ク ロ ス タ ブ を再構築 し た と き は、CrosstabDialog の呼び出 し の 結果 と し て情報 メ ッ セージ を表示で き ます。 こ の メ ッ セージは、 デー タ ウ ィ ン ド ウ ペ イ ン タ で ク ロ ス タ ブ を構築す る 際に表示 さ れ る 「デー タ を検索 し てい ます」 や 「 ク ロ ス タ ブ を構築 し ています」 な ど の メ ッ セー ジ と 同 じ です。 処理 し な ければな ら ない行の数が非常に多 く 、 ク ロ ス タ ブの再構築に時間がかか る 場合に、 メ ッ セージ を表示 さ せ る と 便利 です。 PowerBuilder では、 ユーザ イ ベン ト を使用 し て、 ク ロ ス タ ブの情報 メ ッ セージ を表示 さ せます。 PowerBuilder デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 61 第2章 v デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 ク ロ ス タ ブの再構築時に情報 メ ッ セージ を表示 さ せるには 1 ク ロ ス タ ブが含ま れる データ ウ ィ ン ド ウ コ ン ト ロ ールにユーザ イ ベ ン ト を 定義し ま す。そのイ ベン ト にイ ベン ト ID pbm_dwnmessagetext を 付けま す。 2 ユーザ イ ベン ト の ス ク リ プ ト で、 Text 引数 (デー タ ウ ィ ン ド ウ ペ イ ン タ での ク ロ ス タ ブの構築時に表示 さ れ る メ ッ セージが格納 さ れ る ) の値を取得 し て、 ユーザに表示 し ます。 Web ActiveX Web ページでは、 デー タ ウ ィ ン ド ウ の onMessageText イ ベン ト を使用 し て、 情報 メ ッ セージ を制御 し ます。 v 例 ク ロ ス タ ブの再構築時に情報 メ ッ セージ を表示 さ せるには 1 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの onMessageText イ ベン ト に対す る コ ー ド を編集 し ます。 2 その イ ベン ト で、 Text 引数の値を取得 し 、 ユーザに表示 し ます。 PowerBuilder 次の例で は、 pbm_dwnmessagetext に関連付 け ら れ た、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールのユーザ イ ベン ト に対す る コ ー ド が、 ク ロ ス タ ブ が含 ま れ る ウ ィ ン ド ウ の ス タ テ ィ ッ ク テ キ ス ト コ ン ト ロ ールに情報 メ ッ セージ を表示 し ます。 st_message.Text = text こ の ス ク リ プ ト を記述 し ておけば、 CrosstabDialog が呼び出 さ れ、 ユー ザが ク ロ ス タ ブ を定義 し 直 し た場合に、 ク ロ ス タ ブが再構築 さ れ る 間、 ス タ テ ィ ッ ク テ キ ス ト コ ン ト ロ ール st_message に情報 メ ッ セージが 動的 に 表示 さ れ ま す。 st_message を リ セ ッ ト す る こ と も で き ま す。 CrosstabDialog を 呼び出 し た次の行で、 Text に空の文字列 を指定 し ま す。 次の例では、 pbm_dwnmessagetext に関連付け ら れたユーザ イ ベン ト の コ ー ド が、 MDI アプ リ ケーシ ョ ン の MicroHelp と し て情報 メ ッ セージ を表示 し ます (w_crosstab は MDI フ レーム ウ ィ ン ド ウ )。 w_crosstab.SetMicroHelp(text) ク ロ ス タ ブが再構築 さ れ る 間、 MDI アプ リ ケーシ ョ ン の MicroHelp に 情報 メ ッ セージが表示 さ れます。 詳細情報 PowerBuilder の ユーザ イ ベ ン ト につい て の詳細は、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 CrosstabDialog メ ソ ッ ド お よ び MessageText イ ベ ン ト につい て の詳細 は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アル を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 62 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 実行段階での ク ロ ス タ ブのプ ロパテ ィ の修正 ほかのデー タ ウ ィ ン ド ウ オブジ ェ ク ト の場合 と 同 じ よ う に、Modify メ ソ ッ ド を使用す る こ と で、 実行時に ク ロ ス タ ブのプ ロ パテ ィ を修正で き ます。 場合に よ っ ては、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールで ク ロ ス タ ブ を動的に再構築 し なければな ら ない と き も あ り ます。 元の ク ロ ス タ ブが静的であ る 場合、 再構築に よ り 動的な ク ロ ス タ ブに変わ り ます。 使用で き る環境 こ の方法は、 すべてのデー タ ウ ィ ン ド ウ 環境で使用で き ます。 再構築の必要がない 変更 次のプ ロ パテ ィ は、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールで ク ロ ス タ ブ を再 構築 し な く て も 変更で き ます。 表 2-11: 再構築せずに変更でき る ク ラ スタ ブ データ ウィ ン ド ウのプロ パティ プ ロパテ ィ Alignment Background Border Brush Color Edit styles (dddw、 ddlb、 checkbox、 edit、 editmask、 radiobutton、 richtext) Font Format Pen Pointer 再構築が必要な変更 オブ ジ ェ ク ト Column、 Compute、 Text Column、 Compute、 Line、 Oval、 Rectangle、 RoundRectangle、 Text Column、 Compute、 Text Line、 Oval、 Rectangle、 RoundRectangle Column、 Compute、 Text Column Column、 Compute、 Text Column、 Compute Line、 Oval、 Rectangle、 RoundRectangle Column、 Compute、 Line、 Oval、 Rectangle、 RoundRectangle、 Text こ れ ら 以外のプ ロ パテ ィ を変更す る と 、 Modify メ ソ ッ ド が呼び出 さ れ た際に、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールは ク ロ ス タ ブの構造を再構築 し ます。 ク ロ ス タ ブの再構築が 1 回だけで済む よ う に、 必要なすべて の式を 1 つの Modify 呼び出 し に ま と めてお く 必要があ り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 63 第2章 プ ロパテ ィ のデ フ ォル ト値 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 既存のカ ラ ム を基に し た計算の場合、 デフ ォ ル ト ではデー タ ウ ィ ン ド ウ コ ン ト ロ ールは、 既存のカ ラ ムのプ ロ パテ ィ を使用 し ます。 新 し い カ ラ ム の場合、 プ ロ パテ ィ (フ ォ ン ト 、 色な ど) には、 既存の ク ロ ス タ ブの最初のカ ラ ム のプ ロ パテ ィ がデフ ォ ル ト 設定 さ れ ます。 ヘ ッ ダ のテ キ ス ト のプ ロ パテ ィ には、 既存の ク ロ ス タ ブの先頭ヘ ッ ダ行にあ る 最初の テ キ ス ト コ ン ト ロ ールのプ ロ パテ ィ がデ フ ォ ル ト 設定 さ れ ます。 Modify メ ソ ッ ド についての詳細は、 第 3 章の 「デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更」 を 参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト のプ ロ パテ ィ についての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 HTML の生成 データ ウ ィ ン ド ウ オブジェ ク ト のデータ を 使用し て、 HTML (HyperText Markup Language) 構文を 作成でき ま す。 作成し た HTML は、 Web ブラ ウ ザに表示でき ま す。 Web デー タ ウ ィ ン ド ウ こ の節では、Web デー タ ウ ィ ン ド ウ については説明 し ません。Web デー タ ウ ィ ン ド ウ は、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ を使用 し ま す (142 ページの 「Web デー タ ウ ィ ン ド ウ のプ ロ パテ ィ 」 お よ び 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス 』 マニ ュ アルを参照 し て く だ さ い)。 使用可能な方法 デー タ ウ ィ ン ド ウ オブジ ェ ク ト ま たはデー タ ス ト ア か ら HTML を生 成す る には、 い く つかの方法があ り ます。 デー タ ウ ィ ン ド ウ ペ イ ン タ と 、 デー タ ベー ス ペ イ ン タ の出力ビ ュ ーではど ち ら で も 、 検索 し たデー タ を HTML 形式で保存 で き ま す。 デー タ ウ ィ ン ド ウ ペ イ ン タ で そ の 保存 を 行 う に は、 メ ニ ュ ーか ら [フ ァ イ ル|名前を付けて行を保存] を選択 し ます。 デー タ ベース ペ イ ン タ では、 出力ビ ュ ーを開 き 、 メ ニ ュ ーか ら [行|名前 を付け て行を保存] を選択 し ま す。 ど ち ら のペ イ ン タ で も 、 フ ァ イ ル 形式 と し て 「HTML Table」 を指定 し ます。 ペ イ ン タ を使用 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 64 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 Data.HTMLTable プ ロ パテ ィ か ら 、 デー タ ウ ィ ン ド ウ の提示様式やデー タ の HTML 文字列を取得 し ます。 こ の 文字列を変数内に保存 し 、 文字列処理操作に よ っ て HTML を修正す る こ と がで き ます。 PowerBuilder では、 FileOpen 関数 と FileWrite 関数を 使用 し て、 HTML を フ ァ イ ルに保存す る こ と も で き ます。 ア プ リ ケーシ ョ ン コ ー ド を使用 HTMLTable プ ロ パ テ ィ に は、 Table HTML 要 素 に 関 連 付 け ら れ る HTML 属性や ス タ イ ル シー ト を 制御す る ために設定で き る 固有のプ ロ パテ ィ があ り ます。 PowerBuilder のみ PowerBuilder では、さ ら に以下の 2 つの方法 も 使用 で き ます。 提示様式の選択 • SaveAs メ ソ ッ ド を呼び出し て、データ ウ ィ ン ド ウ の内容を直接デ ィ ス ク 上の フ ァ イ ルに保存す る。 デー タ を HTML 形式で保存す る に は、 SaveAs を呼び出す際にフ ァ イ ルの種類 と し て HTMLTable を指 定する必要があ る • GenerateHTMLForm メ ソ ッ ド を呼び出 し て、フ リ ーフ ォ ーム ま たは タ ブ ラ 提示様式を使用 し てい る デー タ ウ ィ ン ド ウ オブジ ェ ク ト が 含ま れ る デー タ ウ ィ ン ド ウ コ ン ト ロ ール ま たはデー タ ス ト ア内の デー タ か ら HTML フ ォ ーム を作成す る デー タ ウ ィ ン ド ウ の提示様式に よ っ ては、 HTML に変換す る 方が好ま し い場合 も あ り ます。 以下の提示様式は、 優れた結果を生成 し ます。 タブラ グループ ツ リ ービ ュ ー フ リ ーフ ォ ーム ク ロ ス タブ グリッド コ ン ポジ ッ ト 、 グ ラ フ、 リ ッ チテ キ ス ト 、 お よ び OLE 2.0 提示様式の 場合は、 デー タ だけが HTML 化 さ れ、 提示様式は反映 さ れ ません。 コ ン ト ロ ールが重複 し てい る デー タ ウ ィ ン ド ウ では、 期待どお り の結果 が得 ら れない場合 も あ り ます。 ネ ス テ ィ ッ ド レ ポー ト は無視 さ れ、 生 成 さ れ る HTML には含ま れ ません。 例 次の例に、 デー タ ウ ィ ン ド ウ で生成 さ れた HTML を アプ リ ケーシ ョ ン で ど の よ う に使用す る か を示 し ます。 こ の コ ー ド では、 HTMLTable プ ロ パテ ィ を参照 し て、 デー タ ウ ィ ン ド ウ か ら HTML を取 り 込みます。 以下に各環境におけ る コ ー ド 例を示 し ます。 PowerBuilder では、 Describe メ ソ ッ ド ま たはプ ロ パテ ィ 式を使用 で き ます。 Web ActiveX の場合は、 Describe を使用 し なければな り ませ ん。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 65 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 PowerBuilder ls_htmlstring = dw_1.Object.DataWindow.Data.HTMLTable Web ActiveX str_html = dw_1.Describe("DataWindow.Data.HTMLTable"); 後で示す例は、 PowerBuilder に実装 さ れてい ます。 下の ウ ィ ン ド ウ には、 表形式のデー タ ウ ィ ン ド ウ オブジ ェ ク ト に顧客 デー タ が表示 さ れてい ま す。 ユーザは [参照] ボ タ ン を押す と 、 こ の デー タ ウ ィ ン ド ウ オブジ ェ ク ト の内容を HTML 形式に変換 し て、 Web ブ ラ ウ ザに HTML 出力を表示す る こ と がで き ま す。 ま た、 [ブ ラ ウ ザ の選択] ボ タ ン を 押す と 、 ど の Web ブ ラ ウ ザ を 使用す る か を ア プ リ ケーシ ョ ンに指定で き ます。 [ブ ラ ウ ザの選択] ボ タ ンの ス ク リ プ ト では、 ユーザが Web ブ ラ ウ ザに対す る 実行フ ァ イ ルを選択す る た め の ダ イ ア ロ グ ボ ッ ク ス を 表示 し ま す。 実行 フ ァ イ ル の パ ス は、 is_Browser ( ウ ィ ン ド ウ に定義 さ れてい る イ ン ス タ ン ス変数) に格納 さ れてい ます。 [ブ ラ ウザの選択] ボ タ ンのス ク リ プ ト String ls_BrowserName Integer li_Result // ブ ラ ウザを選択する ためのダ イ ア ログボ ッ ク ス を開き ます。 li_Result = GetFileOpenName(" ブ ラ ウザの選択 ", & is_Browser, ls_BrowserName, & デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 66 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 "exe", " 実行フ ァ イル (*.EXE),*.EXE") IF li_Result = -1 THEN MessageBox(" ブ ラ ウザを選択 ", " ブ ラ ウザが選択 さ れてい ません ") END IF [参照] ボ タ ンの ス ク リ プ ト では、 Data.HTMLTable プ ロ パテ ィ を文字列変数に割 り 当て る こ と で、 デー タ ウ ィ ン ド ウ 内 の デー タ か ら HTML 文字列 を 作成 し ま す。 こ う し て HTML 文字列 を 構築 し た ら 、 その HTML 文字列にヘ ッ ダ を 追加 し ま す。 その後、 こ の HTML を フ ァ イ ルに保存 し 、 Web ブ ラ ウ ザを実行 し て、 出力を表示 し ます。 [参照] ボ タ ンのス ク リ プ ト String ls_HTML, ls_FileName, ls_BrowserPath Integer li_FileNumber, li_Bytes, Integer li_RunResult, li_Result // HTML を生成 し ます。 ls_HTML = dw_1.Object.DataWindow.Data.HTMLTable IF IsNull(ls_HTML) Or Len(ls_HTML) <= 1 THEN MessageBox (" エ ラ ー ", "HTML 生成エ ラ ーが発生 し ま し た !") Return ELSE ls_HTML ="<H1> デー タ ウ ィ ン ド ウから 生成 さ れた HTML"& + "</H1><P>" + ls_HTML END IF // フ ァ イルを作成 し ます。 ls_FileName = "custlist.htm" li_FileNumber = FileOpen(ls_FileName, StreamMode!, & Write!, LockReadWrite!, Replace! ) IF (li_FileNumber >= 0) THEN li_Bytes = FileWrite(li_FileNumber, ls_HTML) FileClose(li_FileNumber) IF li_Bytes = Len(ls_HTML) THEN // HTML フ ァ イルで ブ ラ ウザを実行 し ます。 IF Not FileExists(is_Browser) THEN cb_selbrowser.Trigger Event Clicked() IF NOT FileExists(is_Browser) THEN MessageBox(" ブ ラ ウザの選択 ", & " ブ ラ ウザが見つか り ません ") RETURN END IF END IF デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 67 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 li_RunResult = Run(is_Browser + " file:///"+& ls_FileName) IF li_RunResult = -1 THEN MessageBox(" エ ラ ー ", " ブ ラ ウザの実行時にエ ラ ー発生 !") END IF ELSE MessageBox (" 書き込みエ ラ ー ", & " フ ァ イルが正常に書き込めませんで し た ") END IF ELSE MessageBox (" フ ァ イル エ ラ ー ", " フ ァ イルがオープ ン で き ません ") END IF 表示の制御 テーブル表示およ びス タ イ ル シート の使用は、HTMLTable.GenerateCSS プロ パテ ィ を 介し て 制御し ま す。 HTMLTable.GenerateCSS プロ パテ ィ は、 HTMLTable プ ロ パ テ ィ の HTML の 下位互換性を 制御し ま す。 HTMLTable.GenerateCSS プロ パティ が FALSE であ る と 、 HTMLTable プ ロ パ テ ィ で 書 式 (ス タ イ ル シ ー ト の 参 照) は 参 照 さ れ ま せ ん。 HTMLTable.GenerateCSS プロ パテ ィ が TRUE であ る と 、 HTML.StyleSheet で指定さ れたカ ス ケ ード ス タ イ ル シ ート を 参照する 要素が HTMLTable プロ パティ に取り 込ま れま す。 次の画面は、 カ ス タ ム の表示機能 を 使用 し て ブ ラ ウ ザに表示 さ れ た HTML テーブルを示 し た も のです。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 68 第2章 HTMLTable.Generate CSS が TRUE の場合 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 HTMLTable.GenerateCSS プ ロ パテ ィ が TRUE であ る と 、 HTMLTable プ ロ パテ ィ の HTMLTable 要素は さ ら に別のプ ロ パテ ィ を使用 し て、 テー ブル表示を カ ス タ マ イ ズ し ます。 た と えば、 次のプ ロ パテ ィ を指定 し た と し ます。 HTMLTable.NoWrap=Yes HTMLTable.Border=5 HTMLTable.Width=5 HTMLTable.CellPadding=2 HTMLTable.CellSpacing=2 Describe、 Modify、 および ド ッ ト (.) 表記 PowerScript の Modify お よ び Describe メ ソ ッ ド を使用す る か、 ま たは ド ッ ト (.) 表記を使用す る こ と で、 こ れ ら のプ ロ パテ ィ にア ク セ ス で き ます。 HTMLTable プ ロ パテ ィ の HTML 構文には、 ス タ イ ル シー ト を使用で き る よ う に フ ォーマ ッ テ ィ ン グ情報 と ク ラ ス参照が取 り 込まれます。 <table cellspacing=2 cellpadding=2 border=5 width=5> <tr> <td CLASS=0 ALIGN=center> 従業員 ID <td CLASS=0 ALIGN=center> 姓 <td CLASS=0 ALIGN=center> 名 <tr> <td CLASS=6 ALIGN=right>102 <td CLASS=7> 鈴木 <td CLASS=7> 芳樹 </table> HTMLTable.Generate CSS が FALSE の場 合 HTMLTable.GenerateCSS プ ロ パテ ィ が FALSE であ る と 、 デー タ ウ ィ ン ド ウ が Table 要素を作成す る 際に HTMLTable プ ロ パテ ィ は使用 さ れ ま せん。 た と え ば、 GenerateCSS が FALSE の場合、 HTMLTable プ ロ パ テ ィ の HTML 構文は次の よ う にな り ます。 <table> <tr> <th ALIGN=center> 従業員 ID <th ALIGN=center> 姓 <th ALIGN=center> 名 <tr> <td ALIGN=right>102 <td> 鈴木 <td> 芳樹 </table> デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 69 第2章 HTMLTable と ス タ イ ル シー ト のマージ デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 HTMLTable プ ロ パ テ ィ に含 ま れ る HTML 構文は不完全 な も の です。 <HTML> 要素 と </HTML> 要素で囲まれていない上に、 ス タ イ ル シー ト が含ま れてい ません。アプ リ ケーシ ョ ン内に ス ク リ プ ト を記述 し て、 完全な HTML ページ を表す文字列を構築で き ます。 次の例では、 デー タ ウ ィ ン ド ウ プ ロ パテ ィ を設定 し 、 HTML 文字列を作成 し て、 それを ブ ラ ウ ザに戻 し ます。 PowerBuilder の例 String ls_html ds_1.Modify & ("datawindow.HTMLTable.GenerateCSS='yes'") ds_1.Modify("datawindow.HTMLTable.NoWrap='yes'") ds_1.Modify("datawindow.HTMLTable.width=5") ds_1.Modify("datawindow.HTMLTable.border=5") ds_1.Modify("datawindow.HTMLTable.CellSpacing=2") ds_1.Modify("datawindow.HTMLTable.CellPadding=2") ls_html = "<HTML>" ls_html += & ds_1.Object.datawindow.HTMLTable.StyleSheet ls_html += "<BODY>" ls_html += "<H1> ス タ イルシー ト 付きのデー タ ウ ィ ン ド ウ </H1>" ls_html += ds_1.Object.DataWindow.data.HTMLTable ls_html += "</BODY>" ls_html += "</HTML>" return ls_html こ の方法を使用す る と 、 HTML ページの内容を制御で き ます。 HTML を動的に作成す る 場合、 HTMLTable! を引数に SaveAs メ ソ ッ ド を呼び 出す方法の代替方法 と し て使用で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 70 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 SaveAs メ ソ ッ ド の呼び出 し 使用で き る環境 SaveAs メ ソ ッ ド は、 Web コ ン ト ロ ール ActiveX では使用で き ません。 HTML ページ を動的に作成す る 代替方法 と し て、 HTMLTable! カ タ ロ グ デー タ 型 と 一緒に SaveAs メ ソ ッ ド を呼び出す こ と がで き ます。 ds_1.SaveAs & ("C:¥TEMP¥HTMLTemp.htm", HTMLTable!, TRUE) こ れに よ っ て、 ス タ イ ル シー ト や適切な要素か ら 構成 さ れ る HTML フ ァ イ ルが作成 さ れます。 <STYLE TYPE="text/css"> <!-.2{COLOR:#000000;BACKGROUND:#ffffff;FONTSTYLE:normal;FONT-WEIGHT:normal;FONT:9pt "Arial", sans-serif;TEXT-DECORATION:none} .3{COLOR:#000000;BACKGROUND:#ffffff;FONTSTYLE:normal;FONT-WEIGHT:normal;FONT:8pt "MS Sans Serif", sans-serif;TEXT-DECORATION:none} .3{COLOR:#000000;BACKGROUND:#ffffff;FONTSTYLE:normal;FONT-WEIGHT:normal;FONT:8pt "MS Sans Serif", sans-serif;TEXT-DECORATION:none} --> </STYLE> <TABLE nowrap cellspacing=2 cellpadding=2 border=5 width=5> <tr> <td CLASS=2 ALIGN=right> 従業員 ID : <td CLASS=3 ALIGN=right>501 <tr> <td CLASS=2 ALIGN=right> 姓 : <td CLASS=3> 鈴木 <tr> <td CLASS=2 ALIGN=right> 名 : <td CLASS=3> 芳樹 <tr> <td CLASS=2 ALIGN=right> 勤務状況 : <td CLASS=3> 就業中 </TABLE> デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 71 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の HTML フ ォ ーム と し ての表示 GenerateHTMLForm メ ソ ッ ド は、 デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト の HTML フ ォ ームの構文を生成 し ます。 指定 さ れてい る 数の行に指定 さ れてい る 数のカ ラ ム を表示す る HTML フ ォ ーム を作成で き ます。 以下 の点に注意 し て く だ さ い。 提示様式 • HTML フ ォ ーム の構文を作成す る には、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール ま たはデー タ ス ト アに対 し て GenerateHTMLForm メ ソ ッ ド を呼び出す • GenerateHTMLForm メ ソ ッ ド で HTML フ ォ ームの構文が作成 さ れ る のは、 詳細区域のみ • 埋め込みネ ス テ ィ ッ ド デー タ ウ ィ ン ド ウ は無視 さ れ、 生成 さ れ る HTML には含まれない GenerateHTMLForm メ ソ ッ ド では、 すべての提示様式に対応す る 構文 を生成で き ますが、HTML に適 し た フ ォ ーム を作成で き る のは、フ リ ー フ ォ ーム様式 と タ ブ ラ 様式だけです。 次の HTML ページは、 GenerateHTMLForm メ ソ ッ ド に よ っ て生成 さ れ た構文を使用 し て、 フ リ ーフ ォーム提示様式のデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を フ ォームに変換 し た例です。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 72 第2章 編集様式の変換 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 GenerateHTMLForm メ ソ ッ ド を使用す る と 、 カ ラ ム の編集様式が適切 な HTML 要素に変換 さ れます。 表 2-12: カ ラ ムの編集様式に対 し て生成 さ れる HTML 要素 カ ラ ムの編集様式 CheckBox DropDownDataWindow DropDownListBox Edit RadioButton 構文の生成 HTML 要素 TYPE=CHECKBOX を指定す る 入力要素 1 つの Option 要素を持つ選択要素 DropDownListBox 内の項目ご と に 1 つの Option 要 素を持つ選択要素 TYPE=TEXT を指定す る 入力要素 TYPE=RADIO を指定する 入力要素 HTML フ ォ ーム の構文を生成す る には、 GenerateHTMLForm メ ソ ッ ド を呼び出 し ます。 instancename.GenerateHTMLForm ( syntax, style, action { , startrow, endrow, startcolumn, endcolumn { , buffer } } ) こ の メ ソ ッ ド では、 Form 要素の構文が syntax 引数に、 HTML ス タ イ ル シー ト が style 引数に取 り 込まれます (いずれ も 参照渡 し )。 フ リ ー フ ォ ーム様式のデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト 内のス タ テ ィ ッ ク テキス ト 生成 さ れた HTML フ ォ ー ム の構文には、 詳細区域内のすべて の ス タ テ ィ ッ ク テ キ ス ト が渡 さ れ ます。 startcolumn 引数 と endcolumn 引数を 使用 し て、 変換す る カ ラ ム の数を制限す る 場合は、 詳細区域か ら 除外 す る カ ラ ムのヘ ッ ダ を削除 し て く だ さ い。 以下に GenerateHTMLForm メ ソ ッ ド の例を示 し ます。 String ls_syntax, ls_style, ls_action String ls_html Integer li_return ls_action = & "/cgibin/pbcgi60.exe/myapp/uo_webtest/f_emplist" li_return = ds_1.GenerateHTMLForm & (ls_syntax, ls_style, ls_action) IF li_return = -1 THEN MessageBox("HTML", "GenerateHTMLForm エ ラ ー ") ELSE // of_MakeHTMLPage はオブ ジ ェ ク ト の メ ソ ッ ド です。 // 次のセ ク シ ョ ン で説明 し ます。 ls_html = this.of_MakeHTMLPage & デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 73 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 (ls_syntax, ls_style) END IF GenerateHTMLForm メ ソ ッ ド を呼び出す と 、ls_syntax 変数に Form 要素 が取 り 込まれ ます。 以下に例を示 し ます。 <FORM ACTION= "/cgibin/pbcgi60.exe/myapp/uo_webtest/f_emplist" METHOD=POST> <P> <P><FONT CLASS=2> 従業員 ID :</FONT> <INPUT TYPE=TEXT NAME="emp_id_1" VALUE="501"> <P><FONT CLASS=2> 姓 :</FONT> <INPUT TYPE=TEXT NAME="emp_lname_1" MAXLENGTH=20 VALUE=" 鈴木 "> <P><FONT CLASS=2> 名 :</FONT> <INPUT TYPE=TEXT NAME="emp_fname_1" MAXLENGTH=20 VALUE=" 芳樹 "> <P><FONT CLASS=2> 勤務状況 :</FONT> <INPUT TYPE="RADIO" NAME="status_1" CHECKED CLASS=5 ><FONT CLASS=5 > 就業中 <P> <INPUT TYPE="RADIO" NAME="status_1" CLASS=5 > <FONT CLASS=5 > 休暇中 <P> <INPUT TYPE="RADIO" NAME="status_1" CLASS=5 > <FONT CLASS=5 > 退職 <P> <P> <BR> <INPUT TYPE=SUBMIT NAME=SAMPLE VALUE="OK"> </FORM> 前の例では、 ls_stylesheet 変数に Style 要素が取 り 込ま れ ます。 以下に その例を示 し ます。 <STYLE TYPE="text/css"> <!-.2{COLOR:#000000;BACKGROUND:#ffffff;FONTSTYLE:normal;FONT-WEIGHT:normal;FONT:9pt "Arial", sans-serif;TEXT-DECORATION:none} デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 74 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 0.3{COLOR:#000000;BACKGROUND:#ffffff;FONTSTYLE:normal;FONT-WEIGHT:normal;FONT:8pt "MS Sans Serif", sans-serif;TEXT-DECORATION:none} .5{COLOR:#000000;BACKGROUND:#ffffff;FONTSTYLE:normal;FONT-WEIGHT:normal;FONT:8pt "MS Sans Serif", sans-serif;TEXT-DECORATION:none} --> </STYLE> 一意の要素名 GenerateHTMLForm メ ソ ッ ド を呼び出す と 、 フ ォ ーム内のすべての要 素に対 し て、 _nextsequentialnumber 接尾辞が付け ら れ、 一意の要素名が 作成 さ れ ま す。 1 つの フ ォ ーム に複数の行が表示 さ れてい る 場合 も 同 じ です。 HTML ページの作成 GenerateHTMLForm メ ソ ッ ド で返 さ れた構文やス タ イ ル シー ト を使用 す る には、 それを HTML ページにマージす る ための ス ク リ プ ト を記述 し なければな り ません。 完全な HTML ページには、 ス タ イ ル シー ト や 構文を取 り 込むために、 <HTML> 要素や <BODY> 要素が必要です。 こ のためには、GenerateHTMLForm メ ソ ッ ド で生成 さ れた Form 要素 と Style 要素を引数 と し て取 り 込み、完全な HTML ページ を返すグ ロ ーバ ル関数 ま たはオブ ジ ェ ク ト 関数 を 作成 し ま す。 こ の よ う な関数には、 次の よ う な コ ー ド が含まれます。 // 関数名 :of_MakeHTMLPage // 引数 :String as_syntax, String as_style // 戻 り 値 :String //*********************************** String ls_html IF as_syntax = "" THEN RETURN "" END IF IF as_style = "" THEN RETURN "" END IF ls_html ls_html ls_html ls_html ls_html デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド = "<HTML>" += as_style += "<BODY>" += "<H1> 従業員情報 </H1>" += as_syntax 75 第2章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使い方 ls_html += "</BODY></HTML>" RETURN ls_html デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 76 第 3 章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の 動的変更 こ の章について こ の章では、 実行中にデー タ ウ ィ ン ド ウ オブジ ェ ク ト を修正お よ び作成す る 方法について説明 し ます。 内容 項目 動的なデー タ ウ ィ ン ド ウ の処理について デー タ ウ ィ ン ド ウ オブジ ェ ク ト の修正 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の作成 ユーザへの ク エ リ 機能の提供 ヘルプ ボ タ ンの使用 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の再利用 ページ 77 78 80 83 88 89 動的なデー タ ウ ィ ン ド ウの処理について 基本事項 デー タ ウ ィ ン ド ウ オブジ ェ ク ト と そのエ ン テ ィ テ ィ (カ ラ ム、 テ キ ス ト 、 グ ラ フ、 ピ ク チ ャ な ど) には、 それぞれのプ ロ パテ ィ セ ッ ト が割 り 当て ら れてい ます。 デー タ ウ ィ ン ド ウ メ ソ ッ ド ま たはプ ロ パテ ィ 式を使用 し て、 こ れ ら のプ ロ パテ ィ の値を実行時に参照 し た り 変更 し た り で き ます。 ま た、 実行時にデー タ ウ ィ ン ド ウ オ ブジ ェ ク ト を作成す る こ と も で き ます。 実行時に修正 ま たは作成す る デー タ ウ ィ ン ド ウ オブジ ェ ク ト は、 動的デー タ ウ ィ ン ド ウ オブジ ェ ク ト と 呼ばれます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 77 第3章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更 プ ロパテ ィ 式について プ ロ パテ ィ 式は、 PowerBuilder、 Web デー タ ウ ィ ン ド ウ で使用で き ま す。 プ ロ パテ ィ 式に ド ッ ト (.) 表記を使用 し て、 プ ロ パテ ィ を直接ア ド レ ス指定 し ます。 プ ロ パテ ィ 式は、 Web デー タ ウ ィ ン ド ウ のサーバ コ ン ポーネ ン ト で評価 さ れ ます。 Web ActiveX ではプ ロ パテ ィ 式を使用で き ません。 かわ り に、 Describe お よ び Modify メ ソ ッ ド を使用 し ます。 機能 こ の動的機能 を 使用す る と 、 ユーザ側では、 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の外観 (テ キ ス ト の色、 フ ォ ン ト な ど) を変更 し た り 、 デー タ ソ ース を再定義 し て ア ド ホ ッ ク ク エ リ を作成 し た り で き ます。動的 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の作成後、 ユーザ側で も 希望の外観 と デー タ の表示結果が得 ら れた場合は、 その内容を レ ポー ト と し て印刷 で き ます。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の修正 以下のいずれかの方法を使用す る と 、 実行時にデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の外観 と 動作を修正で き ます。 プ ロパテ ィ 値の変更 • プ ロ パテ ィ の値を変更す る • デー タ ウ ィ ン ド ウ オブジ ェ ク ト に対 し て コ ン ト ロ ールの追加、 削 除を行 う Modify メ ソ ッ ド ま たはプ ロ パテ ィ 式を使用す る と 、 プ ロ パテ ィ 値を設 定で き ます。 こ の操作を行 う と 、 開発時にデー タ ウ ィ ン ド ウ ペ イ ン タ で指定 し たオ リ ジナルの設定を変更で き ます。 プ ロ パテ ィ を変更す る 前に、 現行の値を変数に保存 し てお く と 、 後で 元の値に戻す こ と がで き ます。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト ま たは デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト 内の要素の現行のプ ロ パテ ィ に関す る 情報を取得す る には、 Describe メ ソ ッ ド ま たはプ ロ パテ ィ 式を使用 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 78 第3章 プ ロパテ ィ 値での式の 使い方 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更 デー タ ウ ィ ン ド ウ の一部のプ ロ パテ ィ には、 値を直接割 り 当て る ので はな く 、 実行時にデー タ ウ ィ ン ド ウ で評価 さ れ る 式に基づいて値を割 り 当て る こ と がで き ます。 た と えば、 次の ス テー ト メ ン ト では、 給与 が 120 万円未満の場合は赤字で表示 さ れ、 それ以外の場合は黒字で表 示 さ れ ます。 dw_1.Modify("salary.Color & = '0 ~t if(salary <1200000,255,0)' ") 詳細情報 デー タ ウ ィ ン ド ウ ペ イ ン タ で指定す る 式 と コ ー ド 内の式では、 構文が 異な り ます。 正 し い構文お よ び式の割 り 当てが可能なプ ロ パテ ィ につ いては、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アル を参照 し て く だ さ い。 プ ロ パテ ィ 式 と デー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ 、 お よ び Describe メ ソ ッ ド と Modify メ ソ ッ ド の使用例についての詳細は、『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 データ ウィ ン ド ウ オブ ジェ ク ト に対する コ ン ト ロ ールの追加と 削除 Modify メ ソ ッ ド を使用す る と 、 次の作業を行 う こ と も で き ます。 • デー タ ウ ィ ン ド ウ オブジ ェ ク ト に新 し い コ ン ト ロ ールを作成す る デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト にデー タ ウ ィ ン ド ウ コ ン ト ロ ー ル (テ キ ス ト 、 ビ ッ ト マ ッ プ、 グ ラ フ ィ ッ ク コ ン ト ロ ールな ど) を動的に追加で き ます。 正 し い Create 構文を理解す る には、 81 ページの 「デー タ ウ ィ ン ド ウ オブジ ェ ク ト の構文の指定」 を参照 し て く だ さ い。 • デー タ ウ ィ ン ド ウ オブジ ェ ク ト 内の コ ン ト ロ ールを破棄す る 不要にな っ た コ ン ト ロ ールを動的に削除で き ます。 デー タ ウ ィ ン ド ウ構文 記述用の PowerBuiler ツール PowerBuilder には、 DWSyntax と い う ツールがあ り ます。 こ の ツールを使用す る と 、 プ ロ パテ ィ 式、 Describe、 Modify、 お よ び SyntaxFromSQL 文の構文 を 正 し く 簡単に記述で き ま す。 デー タ ウ ィ ン ド ウ の目的のプ ロ パテ ィ を、ボ タ ン を ク リ ッ ク し て指定す る と 、 DWSyntax が自動的に適切な構文を作成す る ので、 その構文を ア プ リ ケーシ ョ ン コ ー ド 内に コ ピー し て貼 り 付け る こ と がで き ます。 PowerBuilder のみ DWSyntax に ア ク セ ス す る に は、 [フ ァ イ ル|新規作成] を 選択 し 、 [ツール] タ ブ を選択 し ます。 PowerBuilder での デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト のプ ロパ テ ィ の表示 PowerBuilder ブ ラ ウ ザを使用す る と 、デー タ ウ ィ ン ド ウ のプ ロ パテ ィ の一覧を表示で き ます。 [デー タ ウ ィ ン ド ウ ] タ ブの 左側のペ イ ン で、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を選択 し 、 右側のペ イ ン でプ ロ パテ ィ を選択 し ます。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の コ ン ト ロ ールのプ ロ パテ ィ を表示す る には、 目的のデー タ ウ ィ ン ド ウ オ ブジ ェ ク ト 名を ダブル ク リ ッ ク し 、 コ ン ト ロ ールを選択 し ます。 PowerBuilder のみ デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 79 第3章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の作成 こ の節では、 アプ リ ケーシ ョ ン で Create メ ソ ッ ド を呼び出 し て、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を作成す る 方法について説明 し ます。 デー タ ウ ィ ン ド ウ ペ イ ン タ こ こ で説明す る 、 構文か ら デー タ ウ ィ ン ド ウ を作成す る 方法は、 デー タ ウ ィ ン ド ウ ペ イ ン タ で必要な作業 を 行 う こ と がで き な い場合に限 り 使用 し て く だ さ い。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を 作成す る に は、 デー タ ウ ィ ン ド ウ ペ イ ン タ を使 う のが一般的な方法です。 デー タ ウ ィ ン ド ウ ペ イ ン タ でデー タ ウ ィ ン ド ウ オブジ ェ ク ト を作成 す る 方法については、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ ア ルを参照 し て く だ さ い。 実行時 に 動的 に デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト を 作成す る に は、 Create メ ソ ッ ド を使用 し ます。Create メ ソ ッ ド は、指定 し た ソ ース コ ー ド を基にデー タ ウ ィ ン ド ウ オブジ ェ ク ト を生成 し ます。 指定 し たデー タ ウ ィ ン ド ウ コ ン ト ロ ール内に あ る デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト は、 新 し いデー タ ウ ィ ン ド ウ オブジ ェ ク ト で置 き 換え ら れ ます。 ト ラ ンザク シ ョ ン オブ ジ ェ ク ト の リ セ ッ ト Create メ ソ ッ ド を使用す る と 、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール と ト ラ ンザ ク シ ョ ン の間の関連付けが破棄 さ れ ます。そのため、Create メ ソ ッ ド を呼び出 し た後は、SetTransObject ま たは SetTrans メ ソ ッ ド を呼び出 し て、デー タ ウ ィ ン ド ウ コ ン ト ロ ールの ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を リ セ ッ ト す る 必要があ り ます。 SetTransObject ま たは SetTrans メ ソ ッ ド を使わずに接続 し てい る 場合は、 Create メ ソ ッ ド を呼び出 し た後に、 こ れ ら の メ ソ ッ ド を呼び出す必要はあ り ません。 Web ActiveX デー タ ウ ィ ン ド ウ コ ン ト ロ ール と ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト の 関連付け方法については、 第 2 章の 「デー タ ウ ィ ン ド ウ オブジ ェ ク ト の使い方」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 80 第3章 データ ウィ ン ド ウ オブ ジェ ク ト の構文の指定 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更 Create メ ソ ッ ド に必要な構文を指定 ま たは生成す る には、 い く つかの 方法があ り ます。 ただ し 、 方法に よ っ ては、 一部の環境では使用で き ない場合 も あ り ます。 PowerBuilder では、 以下の方法を使用で き ます。 • ト ラ ンザ ク シ ョ ン オブジ ェ ク ト の SyntaxFromSQL メ ソ ッ ド を使 用す る • PowerScript の LibraryExport 関数を使用す る 以下の方法は、 すべての環境で使用で き ます。 • デー タ ウ ィ ン ド ウ オブジ ェ ク ト の DataWindow.Syntax プ ロ パテ ィ を使用す る • 構文を自分で作成す る ほ と ん ど の動的デー タ ウ ィ ン ド ウ オブジ ェ ク ト では、SyntaxFromSQL を使用し て構文を作成し ます。SyntaxFromSQL を使用する と 、 SELECT 文 と 提示様式を指定する だけで構文を作成で き ます。 SyntaxFromSQL の使い方 PowerBuilder では、 SyntaxFromSQL は ト ラ ンザ ク シ ョ ン オブジ ェ ク ト の メ ソ ッ ド です。 そのため、 こ の メ ソ ッ ド を呼び出す場合は、 ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト が接続状態でなければな り ません。 ネ イ テ ィ ブ ド ラ イバの USERID の設定 PowerBuilder では、 ネ イ テ ィ ブ ド ラ イ バを使用す る 場合は、 所有者の 名前に基づいて テーブル名が自動的に修飾 さ れ ます。 アプ リ ケーシ ョ ン で も 同 じ 結果を得 る には、 テーブル名が正 し く 修飾 さ れ、 拡張属性 を検索で き る よ う に、 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト に USERID プ ロ パテ ィ を設定 し なければな り ません。 SyntaxFromSQL には、 以下の 3 つの引数を必ず指定 し ます。 • デー タ ウ ィ ン ド ウ オブジ ェ ク ト の SELECT 文を格納す る 文字列 • 提示様式な ど の設定を識別す る 文字列 • エ ラ ーが発生 し た場合に、 エ ラ ー メ ッ セージ を取 り 込む文字列の 名前 SyntaxFromSQL は、 指定 さ れた SELECT 文を使用 し て構築 さ れたデー タ ウ ィ ン ド ウ オブジ ェ ク ト の完全な構文を返 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 81 第3章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更 Adaptive Server Enterprise での SyntaxFromSQL の使い方 DBMS と し て Adaptive Server Enterprise を使用する環境で SyntaxFromSQL を呼び出す場合、 PowerBuilder では、 テーブルが一意な イ ンデ ッ ク ス を 介 し て 更 新 可 能 で あ る か ど う か を 判 断 し な け れ ば な り ま せ ん。 PowerBuilder で こ の よ う な 処理が可能 と な る のは、 次に示す よ う に、 SyntaxFromSQL を呼び出す前に AutoCommit を TRUE に設定し てい る場 合のみです。 sqlca.autocommit=TRUE sqlca.syntaxfromsql (sqlstmt, presentation, err) sqlca.autocommit=FALSE PowerScript の LibraryExport 関数 を 使用す る と 、 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の構文 を エ ク ス ポー ト し て、 その構文を文字列に格納で き ます。 PowerBuilder での LibraryExport の使い方 エ ク ス ポー ト し た構文 (ま たはエ ク ス ポー ト 後の構文に修正を加え た 構文) を Create メ ソ ッ ド で使用 し て、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を作成で き ます。 DataWindow.Syntax プ ロパテ ィ の使い方 既存のデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の ソ ース コ ー ド を取 り 出 し 、 モデル と し て使用 し た り 、 構文 に変更を加え た り で き ます。 ソ ース コ ー ド 構文の値の多 く は、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ に対応 し てい ます。 次の JavaScript の例では、デー タ ウ ィ ン ド ウ コ ン ト ロ ール dw_1 のデー タ ウ ィ ン ド ウ オブジ ェ ク ト の構文を取得 し 、テ キ ス ト ボ ッ ク ス コ ン ト ロ ール textb_dw_syntax に表示 し ます。 var dwSyntax; dwSyntax = dw_1.Describe("datawindow.syntax"); textb_dw_syntax.value = dwSyntax; グループ区切 り の作成な ど、 一部の高度な動的デー タ ウ ィ ン ド ウ 機能を使用す る 場合には、 開発者自身で構文を作成 し な け ればな ら ない こ と も あ り ます。 構文の作成方法 Create メ ソ ッ ド に指定す る 必要が あ る 、 デー タ ウ ィ ン ド ウ の ソ ー ス コ ー ド 構文は、 非常に複雑にな る 場合があ り ます。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の構文例を参照す る には、 ラ イ ブ ラ リ ペ イ ン タ を開 き 、 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を テ キ ス ト フ ァ イ ルにエ ク ス ポー ト し た後、 その フ ァ イ ルを テ キ ス ト エデ ィ タ で表示 し ます。 Create メ ソ ッ ド 、Describe メ ソ ッ ド 、お よ びデー タ ウ ィ ン ド ウ オブジ ェ ク ト の プ ロ パ テ ィ と 構文につい て の詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス 』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 82 第3章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更 ユーザへの ク エ リ 機能の提供 デー タ ウ ィ ン ド ウ コ ン ト ロ ールか ら Retrieve メ ソ ッ ド を呼び出す と 、 そのデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の SELECT 文に指定 さ れてい る 行が検索 さ れ ます。 デー タ ウ ィ ン ド ウ を ク エ リ モー ド に切 り 替え る こ と で、 ど の行を検索す る か を実行時にユーザに指定 さ せ る こ と がで き ます。 こ の処理には、 Modify メ ソ ッ ド ま たはプ ロ パテ ィ 式を使用 し ま す。 こ の節の例では Modify メ ソ ッ ド を使用 し ます。 制限事項 UNION キー ワ ー ド ま たは入れ子の SELECT 文を含むデー タ ウ ィ ン ド ウ オブジ ェ ク ト では、 ク エ リ モー ド は使用で き ません。 ク エ リ モー ド の仕組み デー タ ウ ィ ン ド ウ が ク エ リ モー ド にな る と 、Quick Select でデー タ ソ ー ス を定義す る 場合 と 同 じ よ う に、 ユーザは ク エ リ の検索条件を指定で き ます。 検索条件を定義す る と 、 次にデー タ が検索 さ れ る と き に、 そ の検索条件が SELECT 文の WHERE 句に追加 さ れ ます。 以下の 3 つの図に、 ク エ リ モー ド を使用 し た場合のそれぞれの検索結 果を示 し ます。 まず、 デー タ が検索 さ れ、 デー タ ウ ィ ン ド ウ に取 り 込 ま れ ます。 こ こ では、 36 個の行があ り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 83 第3章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更 次に、 ク エ リ モー ド を オ ンに し ます。 それま で検索 さ れていたデー タ が消去 さ れ、 検索条件を指定す る ための空の行が表示 さ れ ます。 こ こ では、 行の検索条件 と し て、 Quarter = Q1 と Units > 15 と い う 条件を指 定 し てい ます。 次に、 Retrieve を呼び出 し て、 ク エ リ モー ド を オ フ に し ます。 デー タ ウ ィ ン ド ウ コ ン ト ロ ールは、 指定 さ れた条件を SELECT 文に追加 し 、 その条件を満たす 3 つの行を検索 し てユーザに表示 し ます。 ク エ リ モー ド を再度オ ン にす る と 、 ユーザは検索条件を修正 し て、 も う 一度検索す る こ と がで き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 84 第3章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更 ク エ リ モー ド の使い方 v 実行時にユーザに ク エ リ モー ド を提供するには 1 次の ス ク リ プ ト を記述 し て、 ク エ リ モー ド を オ ンに し ます。 PowerBuilder の場合 dw_1.Modify("datawindow.querymode=yes") JavaScript の場合 dw_1.Modify("datawindow.querymode=yes"); デー タ ウ ィ ン ド ウ に表示 さ れて い たすべて のデー タ が消去 さ れ、 ユーザが選択条件を入力で き る よ う にな り ま す。 ただ し 、 デー タ ウ ィ ン ド ウ か ら 消去 さ れ たデー タ は、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの主バ ッ フ ァ 内に残っ てい ます。 2 Quick Select を使用 し てデー タ ウ ィ ン ド ウ オブジ ェ ク ト のデー タ ソ ー ス を定義す る 場合 と 同 じ よ う に、 ユーザはデー タ ウ ィ ン ド ウ に検索条件を指定で き ます。 同 じ 行に入力 し た条件は論理積が取 ら れ、 異な る 行に入力 し た条 件は論理和が取 ら れ ま す。 使用で き る 演算子は、 =、 <>、 <、 >、 <=、 >=、 LIKE、 IN、 AND、 お よ び OR です。 Quick Select についての詳細は、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 3 AcceptText お よ び Retrieve を呼び出 し た後、 ク エ リ モー ド を オ フ に し て、 新 し く 検索 さ れた行を表示 し ます。 PowerBuilder の場合 dw_1.AcceptText() dw_1.Modify("datawindow.querymode=no") dw_1.Retrieve() JavaScript の場合 dw_1.AcceptText(); dw_1.Modify("datawindow.querymode=no"); dw_1.Retrieve(); デー タ ウ ィ ン ド ウ コ ン ト ロ ールは、 新 し く 定義 さ れた検索条件を SELECT 文の WHERE 句に追加 し た後、 指定 さ れた行を検索 し て 表示 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 85 第3章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更 修正後の SELECT 文 検索条件に従 っ てデー タ を 検索す る 際、 DBMS に送 ら れ る 修正後の SELECT 文を確認で き ます。 その確認には、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの SQLPreview イ ベン ト で、 sqlsyntax 引数を参照 し ます。 検索条件が SELECT 文に与え る影響 ユーザが指定 し た検索条件は、 本来、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を定義す る ために使用 さ れ る SELECT 文に追加 さ れ ます。 た と えば、 本来の SELECT 文 と し て、 次の ス ク リ プ ト が記述 さ れてい た と し ます。 SELECT printer.rep, printer.quarter, printer.product, printer.units FROM printer WHERE printer.units < 70 こ こ に、 次の条件を指定 し ます。 こ の場合、 SELECT 文は次の よ う にな り ます。 SELECT printer.rep, printer.quarter, printer.product, printer.units FROM printer WHERE printer.units < 70 AND (printer.quarter = 'Q1' AND printer.product = ' ス テ ラ ' OR printer.quarter = 'Q2') デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 86 第3章 検索条件の消去 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更 検索条件を消去す る には、 QueryClear プ ロ パテ ィ を使用 し ます。 PowerBuilder の場合 dw_1.Modify("datawindow.queryclear=yes") JavaScript の場合 dw_1.Modify("datawindow.queryclear=yes"); ク エ リ モー ド での ソー ト QuerySort プ ロ パテ ィ を使用 し て ク エ リ モー ド で条件を指定す る 際に、 デー タ ウ ィ ン ド ウ 内の行の ソ ー ト を ユーザが指定で き る よ う にす る こ と がで き ます。 次の ス テー ト メ ン ト では、 デー タ ウ ィ ン ド ウ の先頭行 を ソ ー ト 条件の指定用に確保 し ま す。 こ れはデー タ ウ ィ ン ド ウ ウ ィ ザー ド の Quick Select と 同 じ です。 PowerBuilder の場合 dw_1.Modify("datawindow.querysort=yes") JavaScript の場合 dw_1.Modify("datawindow.querysort=yes"); ク エ リ モー ド での カ ラ ムのプ ロパテ ィ の上書き デフ ォ ル ト では、 ク エ リ モー ド は、 編集様式やそのほかのカ ラ ム定義 (使用可能な文字数な ど) を使用 し ます。 こ れ ら のプ ロ パテ ィ を ク エ リ モー ド で上書 き し 、 カ ラ ムに標準的なエデ ィ ッ ト コ ン ト ロ ールを指定 す る 場合は、それぞれのカ ラ ム に Criteria.Override_Edit プ ロ パテ ィ を使 用 し ます。 PowerBuilder の場合 dw_1.Modify("mycolumn.criteria.override_edit=yes") JavaScript の場合 dw_1.Modify("mycolumn.criteria.override_edit=yes"); ま た、 こ の指定 を デー タ ウ ィ ン ド ウ ペ イ ン タ で行 う には、 カ ラ ム の [全般] プ ロ パテ ィ ページの [カ ラ ム の編集様式を無視] を オ ン に し ます。 検索条件に対 し てプ ロ パテ ィ を上書 き す る と 、 ユーザはセルに 文字を い く つで も 指定で き る よ う にな り ます。 ま た、 デー タ ベー ス 内 のカ ラ ム に対す る 許容文字数の制約 も 受け ません。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 87 第3章 ユーザに対する カ ラ ム の条件指定の強制 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更 次の ス ク リ プ ト を記述す る と 、 ク エ リ モー ド で、 ユーザに強制的にカ ラ ムの条件を指定 さ せ る こ と がで き ます。 PowerBuilder の場合 dw_1.Modify("mycolumn.criteria.required=yes") JavaScript の場合 dw_1.Modify("mycolumn.criteria.required=yes"); ま た、 こ の指定 を デー タ ウ ィ ン ド ウ ペ イ ン タ で行 う には、 カ ラ ム の [全般] プ ロ パテ ィ ページの [等号のみ使用] を オ ン に し ま す。 こ れ に よ っ て、 ユーザはカ ラ ム に必ず条件を指定 し 、 カ ラ ム の条件には < や >= な ど の演算子ではな く 、 = が使用 さ れ る よ う にな り ます。 ヘルプ ボ タ ンの使用 デー タ ウ ィ ン ド ウ オブジ ェ ク ト には、オ ン ラ イ ン ヘルプに関連 し たプ ロ パテ ィ が あ り ま す。 DataWindow.Help.File プ ロ パテ ィ にヘルプ フ ァ イ ル名を初期設定す る こ と で、 実行時にデー タ ウ ィ ン ド ウ で表示 さ れ る ダ イ ア ロ グボ ッ ク ス に [ヘルプ] コ マ ン ド ボ タ ン を表示で き ます。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト のヘルプ関連のプ ロ パテ ィ につい て の詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アル を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 88 第3章 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の動的変更 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の再利用 PowerBuilder のみ こ の方法では、 PowerScript メ ソ ッ ド を使用 し ますが、 こ の メ ソ ッ ド は ほかのデー タ ウ ィ ン ド ウ 環境では使用で き ません。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を再利用す る には、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト が格納 さ れてい る ラ イ ブ ラ リ か ら 構文を検索 し 、 その構 文を使っ て、デー タ ウ ィ ン ド ウ コ ン ト ロ ール内にデー タ ウ ィ ン ド ウ オ ブジ ェ ク ト を動的に作成 し ます。 以下に、アプ リ ケーシ ョ ン で こ の作業を行 う 一般的な方法を示 し ます。 • LibraryDirectory 関数を使用 し て、 現行の ラ イ ブ ラ リ 内にあ る デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト と そのほかの ラ イ ブ ラ リ エ ン ト リ の リ ス ト を取 り 出 し ます。 • DropDownListBox を使用 し て、 ラ イ ブ ラ リ 内のデー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト を リ ス ト し 、 そ の リ ス ト か ら デー タ ウ ィ ン ド ウ を ユーザが選択で き る よ う に し ます。 • LibraryExport 関数を使用 し て、 選択 さ れたデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の構文を文字列変数にエ ク ス ポー ト し ます。 • Create メ ソ ッ ド でデー タ ウ ィ ン ド ウ 構文を使用 し て、 指定 さ れた デー タ ウ ィ ン ド ウ コ ン ト ロ ール内にデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を作成 し ます。 • Describe メ ソ ッ ド を使用 し て、 現行のデー タ ウ ィ ン ド ウ オブジ ェ ク ト の構文を取 り 出 し ます。 た と えば、 次の よ う に指定 し ます。 string dwSyntax dwSyntax = dw_1.Describe("datawindow.syntax") • Modify メ ソ ッ ド を使用 し て、 ユーザがデー タ ウ ィ ン ド ウ オブジ ェ ク ト を修正で き る よ う に し ます。 • LibraryImport 関数を使用 し て、 ユーザが修正 し たデー タ ウ ィ ン ド ウ オブジ ェ ク ト を ラ イ ブ ラ リ 内に保存 し ます。 PowerScript 関数については、 『PowerScript リ フ ァ レ ン ス』 マニ ュ アル を参照 し て く だ さ い。 Create、 Describe、 Modify の各デー タ ウ ィ ン ド ウ メ ソ ッ ド については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アル を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 89 第 4 章 デー タ ス ト ア オブジ ェ ク ト の使い方 こ の章について こ の章では、 アプ リ ケーシ ョ ン でのデー タ ス ト ア オブジ ェ ク ト の 使い方について説明 し ます。 内容 は じ めに 項目 デー タ ス ト アについて デー タ ス ト アの操作 カ ス タ ム デー タ ス ト ア オブジ ェ ク ト の使い方 デー タ ス ト アにおけ る デー タ のア ク セ ス と 操作 デー タ の共有 ページ 91 95 95 97 100 こ の章では、デー タ ウ ィ ン ド ウ ペ イ ン タ でのデー タ ウ ィ ン ド ウ オ ブジ ェ ク ト の構築方法を把握 し てい る こ と が前提にな り ま す。 こ れについては、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アル を参照 し て く だ さ い。 デー タ ス ト アについて デー タ ス ト アは、 非ビ ジ ュ アルなデー タ ウ ィ ン ド ウ コ ン ト ロ ール です。 デー タ ス ト アはデー タ ウ ィ ン ド ウ コ ン ト ロ ール と ほ と ん ど 同 じ 働 き を し ますが、 デー タ ス ト アにはデー タ ウ ィ ン ド ウ コ ン ト ロ ールにあ る よ う な多 く の ビ ジ ュ アルな特性はあ り ません。 デー タ ウ ィ ン ド ウ コ ン ト ロ ール と 同 じ よ う に、 デー タ ス ト アにはデー タ ウ ィ ン ド ウ オブジ ェ ク ト が関連付け ら れ ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 91 第4章 デー タ ス ト ア オブ ジ ェ ク ト の使い方 使用で き る環境 PowerBuilder では、 デー タ ス ト アは非ビ ジ ュ アルなオブジ ェ ク ト です。 Web コ ン ト ロ ール ActiveX では、 デー タ ス ト アはサポー ト さ れてい ま せん。 Web デー タ ウ ィ ン ド ウ サーバ コ ン ポーネ ン ト は、 カ ス タ ム デー タ ス ト ア オブジ ェ ク ト の イ ン ス タ ン ス を使用 し て、 デー タ ウ ィ ン ド ウ 定義 と デー タ を保管 し ます。 95 ページの 「カ ス タ ム デー タ ス ト ア オブジ ェ ク ト の使い方」 を参照 し て く だ さ い。 デー タ ス ト ア を使用す る場合 デー タ ス ト アは、 デー タ にア ク セ ス す る 必要はあ る が、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの ビ ジ ュ ア ル表示は不要で あ る 場合に便利です。 デー タ ス ト アには以下の よ う な機能があ り ます。 • ウ ィ ン ド ウでデー タ ウ ィ ン ド ウ コ ン ト ロールを非表示に し な く て も、 デー タ ベースに対 し てバ ッ ク グ ラ ウン ド 処理を実行で き る デー タ ウ ィ ン ド ウ コ ン ト ロ ールに表示 さ れ る デー タ ウ ィ ン ド ウ オブジ ェ ク ト がオ ン ラ イ ン表示には適 し てい る が、 印刷には適 し ていない と し ま す。 こ の場合、 同 じ 結果集合を持つ、 も う 1 つ別 のデー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト を 印刷用に定義 し 、 こ のオ ブ ジ ェ ク ト をデー タ ス ト アに割 り 当て る こ と がで き ま す。 こ れに よ り 、 デー タ ス ト ア と デー タ ウ ィ ン ド ウ コ ン ト ロ ール と の間でデー タ を共有で き ま す。 ユーザが ウ ィ ン ド ウ 内のデー タ を印刷す る と き は、 常にデー タ ス ト アの内容が印刷 さ れ ます。 • 同 じ 情報に関 し て複数のビ ュ ーを表示する ために使用するデー タ を保持 できる ウ ィ ン ド ウ に同 じ 情報の複数の ビ ュ ーを表示す る 場合、 デー タ ス ト ア を使用 し て結果集合を保持で き ま す。 デー タ ス ト ア と 1 つ ま たは複数のデー タ ウ ィ ン ド ウ コ ン ト ロ ール と の間でデー タ を共有 す る こ と で、 何度 も デー タ を検索す る こ と な く 、 同 じ 情報に関す る 異な る ビ ュ ーを表示で き ます。 • 埋め込み SQL 文を使用 し な く て も テーブル行を操作で き る アプ リ ケーシ ョ ン で行の操作が必要ではあ る が、 行を表示す る 必 要はない場合は、 デー タ ス ト ア を使用す る と 、 埋め込み SQL 文の かわ り にデー タ ベー ス 処理を制御で き ま す。 一般的には、 デー タ ス ト ア を使用 し た方が、 埋め込み SQL 文を使用す る よ り も 実行時 の処理速度が速 く な り ます。ま た、デー タ ス ト アの使用時には SQL がデー タ ウ ィ ン ド ウ オブジ ェ ク ト と 一緒に格納 さ れ る ので、 SQL を簡単に再利用で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 92 第4章 • デー タ ス ト ア オブ ジ ェ ク ト の使い方 ア プ リ ケーシ ョ ン サーバ上でデー タ ベースにア ク セスで き る 分散型アプ リ ケーシ ョ ン の場合、 リ モー ト サーバのオブジ ェ ク ト は、 デー タ ス ト ア を使用 し てデー タ ベー ス と 対話で き ま す。 デー タ ス ト ア を 使用す る こ と で、 サ ー バ マ シ ン で 提供 さ れ る コ ン ピ ュ ー タ リ ソ ース を活用で き 、 各 ク ラ イ ア ン ト でデー タ ベース操 作を行 う 必要がな く な り ます。 データ ス ト ア の メ ソッ ド データ ウ ィ ン ド ウ で使用可能なほと んど のメ ソ ッ ド と イ ベン ト が、 デー タ ス ト アでも 使用でき ま す。 ただし 、 ユーザと のオン ラ イ ン 対話処理を 扱う 一部のメ ソ ッ ド は、 データ ス ト ア では使用でき ま せん。 たと え ば、 データ ス ト ア は、 Retrieve、 Update、 InsertRow、 DeleteRow メ ソ ッ ド はサ ポート し ていま すが、 GetClickedRow や SetRowFocusIndicator メ ソ ッ ド は サポート し ていま せん。 情報を求める プ ロ ン プ ト の表示 デー タ ス ト アの使用時は、 ダ イ ア ロ グ ボ ッ ク ス を表示 し てユーザに詳 細情報の入力を求め る 機能は使用で き ません。 以下に、 こ の制限の解 決方法をい く つか示 し ます。 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの場合 と 同 じ よ う に、 SetSort お よ び SetFilter メ ソ ッ ド を使用 し て、 デー タ ス ト ア オブジ ェ ク ト に対 し て ソ ー ト 条件やフ ィ ル タ 条件を指定で き ます。 た だ し 、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール の使用中 に、 SetSort ま た は SetFilter の いずれか に NULL 値 を 渡 し た 場合、 デー タ ウ ィ ン ド ウ は ユーザに対 し て情報入力を求め る プ ロ ン プ ト を表示 し ます。 こ れに対 し 、 デー タ ス ト アの場合は、 こ れ ら の メ ソ ッ ド の呼び出 し には、 有効 な書式を使用 し なければな り ません。ま た、デー タ ス ト ア と デー タ ウ ィ ン ド ウ コ ン ト ロ ール と の間でデー タ を共有す る 場合 も 、 有効な書式を 使用 し な ければな り ません。 デー タ ス ト アではな く 、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールに NULL 値を渡す こ と はで き ません。 SetSort および SetFilter デー タ ウ ィ ン ド ウ でデー タ を 検索す る 前に、 ユーザに検索条件を たずね る プ ロ ン プ ト が表示 さ れ る よ う に、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を定義で き ます。 こ の機能は、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールでのみ使用で き ます。 デー タ ス ト アではサポー ト し てい ません。 条件を求める プ ロ ン プ ト SaveAs デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト で SaveAs を 使用す る 場合 に、 ユーザに保存先の フ ァ イ ル名を たずね る プ ロ ン プ ト を表示す る た めに、 フ ァ イ ル名引数 と し て空の文字列を渡す こ と がで き ます。 こ れ に対 し 、 デー タ ス ト アの場合は、 フ ァ イ ル名引数を指定 し な ければな り ません。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 93 第4章 デー タ ス ト ア オブ ジ ェ ク ト の使い方 デー タ ウ ィ ン ド ウ コ ン ト ロ ールでは、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の [印刷の仕様] プ ロ パテ ィ ページで [印刷 前にプ リ ン タ を設定] チ ェ ッ ク ボ ッ ク ス を オ ン にす る か、 ス ク リ プ ト でデー タ ウ ィ ン ド ウ オブジ ェ ク ト の Print.Prompt プ ロ パテ ィ を設定す る こ と で、 実行時にプ リ ン タ の設定 ダ イ ア ロ グボ ッ ク ス を表示で き ま す。 こ の機能はデー タ ス ト アではサポー ト し てい ません。 印刷に関する プ ロ ン プ ト 引数が必要なデー タ ウ ィ ン ド ウ オブジ ェ ク ト が関連づいて い る デー タ ウ ィ ン ド ウ コ ン ト ロ ールに対 し て、 引数 を 指定 し な いで Retrieve メ ソ ッ ド を呼び出す と 、デー タ ウ ィ ン ド ウ はユーザに対 し て検 索引数を たずね る プ ロ ン プ ト を表示 し ます。 こ の機能はデー タ ス ト ア ではサポー ト し てい ません。 検索引数 デー タ ス ト アのビ ジ ュ アル メ ソ ッ ド デー タ ウ ィ ン ド ウ 内のデー タ の ビ ジ ュ アル表示に関連 し た メ ソ ッ ド や イ ベン ト の多 く は、 デー タ ス ト アには適用 さ れ ません。 ただ し 、 デー タ ス ト アの内容は印刷可能で あ り 、 ま た、 デー タ ス ト アにデー タ を イ ン ポー ト す る こ と も で き る ので、 デー タ ス ト アに も ビ ジ ュ アル指向の い く つかの イ ベン ト や メ ソ ッ ド があ り ます。 た と えば、 デー タ ス ト ア は SetBorderStyle お よ び SetSeriesStyle メ ソ ッ ド を サポー ト し てい る の で、 印刷時のデー タ の表示形式を制御で き ます。 ま た、 文字列やフ ァ イ ルか ら イ ン ポー ト さ れたデー タ がカ ラ ム の入力条件則を満た し てい ない場合は、 ItemError イ ベン ト が発生す る ため、 こ の ItemError イ ベン ト も デー タ ス ト アはサポー ト し てい ます。 デー タ ス ト ア オブ ジ ェ ク ト の メ ソ ッ ド と イ ベ ン ト の一覧お よ び各 メ ソ ッ ド については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アル を 参照 し て く だ さ い。 デー タ ス ト アにはビ ジ ュ アル オーバー ヘ ッ ド がない デー タ ウ ィ ン ド ウ コ ン ト ロ ール と は異な り 、 デー タ ス ト アでは ウ ィ ン ド ウ の ビ ジ ュ アル オーバーヘ ッ ド が発生 し ません。 そのため、 ウ ィ ン ド ウ でデー タ ウ ィ ン ド ウ コ ン ト ロ ールを非表示にす る よ り も 、 デー タ ス ト ア を使用 し た方が効率的です。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 94 第4章 デー タ ス ト ア オブ ジ ェ ク ト の使い方 デー タ ス ト アの操作 デー タ ス ト ア を使用す る には、 まず、 ス ク リ プ ト で デー タ ス ト ア オブ ジ ェ ク ト の イ ン ス タ ン ス を作成 し 、 そのデー タ ス ト アにデー タ ウ ィ ン ド ウ オブジ ェ ク ト を割 り 当て る 必要があ り ます。 次に、 デー タ 検索を 目的にデー タ ス ト ア を 使用す る 場合は、 デー タ ス ト ア に ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト を設定す る 必要があ り ます。 こ れ ら の手順が終了 す る と 、 デー タ を検索 し てデー タ ス ト アに取 り 込んだ り 、 別のデー タ ス ト アや デー タ ウ ィ ン ド ウ コ ン ト ロ ール と デー タ を共有す る な ど の 作業を行 う こ と がで き ます。 例 次の ス ク リ プ ト では、デー タ ス ト ア を使用 し て、デー タ ベース か ら デー タ を検索 し ます。 まず、 デー タ ス ト ア オブジ ェ ク ト の イ ン ス タ ン ス を 作成 し 、 そのデー タ ス ト アにデー タ ウ ィ ン ド ウ オブジ ェ ク ト を割 り 当 て ます。 次に、 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を関連付けて、 検索 し たデー タ をデー タ ス ト アに取 り 込みます。 datastore lds_datastore lds_datastore = CREATE datastore lds_datastore.DataObject = "d_cust_list" lds_datastore.SetTransObject (SQLCA) lds_datastore.Retrieve() /* デー タ 処理を実行 し ます。 */ カ ス タ ム デー タ ス ト ア オブ ジ ェ ク ト の使い方 こ の節では、 ユーザ オブジ ェ ク ト を作成 し て PowerBuilder のデー タ ス ト ア を拡張す る 方法について説明 し ます。 特別な処理を実行す る 、カ ス タ ム デー タ ス ト ア オブジ ェ ク ト を使用で き ます。 カ ス タ ム デー タ ス ト ア を定義す る には、 ユーザ オブジ ェ ク ト ペ イ ン タ を使用 し ます。 ユーザ オブジ ェ ク ト ペ イ ン タ では、 デー タ ス ト アにデー タ ウ ィ ン ド ウ オブジ ェ ク ト を指定 し ます。 ま た、 イ ベン ト 用の ス ク リ プ ト を記述 し た り 、 独自の メ ソ ッ ド 、 ユーザ イ ベン ト 、 お よ び イ ン ス タ ン ス変数を定義 し た り で き ます。 カ ス タ ム デー タ ス ト ア を使用す る には、 2 つの手順に従い ます。 1 ユーザ オブジ ェ ク ト ペ イ ン タ で、組み込みデー タ ス ト ア オブジ ェ ク ト か ら 継承す る 標準 ク ラ ス ユーザ オブ ジ ェ ク ト を 定義 し て保 存 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 95 第4章 2 デー タ ス ト ア オブ ジ ェ ク ト の使い方 PowerBuilder アプ リ ケーシ ョ ン で、 カ ス タ ム デー タ ス ト ア を使用 し ます。 ユーザ オブジ ェ ク ト ペ イ ン タ で、 カ ス タ ム デー タ ス ト ア を い っ たん 定義すれば、 ユーザ オブジ ェ ク ト を使用 し て目的の処理を実行す る た めの ス ク リ プ ト を記述で き ます。 PowerBuilder でのユーザ オブジ ェ ク ト ペ イ ン タ の使い方については、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 v 標準ク ラ ス ユーザ オブ ジ ェ ク ト を定義する には 1 新規作成 ダ イ ア ロ グ ボ ッ ク ス の [PB オブジ ェ ク ト ] タ ブで、 [標 準 ク ラ ス] を選択 し ます。 2 ユーザ オブジ ェ ク ト の継承元の組み込みシ ス テ ム オブジ ェ ク ト のデー タ 型 と し て、 「datastore」 を選択 し 、 [OK] ボ タ ン を選択 し ます。 カ ス タ ム オブジ ェ ク ト を定義で き る よ う に、 ユーザ オブジ ェ ク ト ペ イ ン タ の ワ ー ク スペース が表示 さ れます。 v 3 プ ロ パテ ィ ビ ューの [データ オブジ ェ ク ト ] ボ ッ ク スに、 データ ウ ィ ン ド ウ オブジ ェ ク ト の名前を指定し 、[OK] を ク リ ッ ク し ます。 4 オブ ジ ェ ク ト の イ ベ ン ト の ス ク リ プ ト を 記述す る か、 メ ソ ッ ド 、 ユーザ イ ベン ト 、 お よ び イ ン ス タ ン ス変数を定義 し て、 デー タ ス ト ア を カ ス タ マ イ ズ し ます。 5 オブジ ェ ク ト を保存 し ます。 ア プ リ ケーシ ョ ン でユーザ オブ ジ ェ ク ト を使用するには 1 ス ク リ プ ト を記述す る オブジ ェ ク ト ま たは コ ン ト ロ ールを選択 し ます。 2 ス ク リ プ ト ビ ュ ーを開 き 、 ス ク リ プ ト を記述す る イ ベン ト を選択 し ます。 3 ユーザ オブジ ェ ク ト を使用 し て必要な処理を実行す る ために必要 な コ ー ド を記述 し ます。 次の例では、 カ ス タ ム デー タ ス ト ア を使用 し て、 デー タ ベース か ら デー タ を取得す る 方法を示 し ま す。 こ の例では、 ま ず、 カ ス タ ム デー タ ス ト ア オブ ジ ェ ク ト の イ ン ス タ ン ス を 作成 し ま す。 次 に、 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を設定 し 、デー タ ス ト アにデー タ を取 り 込みます。 uo_cust_dstore lds_cust_dstore lds_cust_dstore = CREATE uo_cust_dstore デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 96 第4章 デー タ ス ト ア オブ ジ ェ ク ト の使い方 lds_cust_dstore.SetTransObject (SQLCA) lds_cust_dstore.Retrieve() /* デー タ 処理を実行 し ます。 */ こ の例では、 デー タ ス ト アに デー タ ウ ィ ン ド ウ オブジ ェ ク ト を関 連付けない こ と に注意 し て く だ さ い。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト は、 ユーザ オブジ ェ ク ト の定義で指定 さ れてい る か ら です。 実行時のデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の変更 ユーザ オブジ ェ ク ト ペ イ ン タ で、デー タ ウ ィ ン ド ウ オブジ ェ ク ト をデー タ ス ト アに関連付け る と 、 デー タ ス ト アのデー タ オブジ ェ ク ト プ ロ パテ ィ の初期値が設定 さ れ ます。 実行時に、 デー タ ス ト ア に関連付け たデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を変更す る には、 デー タ オブジ ェ ク ト プ ロ パテ ィ の値を変更 し ます。 4 ス ク リ プ ト を コ ンパ イ ル し て、 変更を保存 し ます。 デー タ ス ト アにおけるデー タ のア ク セス と 操作 デー タ ス ト ア を使用 し てデー タ にア ク セ スす る には、 デー タ ソ ース か ら デー タ ス ト アにデー タ を読み込む必要があ り ます。 デー タ ソ ースがデー タ ベースの場合 デー タ ス ト ア のデー タ がデー タ ベー ス か ら 取得 さ れて い る (つ ま り 、 デー タ ソ ース が外部 ソ ース以外に定義 さ れてい る 場合) 、 デー タ を取 得す る た めにデー タ ベー ス に ア ク セ ス す る 必要が あ り ま す。 デー タ ベース にア ク セ スす る 手順は、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールで使用 す る 手順 と 同 じ です。 デー タ ベー ス への ア ク セ ス につい て の詳細は、 24 ページ の 「デー タ ベースへのア ク セ ス」 を参照 し て く だ さ い。 デー タ ソ ースがデー タ ベースでない場合 デー タ ウ ィ ン ド ウ のデー タ がデー タ ベー ス 以外か ら 取得 さ れ て い る (つま り 、 デー タ ソ ース がデー タ ウ ィ ン ド ウ ペ イ ン タ で外部 ソ ース に 定義 さ れてい る ) 場合、次の メ ソ ッ ド を使用 し て、デー タ ス ト アにデー タ を イ ン ポー ト で き ます。 ImportClipboard ImportFile ImportString ま た、 デー タ ウ ィ ン ド ウ デー タ 式や SetItem メ ソ ッ ド を 使用 し て も 、 デー タ ス ト アにデー タ を設定で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 97 第4章 デー タ ス ト ア オブ ジ ェ ク ト の使い方 デー タ ス ト アにおけ る デー タ へのア ク セ ス についての詳細は、『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 デー タ ス ト ア オブ ジ ェ ク ト のバ ッ フ ァ に ついて デー タ ウ ィ ン ド ウ コ ン ト ロ ール と 同 じ よ う に、 デー タ ス ト アは、 デー タ を管理す る ために 3 つのバ ッ フ ァ を使用 し ます。 表 4-1: デー タ ス ト アのバ ッ フ ァ バッ フ ァ 主バ ッ フ ァ フ ィ ルタ バ ッ フ ァ 削除バ ッ フ ァ 内容 削除やフ ィ ル タ も 適用 さ れていないデー タ 、 つ ま り 表 示可能な行 フ ィ ル タ の適用に よ っ て非表示に さ れたデー タ ユーザ ま たは ス ク リ プ ト に よ っ て削除 さ れたデー タ エデ ィ ッ ト コ ン ト ロールについて デー タ ス ト ア オブ ジ ェ ク ト には、 エデ ィ ッ ト コ ン ト ロ ールが あ り ま す。 ただ し 、 デー タ ス ト アのエデ ィ ッ ト コ ン ト ロ ール と デー タ ウ ィ ン ド ウ のエデ ィ ッ ト コ ン ト ロ ールでは、 機能に違いがあ り ます。 デー タ ウ ィ ン ド ウ のエデ ィ ッ ト コ ン ト ロ ールは、 現行のセル (行 と カ ラ ム) にユーザが入力 し た テ キ ス ト を追跡 し ます。 一方、 デー タ ス ト アのエ デ ィ ッ ト コ ン ト ロ ールは、 ク リ ッ プボー ド やフ ァ イ ルな ど の外部 ソ ー ス か ら イ ン ポー ト さ れたデー タ の管理に使用 し ます。 デー タ ス ト アの エデ ィ ッ ト コ ン ト ロ ールに保持 さ れ る テ キ ス ト は、 ユーザが直接変更 す る こ と はで き ません。 ス ク リ プ ト で操作 し なければな り ません。 デー タ ス ト アによ る プ ログ ラ ミ ング デー タ ス ト ア オブ ジ ェ ク ト を 操作す る た めの多 く の メ ソ ッ ド が あ り ます。 それ ら の メ ソ ッ ド の う ち、 以下に一般的に使用 さ れ る メ ソ ッ ド を示 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 98 第4章 デー タ ス ト ア オブ ジ ェ ク ト の使い方 表 4-2: デー タ ス ト ア オブ ジ ェ ク ト の一般的な メ ソ ッ ド メソッド DeleteRow Filter InsertRow Print Reset Retrieve RowsCopy RowsMove ShareData Sort Update 内容 デー タ ス ト アか ら 指定 さ れた行を削除する 現行の フ ィ ル タ 条件に従っ て、 デー タ ス ト アの行に フ ィ ル タ を適用する 新 し い行を挿入する デー タ ス ト アの内容を現行のプ リ ン タ に送信する デー タ ス ト ア内のすべての行を ク リ アする デー タ ベース か ら 行を検索する デー タ ス ト ア間ま たはデー タ ス ト ア と デー タ ウ ィ ン ド ウ コ ン ト ロ ールの間で、 行を コ ピーす る デー タ ス ト ア間ま たはデー タ ス ト ア と デー タ ウ ィ ン ド ウ コ ン ト ロ ールの間で、 行を移動する 異な る デー タ ス ト ア ま たはデー タ ウ ィ ン ド ウ コ ン ト ロ ール 間でデー タ を共有する 。100 ページの「デー タ の共有」を参照 現行のソ ート 条件に従っ て、 データ ス ト アの行を ソ ート する 前回の Update 実行後に行われたすべての挿入、 変更、 お よ び削除の内容をデー タ ベース に送信する デー タ ス ト ア メ ソ ッ ド についての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 上の表にあ る メ ソ ッ ド は、デー タ ス ト アのデー タ を操作 し ます。 ただ し 、 基にな る デー タ ウ ィ ン ド ウ オ ブジ ェ ク ト の定義は変更 さ れません。 ま た、 Modify お よ び Describe メ ソ ッ ド を使用す る と 、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の定義にア ク セ ス し て操作で き ます。 こ れ ら の メ ソ ッ ド を使用す る と 、 実行時にデー タ ウ ィ ン ド ウ オブジ ェ ク ト を変更で き ます。 た と えば、 デー タ ウ ィ ン ド ウ の外観を変更 し た り 、 ユーザ側で特別な レ ポー ト を作成で き る よ う に し た り で き ます。 動的なデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト 詳細については、 第 3 章の 「デー タ ウ ィ ン ド ウ オブジ ェ ク ト の動的変 更」 を参照 し て く だ さ い。 プ ロパテ ィ と デー タ 式 デー タ ウ ィ ン ド ウ コ ン ト ロ ールで も 、 同 じ プ ロ パテ ィ と デー タ 式を使用で き ます。 詳細については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス 』 マニ ュ アルを参照 し て く だ さ い。 デー タ ス ト ア プ ロパテ ィ と イ ベン ト の使い方 こ の章では、 デー タ ス ト ア 操作用の一部のプ ロ パテ ィ と イ ベン ト について のみ説明 し てい ま す。 デー タ ス ト アのプ ロ パテ ィ と イ ベン ト についての詳細は、『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 99 第4章 デー タ ス ト ア オブ ジ ェ ク ト の使い方 デー タ の共有 ShareData メ ソ ッ ド を 使用す る と 、 2 つの異な る デー タ ス ト ア ま たは デー タ ウ ィ ン ド ウ コ ン ト ロ ール間で結果集合を共有で き ます。 デー タ を共有すれば、 同 じ デー タ を何度 も 検索す る 必要がな く な り ます。 ShareData メ ソ ッ ド は、主デー タ ウ ィ ン ド ウ と 呼ばれ る デー タ ウ ィ ン ド ウ コ ン ト ロ ールやデー タ ス ト ア に よ っ て検索 さ れたデー タ を、 2 次 デー タ ウ ィ ン ド ウ と 呼ばれ る 別のデー タ ウ ィ ン ド ウ コ ン ト ロ ールや デー タ ス ト ア と 共有 し ます。 結果集合は一致 し なけ ればな ら ない デー タ を共有す る 場合、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の結果集合は 同 じ でな ければな り ま せん。 ただ し 、 SELECT 文は異な っ ていて も か ま い ません。 た と えば、 以下の SELECT 文があ る デー タ ウ ィ ン ド ウ オ ブジ ェ ク ト 間では、 結果集合は同 じ なので、 ShareData メ ソ ッ ド を使用 し てデー タ を共有で き ます。 SELECT dept_id from dept SELECT dept_id from dept where dept_id = 200 SELECT dept_id from employee デー タ ソ ー ス がデー タ ベー ス で あ る デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト と デー タ ソ ー ス が外部デー タ で あ る デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の間で も 、 デー タ を共有で き ます。 カ ラ ム の一覧 と そのデー タ 型が一 致 し てい る 限 り 、 デー タ の共有が可能です。 共有内容 ShareData メ ソ ッ ド を使用す る と 、 以下の情報が共有 さ れ ます。 主バ ッ フ ァ 削除バ ッ フ ァ フ ィ ルタ バッ フ ァ ソ ー ト 順序 ShareData メ ソ ッ ド では、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の書式特性 は共有 さ れません。 つま り 、 ShareData を使用す る と 、 同 じ 結果集合に 異な る 提示様式を適用で き ます。 結果集合を 変更する とき 主デー タ ウ ィ ン ド ウ ま たは 2 次デー タ ウ ィ ン ド ウ に対 し て、 結果集合 に影響す る 操作を実行 し た場合、 その変更内容はデー タ を共有す る 両 方のデー タ ウ ィ ン ド ウ オブジ ェ ク ト に影響 し ます。 2 次デー タ ウ ィ ン ド ウ のバ ッ フ ァ ま たは ソ ー ト 順序を変更す る 操作は、 主デー タ ウ ィ ン ド ウ に も 影響 し ます。た と えば、2 次デー タ ウ ィ ン ド ウ に対 し て Update メ ソ ッ ド を呼び出 し た場合、 その更新処理は主デー タ ウ ィ ン ド ウ に も 適用 さ れ ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 100 第4章 デー タ 共有の解除 デー タ ス ト ア オブ ジ ェ ク ト の使い方 デー タ の共有を解除す る には、ShareDataOff メ ソ ッ ド を使用 し ます。主 デー タ ウ ィ ン ド ウ に対 し て ShareDataOff メ ソ ッ ド を呼び出す と 、 ど の 2 次デー タ ウ ィ ン ド ウ か ら も デー タ 共有が解除 さ れ る ので、 共有デー タ に ア ク セ ス で き な く な り ま す。 2 次デー タ ウ ィ ン ド ウ に 対 し て ShareDataOff メ ソ ッ ド を呼び出す と 、 その 2 次デー タ ウ ィ ン ド ウ には デー タ が格納 さ れな く な り ますが、 主デー タ ウ ィ ン ド ウ と そのほかの 2 次デー タ ウ ィ ン ド ウ には影響 し ません。 ウ ィ ン ド ウ を 閉 じ て、 そ の ウ ィ ン ド ウ に関連付け ら れ て い る デー タ ウ ィ ン ド ウ コ ン ト ロ ール (ま たはデー タ ス ト ア) が破棄 さ れ る と 、 自 動的にデー タ の共有は解除 さ れ ま す。 し た が っ て、 ほ と ん ど の場合、 開発者側でデー タ の共有を解除す る 必要はあ り ません。 ク ロス タ ブ ク ロ ス タ ブ提示様式が指定 さ れたデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト で は、 デー タ を共有で き ません。 例 : デー タ ス ト アか らのデー タ の印刷 w_employees と い う ウ ィ ン ド ウ があ る と し ます。 こ の ウ ィ ン ド ウ では、 デー タ ベー ス か ら 従業員デー タ を検索、 更新、 お よ び印刷す る こ と が で き ます。 デー タ ウ ィ ン ド ウ コ ン ト ロ ールに表示 さ れ る デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト は表示には適 し てい ますが、 印刷には適 し てい ません。 こ の 場合、 表示用に使用 さ れ る デー タ ウ ィ ン ド ウ オブジ ェ ク ト と 同 じ 結果 集合を持つ、 も う 1 つ別のデー タ ウ ィ ン ド ウ オブジ ェ ク ト を印刷用に 定義 し 、 デー タ ス ト アに関連付け ます。 こ れに よ り 、 デー タ ス ト ア と デー タ ウ ィ ン ド ウ コ ン ト ロ ール と の間でデー タ を共有で き ます。 ユー ザが ウ ィ ン ド ウ 内のデー タ を印刷す る と き は、 常にデー タ ス ト アの内 容が印刷 さ れ ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 101 第4章 ウ ィ ン ド ウまたは フ ォ ームのオープ ン時 デー タ ス ト ア オブ ジ ェ ク ト の使い方 コ ー ド の記述は、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール dw_employees の現 行の行 イ ン ジ ケー タ と し てハ ン ド ポ イ ン タ を 設定す る こ と か ら 始め ま す。 次に、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール dw_employees に ト ラ ン ザ ク シ ョ ン オ ブ ジ ェ ク ト を 設定 し 、 Retrieve メ ソ ッ ド を 呼び出 し て デー タ を検索 し ます。 デー タ を取得 し た後、 イ ン ス タ ン ス 変数ま たは デー タ メ ン バ ids_datastore を 使用 し てデー タ ス ト ア を 作成 し 、 そ の デー タ ス ト アにデー タ ウ ィ ン ド ウ オブジ ェ ク ト d_employees を割 り 当 て ます。 ス ク リ プ ト の最後の ス テー ト メ ン ト に よ っ て、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール dw_employees と デー タ ス ト アで結果集合を共有 し ます。 こ れは、 ウ ィ ン ド ウ の Open イ ベン ト の コ ー ド です。 dw_employees.SetRowFocusIndicator(Hand!) dw_employees.SetTransObject(SQLCA) dw_employees.Retrieve() ids_datastore = CREATE datastore ids_datastore.DataObject = "d_employees" dw_employees.ShareData(ids_datastore) [更新] ボ タ ンの コー ド cb_update ボ タ ン の コ ー ド で は、 デ ー タ ウ ィ ン ド ウ コ ン ト ロ ー ル dw_employees に更新処理を適用 し ます。 こ れは、 [更新] ボ タ ンの Clicked イ ベン ト の コ ー ド です。 IF dw_employees.Update() = 1 THEN COMMIT using SQLCA; MessageBox(" 保存 "," 保存に成功 し ま し た ") ELSE ROLLBACK using SQLCA; MessageBox(" 保存 "," 保存に失敗 し ま し た ") END IF [印刷] ボ タ ンの コー ド cb_print ボ タ ン の Clicked イ ベン ト では、 ids_datastore の内容を印刷 し ます。 デー タ ス ト アに関連付け ら れたデー タ ウ ィ ン ド ウ オブジ ェ ク ト は d_employees なので、 印刷出力には こ のオブジ ェ ク ト に指定 さ れた 印刷形式が使用 さ れ ます。 こ れは、 [印刷] ボ タ ンの Clicked イ ベン ト の コ ー ド です。 ids_datastore.Print() ウ ィ ン ド ウまたは フ ォ ームのク ローズ時 ウ ィ ン ド ウ が閉 じ る と 、 デー タ ス ト アは破棄 さ れます。 こ れは、 ウ ィ ン ド ウ の Close イ ベン ト の コ ー ド です。 destroy ids_datastore デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 102 第4章 デー タ ス ト ア オブ ジ ェ ク ト の使い方 例 : 2 つのデー タ ス ト ア オブ ジ ェ ク ト に よ るデー タ 処理 w_multi_view と い う ウ ィ ン ド ウ には、 同 じ 結果集合の複数の ビ ュ ーが 表示 さ れ る と し ます。 [従業員一覧] ラ ジオ ボ タ ン を選択す る と 、 ウ ィ ン ド ウ にデー タ ベース か ら 検索 さ れた従業員の一覧が表示 さ れます。 [従業員給与情報] ラ ジオ ボ タ ン を選択す る と 、 ウ ィ ン ド ウ には、 部 門別に従業員給料情報がグ ラ フ で表示 さ れ ます。 こ の ウ ィ ン ド ウ には、 dw_display と い う データ ウ ィ ン ド ウ コ ン ト ロ ール があ り ます。 こ のデータ ウ ィ ン ド ウ コ ン ト ロ ールは、 2 つのデータ ス ト ア を使用し て、 データ ベース か ら 検索し たデータ を処理し ます。 1 つ目 のデータ ス ト ア ids_emp_list は、 2 つ目のデータ ス ト ア ids_emp_graph と 結果集合を 共有 し ま す。 2 つのデー タ ス ト アに関連付け ら れたデー タ ウ ィ ン ド ウ オブジ ェ ク ト の結果集合は同じ です。 ウ ィ ン ド ウまたは フ ォ ームのオープ ン時 ウ ィ ン ド ウ ま たは フ ォ ーム を開 く と 、 アプ リ ケーシ ョ ン ではマ ウ ス ポ イ ン タ が砂時計に変わ り ま す。 次に、 コ ー ド では、 2 つのデー タ ス ト ア を作成 し 、 それ ら のデー タ ス ト アにデー タ ウ ィ ン ド ウ オブジ ェ ク ト を設定 し ます。 その後、 ids_emp_list に ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を設定 し 、 Retrieve メ ソ ッ ド を呼び出 し てデー タ を検索 し ます。 デー タ を取得 し た後、 ids_emp_list の結果集合を ids_emp_graph と 共有 し ます。 ス ク リ プ ト の最後の ス テー ト メ ン ト で、 [従業員一覧] ラ ジオ ボ タ ン の Clicked イ ベン ト を発生 さ せます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 103 第4章 デー タ ス ト ア オブ ジ ェ ク ト の使い方 こ れは、 ウ ィ ン ド ウ の Open イ ベン ト の コ ー ド です。 SetPointer(HourGlass!) ids_emp_list = Create DataStore ids_emp_graph = Create DataStore ids_emp_list.DataObject = "d_emp_list" ids_emp_graph.DataObject = "d_emp_graph" ids_emp_list.SetTransObject(sqlca) ids_emp_list.Retrieve() ids_emp_list.ShareData(ids_emp_graph) rb_emp_list.EVENT Clicked() [従業員一覧] ラ ジオ ボ タ ンの コ ー ド [従業員一覧] ラ ジオ ボ タ ン (rb_emp_list) の コ ー ド では、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールに関連付け ら れたデー タ ウ ィ ン ド ウ オブジ ェ ク ト が、ids_emp_list に関連付け ら れたデー タ ウ ィ ン ド ウ オブジ ェ ク ト と 同 じ にな る よ う に設定 し ます。 次に、 デー タ ス ト ア ids_emp_list の結果 集合をデー タ ウ ィ ン ド ウ コ ン ト ロ ール と 共有す る こ と に よ っ て、 デー タ を表示 し ます。 こ れは、[従業員一覧] ラ ジオ ボ タ ンの Clicked イ ベン ト の コ ー ド です。 dw_display.DataObject = ids_emp_list.DataObject ids_emp_list.ShareData(dw_display) [従業員給与情報] ラ ジオ ボ タ ンの コ ー ド [従業員給与情報] ラ ジオ ボ タ ン (rb_graph) の コ ー ド は、 [従業員一 覧] ラ ジオ ボ タ ン の コ ー ド と 類似 し てい ます。 こ の コ ー ド では、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールに関連付け ら れたデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト が、 ids_emp_graph に関連付け ら れたデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト と 同 じ に な る よ う に 設 定 し ま す。 次 に、 デ ー タ ス ト ア ids_emp_graph の結果集合をデー タ ウ ィ ン ド ウ コ ン ト ロ ール と 共有す る こ と に よ っ て、 デー タ を表示 し ます。 こ れは、 [従業員給与情報] ラ ジオ ボ タ ン の Clicked イ ベン ト の コ ー ド です。 dw_display.DataObject = ids_emp_graph.DataObject ids_emp_graph.ShareData(dw_display) ウ ィ ン ド ウまたは フ ォ ームの ク ローズ時 ウ ィ ン ド ウ を閉 じ る と 、 デー タ ス ト アは破棄 さ れます。 こ れは、 ウ ィ ン ド ウ の Close イ ベン ト の コ ー ド です。 Destroy ids_emp_list Destroy ids_emp_graph デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 104 第4章 デー タ ス ト ア オブ ジ ェ ク ト の使い方 ガベージ コ レ ク シ ョ ンの使用 こ れ ら のオブジ ェ ク ト を別のプ ロ セ ス で使用す る 場合は、 破棄す る か わ り に、 ガベージ コ レ ク シ ョ ン を使用 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 105 第 5 章 グ ラ フ の操作 こ の章について こ の章では、 実行時に、 アプ リ ケーシ ョ ン のグ ラ フ にア ク セ ス し て変更す る ための コ ー ド の記述方法について説明 し ます。 内容 項目 グ ラ フ の使い方 グ ラ フ のプ ロ パテ ィ の修正 デー タ のプ ロ パテ ィ へのア ク セ ス ポ イ ン ト ア ン ド ク リ ッ ク の使い方 ページ 107 108 111 119 グ ラ フ の使い方 サポー ト 環境 PowerBuilder および Web ActiveX グ ラ フ を サ ポー ト し て い ま す。 デー タ ス ト ア を印刷で き る ので、 PowerBuilder はデー タ を視覚的 に提示す る た め のデー タ ス ト ア 用の イ ベ ン ト と 関数 を 提供 し ま す。 し か し 、 CategoryCount、 CategoryName、 GetData、 SeriesCount な ど の グ ラ フ 関数は、 デー タ ス ト ア に関 し て は作成 さ れ な い ビ ジ ュ ア ル グ ラ フ コ ン ト ロ ールに依存 し ま す。 こ れ ら の関数は、 デー タ ス ト ア オブジ ェ ク ト で使用 さ れ る 際に、 エ ラ ー値ま た空の 文字列を返 し ます。 グ ラ フ をサポー ト し てい ません。 グ ラ フ を 含むデー タ ウ ィ ン ド ウ オブジ ェ ク ト を使用 し て も 、 グ ラ フ は無視 さ れ ます。 グ ラ フ提示様式を持つデー タ ウ ィ ン ド ウ オブジ ェ ク ト を使用 し て も 、 何 も 表示 さ れ ません。 Web デー タ ウ ィ ン ド ウ 開発時に、 1 つま たは複数のグ ラ フ を持つデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を作成で き ます。デー タ をす ぐ に把握 し て分析す る には、 棒グ ラ フ、 線グ ラ フ、 円グ ラ フ が効果的です。 グ ラ フ のデザ イ ン については、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 107 第5章 コ ー ド によ るグ ラ フ 操作 グ ラ フの操作 以降の節では、 実行時に ス ク リ プ ト でグ ラ フ のプ ロ パテ ィ を操作す る こ と に よ っ て、 グ ラ フ にア ク セ ス (お よ び修正) す る 方法について説 明 し ます。 グ ラ フ のプ ロ パテ ィ には次の 2 種類があ り ます。 こ れは、 グ ラ フ を作成す る と き にデー タ ウ ィ ン ド ウ ペ イ ン タ で最初に設定す る プ ロ パテ ィ です。 グ ラ フ の種類、 タ イ ト ル、 お よ び軸 ラ ベルの設定、 軸に目盛を付け る か ど う かの指定な ど があ り ます。 3D グ ラ フ の場合、 こ れには 3D レ ン ダ リ ン グ プ ロ パテ ィ が含まれ ます。3D レ ン ダ リ ン グ プ ロ パテ ィ では、 グ ラ フ の表示を向上 さ せ、 外観を よ り 洗練 さ れた も のにす る ために、 オーバ レ イ ではな く 透明度が用い ら れます。 • グ ラ フ 定義自体のプ ロパテ ィ • こ れは、 グ ラ フ にデー タ が読み込 ま れ る と き の、 実行時にだけ関係す る プ ロ パテ ィ です。 グ ラ フ内の系列数 (系 列は実行時に作成 さ れ る ) 、 系列の横棒 ま たは縦棒の色、 系列が オーバーレ イ か ど う か、 項目の文字 (項目は実行時に作成 さ れ る ) な ど を設定 し ます。 デー タ のプ ロパテ ィ そのほかの PowerBuilder コ ン ト ロールでのグ ラ フ の使用 ほ と ん ど の場合、 グ ラ フ はデー タ ウ ィ ン ド ウ 内で使用 し ますが、 ウ ィ ン ド ウ に グ ラ フ コ ン ト ロ ール を追加す る こ と も で き 、 グ ラ フ コ ン ト ロ ールで使用す る PowerScript メ ソ ッ ド と イ ベン ト も あ り ます。 詳細については、 PowerBuilder の 『アプ リ ケーシ ョ ン テ ク ニ ッ ク 』 マ ニ ュ アルを参照 し て く だ さ い。 グ ラ フ のプ ロパテ ィ の修正 デー タ ウ ィ ン ド ウ ま たは ウ ィ ン ド ウ ペ イ ン タ で グ ラ フ を 定義す る と き は、 その動作 と 表示方法を指定 し ます。 た と えば、 なん ら かの タ イ ト ルを持つ縦棒グ ラ フ と し て グ ラ フ を定義 し 、 数値軸を 4 つの目盛 り に分割 し ます。 各入力項目は、 グ ラ フ のプ ロ パテ ィ に対応 し ます。 ど のグ ラ フ に も 、 グ ラ フ の種類を指定す る GraphType プ ロ パテ ィ があ り ます。 グ ラ フ の種類の動的な変更 グ ラ フ の種類を変更す る 場合、新 し いグ ラ フ を正 し く 定義す る ために、 必要に応 じ てほかのプ ロ パテ ィ を変更す る 必要があ り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 108 第5章 グ ラ フの操作 実行時に こ れ ら のグ ラ フ プ ロ パテ ィ を変更す る には、 コ ー ド でグ ラ フ プ ロ パテ ィ に値を割 り 当て ます。 プ ロパテ ィ 式 プ ロ パテ ィ 式を使っ て、 プ ロ パテ ィ の修正がで き ます。 た と えば、 グ ラ フ gr_emp の種類を縦棒グ ラ フ に変更す る には、 次の コ ー ド を使用 し ます。 PowerBuilder dw_empinfo.Object.gr_emp.GraphType = ColGraph! 実行時にグ ラ フ の タ イ ト ルを変更す る には、次の コ ー ド を使用 し ます。 dw_empinfo.Object.gr_emp.Title = " 新 し い タ イ ト ル " Modify メ ソ ッ ド どの環境で も 、 Modify メ ソ ッ ド を使っ てグ ラ フの一部を修正で き ます。 た と えば、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール dw_empinfo のグ ラ フ gr_emp のタ イ ト ルを 変更する には、 次のコ ード を使用で き ます。 PowerBuilder の例 dw_empinfo.Modify("gr_emp.Title = ' 新 し い タ イ ト ル '") た と えば、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール dw_empinfo のグ ラ フ gr_emp で、 数値軸の ラ ベル文字を変更する には、 次の コ ー ド を使用 し ます。 Web ActiveX の例 dw_empinfo.Modify("gr_emp.Values.Label = ' 新 し い ラ ベル '"); グ ラ フ のプ ロ パテ ィ の一覧については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 グ ラ フ 要素の表示 グ ラ フ は、 タ イ ト ル、 凡例、 お よ び軸で構成 さ れ ます。 こ れ ら の要素 には、 それぞれ表示プ ロ パテ ィ があ り ます。 こ れ ら の表示プ ロ パテ ィ は、 grDispAttr と い う 名前の、 Graph のサブオブジ ェ ク ト (構造体) に プ ロ パテ ィ と し て格納 さ れ ます。 た と えば、 グ ラ フ には、 タ イ ト ルの文字を指定す る Title プ ロ パテ ィ が あ り ま す。 ま た、 grDispAttr 型の TittleDispAttr プ ロ パテ ィ には、 フ ォ ン ト 、 サ イ ズ、 斜体な ど タ イ ト ル文字の特性を指定す る プ ロ パテ ィ が 入っ てい ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 109 第5章 グ ラ フの操作 同様に、グ ラ フ にはそれぞれプ ロ パテ ィ を備え た 2 本の軸があ り ます。 軸のプ ロ パテ ィ は、 grAxis と い う 名前の、 Graph のサブオブジ ェ ク ト (構造体) に格納 さ れます。 た と えば、 グ ラ フ には、 grAxis 型の Values プ ロ パテ ィ があ り ます。 こ のプ ロ パテ ィ は、 値の自動 ス ケー リ ン グの 有無、 大小の区分の数、 軸 ラ ベルな ど、 数値軸のプ ロ パテ ィ を指定 し ます。 以下にグ ラ フ のプ ロ パテ ィ を示 し ます。 Graph int Height int Depth grGraphType GraphType boolean Border string Title ... grDispAttr TitleDispAttr, LegendDispAttr, PieDispAttr string FaceName int TextSize boolean Italic ... grAxis Values, Category, Series boolean AutoScale int MajorDivisions int MinorDivisions string Label ... グ ラ フ 要素の参照 グ ラ フ の各部分の表示プ ロ パテ ィ を参照す る には、 ド ッ ト (.) 表記ま たは Describe お よ び Modify メ ソ ッ ド を使用 し ます。 た と えば、 グ ラ フ タ イ ト ルのプ ロ パテ ィ の 1 つに、 その文字が斜体か ど う か を指定す る も のがあ り ま す。 こ の情報は、 グ ラ フ の TitleDispAttr プ ロ パテ ィ にあ る boolean 型の Italic プ ロ パテ ィ に格納 さ れてい ます。 た と え ば、 デ ー タ ウ ィ ン ド ウ コ ン ト ロ ー ル dw_empinfo の グ ラ フ gr_emp で、 数値軸の ラ ベル文字を変更す る には、 次の コ ー ド を使用 し ます。 dw_empinfo.Object.gr_emp.Values.Label=" 新 し い ラ ベル " グ ラ フ のプ ロ パテ ィ の一覧については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 110 第5章 グ ラ フの操作 グ ラ フ を 含 む デ ー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト の プ ロ パ テ ィ は、 PowerBuilder のオブジ ェ ク ト ブ ラ ウ ザで調べ る こ と がで き ます。 詳細 については、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 デー タ のプ ロパテ ィ へのア ク セス 実行時に、グ ラ フ のデー タ に関連す る プ ロ パテ ィ にア ク セ スす る には、 デー タ ウ ィ ン ド ウ のグ ラ フ用 メ ソ ッ ド を使用 し ます。 デー タ には、 以 下の 3 種類の メ ソ ッ ド が関連付け ら れてい ます。 メ ソ ッ ド の使い方 • グ ラ フ のデー タ に関す る 情報を提供す る メ ソ ッ ド • グ ラ フ か ら のデー タ を保存す る メ ソ ッ ド • デー タ の色や模様な ど の表示プ ロ パテ ィ を変更す る メ ソ ッ ド デー タ ウ ィ ン ド ウ コ ン ト ロ ール内の グ ラ フ に対す る メ ソ ッ ド を 呼び 出すには、 次の構文を使用 し ます。 DataWindowName.methodName ( "graphName", otherArguments...) た と えば、 CategoryCount と い う メ ソ ッ ド があ り ます。 こ れはグ ラ フ内 の項目数 を 返 し ま す。 し た が っ て、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール dw_sales 内にあ る グ ラ フ gr_printer の項目数を取得す る には、次の よ う に記述 し ます。 Ccount = dw_sales.CategoryCount("gr_printer") デー タ の情報の取得 デー タ ウ ィ ン ド ウ コ ン ト ロ ール内に あ る グ ラ フ のデー タ に関す る 情 報を、 実行時に取得す る ための メ ソ ッ ド が多 く 用意 さ れてい ます。 ど の メ ソ ッ ド を使用す る 場合で も 、 デー タ ウ ィ ン ド ウ 内のグ ラ フ に最初 の引数 と し ての名前が与え ら れます。 デー タ ウ ィ ン ド ウ ペ イ ン タ にグ ラ フ コ ン ト ロ ールを挿入す る と き は、 独自の名前を付け る こ と がで き ます。 提示様式がグ ラ フ の場合、 そのグ ラ フ に名前を付け る 必要はあ り ません。 以下の メ ソ ッ ド を使用 し て、 デー タ と その表示に関す る 情報を取得で き ます。 こ れ ら の う ち一部の メ ソ ッ ド では、 引数が参 照渡 し で、 要求 さ れた情報が保管 さ れ ます。 PowerBuilder デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 111 第5章 グ ラ フの操作 表 5-1: PowerBuilder デー タ ウ ィ ン ド ウ内のグ ラ フ で使用する一般的な メソッド メソッド CategoryCount CategoryName DataCount FindCategory FindSeries GetData GetDataLabelling GetDataPieExplode GetDataStyle GetDataTransparency GetDataValue GetSeriesLabelling GetSeriesStyle 受け取る情報 グ ラ フ内の項目数 指定 さ れた項目番号に対応す る 項目名 系列内のデー タ ポ イ ン ト 数 指定 さ れた項目名に対応す る 項目番号 指定 さ れた系列名に対応す る 系列番号 指定 さ れ た 系列 と 位置に対応す る デー タ ポ イ ン ト 値。 GetDataValue の方が柔軟性が高い DirectX 3D グ ラ フ内のデー タ ポ イ ン ト のデー タ ラ ベ ルの表示設定 円グ ラ フ の一片が切 り 離 さ れて突出す る 割合 指定 さ れたデー タ ポ イ ン ト の色や模様な ど表示関係 のプ ロ パテ ィ DirectX 3D グ ラ フ内のデー タ ポ イ ン ト の透明度パー セ ン テージ 指定 さ れた系列 と 位置に対応す る デー タ ポ イ ン ト 値 DirectX 3D グ ラ フ内の系列の系列 ラ ベルの表示設定 指定 さ れた系列の色や模様な ど の表示関係のプ ロ パ ティ GetSeriesTransparenc DirectX 3D グ ラ フ内の系列の透明度パーセ ン テージ y ObjectAtPointer SeriesCount SeriesName マ ウ ス が ク リ ッ ク さ れた と き にポ イ ン ト さ れて いた グ ラ フ の要素 グ ラ フ内の系列数 指定 さ れた系列番号に対応す る 系列名 以下の メ ソ ッ ド を使用 し て、 デー タ と その表示に関す る 情報を取得で き ます。PowerBuilder で も 使用 さ れ る メ ソ ッ ド の う ち、引 数を参照渡 し す る メ ソ ッ ド では、 追加の helper メ ソ ッ ド も 使用で き ま す。 こ れ ら helper メ ソ ッ ド は、 表の 2 列目に示 さ れてい ます。 詳細に ついては、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アル を参照 し て く だ さ い。 Web ActiveX デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 112 第5章 グ ラ フの操作 表 5-2: Web ActiveX デー タ ウ ィ ン ド ウ内のグ ラ フ で使用する一般的な メソッド メソッド CategoryCount CategoryName DataCount FindCategory FindSeries ObjectAtPointer 受け取る情報 グ ラ フ内の項目数 指定 さ れた項目番号に対応す る 項目名 系列内のデー タ ポ イ ン ト 数 指定 さ れた項目名に対応す る 項目番号 指定 さ れた系列名に対応す る 系列番号 マ ウ ス が ク リ ッ ク さ れた と き にポ イ ン ト さ れていた グ ラ フ の要素。 さ ら に詳細な情報を取得する と き は、 ObjectAtPointerSeries と ObjectAtPointerDataPoint を呼 び出す SeriesCount グ ラ フ内の系列数 SeriesName 指定 さ れた系列番号に対応す る 系列名 デー タ ポ イ ン ト の外観に関す る 情報の取得 GetDataPieExplode 円グ ラ フ の一片が切 り 離 さ れて突出す る 割合。 必要 な値を検索す る と き は、 GetDataPieExplodePercentage を呼び出す GetDataStyleColor 指定デー タ ポ イ ン ト の色。 必要な値を検索する と き は、 GetDataStyleColorValue を呼び出す GetDataStyleFill 指定デー タ ポ イ ン ト の模様。 必要な値を検索する と き は、 GetDataStyleFillPattern を呼び出す GetDataStyleLine 指定デー タ ポ イ ン ト の線種 と 幅。 必要な値を呼び出 す と き は、 GetDataStyleLineWidth と GetDataStyleLineStyle を呼び出す GetDataStyleSymbol 指定デー タ ポ イ ン ト のシ ン ボル。 必要な値を検索す る と き は、 GetDataStyleSymbolValue を呼び出す デー タ ポ イ ン ト 値の取得 GetDataDate 指定 さ れた系列、 位置に対応す る 日付を持つデー タ ポ イ ン ト の値。 必要な値を検索す る と き は、 GetDataDateVariable を呼び出す GetDataNumber 指定 さ れた系列、 位置に対応す る 数値デー タ ポ イ ン ト の値。 必要な値を検索す る と き は、 GetDataNumberVariable を呼び出す GetDataString 指定 さ れた系列、 位置に対応す る 文字列デー タ ポ イ ン ト の値。 必要な値を検索す る と き は、 GetDataStringVariable を呼び出す 系列の外観に関す る 情報の取得 GetSeriesStyleColor 指定系列の色。 必要な値を検索す る と き は、 GetSeriesStyleColorValue を呼び出す デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 113 第5章 メソッド GetSeriesStyleFill GetSeriesStyleLine GetSeriesStyleOverlay GetSeriesStyleSymbol グ ラ フの操作 受け取る情報 指定系列の模様。 必要な値を検索す る と き は、 GetSeriesStyleFillPattern を呼び出す 指定系列で使用す る 線種 と 線幅。 必要な値を検索す る と き は、 GetSeriesStyleLineWidth と GetSeriesStyleLineStyle を呼び出す グ ラ フ の系列がオーバーレ イ が ど う か (線がほかの グ ラ フ の種類の上に表示 さ れてい る か ど う か) を示 す。 必要な値を検索す る と き は、 GetSeriesStyleOverlayValue を呼び出す 指定系列のシ ン ボル。 必要な値を検索す る と き は、 GetSeriesStyleSymbolValue を呼び出す グ ラ フ のデー タ の保存 PowerBuilder 以下の メ ソ ッ ド を使用 し て、 グ ラ フ か ら デー タ を保存 で き ます。 表 5-3: グ ラ フか ら デー タ を保存する ための PowerBuilder メ ソ ッ ド メソッド Clipboard SaveAs 動作内容 特定の ビ ッ ト マ ッ プ イ メ ージ を ク リ ッ プボー ド に コ ピー する 基にな る グ ラ フ内のデー タ を ク リ ッ プボー ド ま たは さ ま ざ ま な形式の フ ァ イ ルに保存する グ ラ フ の画像を、 ク リ ッ プボー ド に保存す る こ と はで き ますが、 フ ァ イ ルにデー タ を保存す る こ と はで き ません。 フ ァ イ ル シ ス テ ムへの書 き 込みは、 Active X コ ン ト ロ ールのセ キ ュ リ テ ィ 違反 と な り ます。 Web ActiveX 表 5-4: グ ラ フか ら デー タ を保存する ための Web Active X メ ソ ッ ド メソッド Clipboard デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 動作内容 特定 の ビ ッ ト マ ッ プ イ メ ー ジ を ク リ ッ プ ボ ー ド に コ ピーす る 114 第5章 グ ラ フの操作 色、 模様、 そのほかのデー タ の修正 PowerBuilder 以下の メ ソ ッ ド を使 っ て、 グ ラ フ 内のデー タ の表示方 法を修正で き ます。 表 5-5: デー タ の表示方法を修正する ための PowerBuilder メ ソ ッ ド メソッド ResetDataColors SetDataLabelling SetDataStyle SetDataTransparency SetSeriesLabelling SetSeriesStyle 動作内容 指定デー タ ポ イ ン ト の色を リ セ ッ ト する DirectX 3D グ ラ フ内のデー タ ラ ベルの表示設定を指 定す る 指定デー タ ポ イ ン ト の色や模様な ど の表示関係のプ ロ パテ ィ を設定す る DirectX 3D グ ラ フ内のデー タ ポ イ ン ト の透明度パー セ ン テージ を設定す る DirectX 3D グ ラ フ 内の系列 ラ ベルの表示設定を指定 する 系列の色や模様な ど の表示関係のプ ロ パテ ィ を設定 する SetSeriesTransparenc DirectX 3D グ ラ フ 内の系列の透明度パーセ ン テージ y を設定す る 以下の メ ソ ッ ド を使っ て、 グ ラ フ内のデー タ の表示方法 を修正 し ます。 Web ActiveX 表 5-6: デー タ の表示方法を修正する ための Web ActiveX メ ソ ッ ド メソッド ResetDataColors SetDataColor SetDataFill SetDataLine SetDataPieExplode SetDataSymbol SetSeriesColor SetSeriesFill SetSeriesLine SetSeriesOverlay SetSeriesSymbol デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 動作内容 指定デー タ ポ イ ン ト の色を リ セ ッ ト する 指定デー タ ポ イ ン ト の色を設定する 指定デー タ ポ イ ン ト の模様を設定する 指定デー タ ポ イ ン ト の線種 と 線幅を設定する 円グ ラ フ の一片が切 り 離 さ れて突出す る 指定デー タ ポ イ ン ト のシ ン ボルを設定する 指定系列の色を設定す る 指定系列の模様を設定す る 指定系列で使用す る 線種 と 線幅を設定す る グ ラ フ の系列がオーバーレ イ か ど う か (線がほかの グ ラ フ の種類の上に表示 さ れてい る か ど う か) を指 定す る 指定系列のシ ン ボルを設定す る 115 第5章 グ ラ フの操作 グ ラ フ メ ソ ッ ド の使い方 デー タ ア ク セ ス メ ソ ッ ド は、 グ ラ フ を作成 し 、 デー タ を表示 し た後で 呼び出 し ま す。 一部の グ ラ フ (ページ内のデー タ を 表示す る グ ラ フ、 グループ化 さ れたデー タ を表示す る グ ラ フ な ど) はい っ たん破棄 さ れ、 ユーザがデー タ のページ を進め る につれて内部的に再作成 さ れ ま す。 グ ラ フ の表示方法 (系列の色な ど) を変更 し て も 、 グ ラ フ が再作成 さ れた と き には、 その変更内容は失われ ます。 グ ラ フ 作成時の イ ベン ト グ ラ フ が作成 さ れてデー タ が表示 さ れた と き に、 必ずデー タ ア ク セ ス メ ソ ッ ド が起動 さ れ る よ う にす る には、 グ ラ フ が作成 さ れた と き に発 生す る イ ベン ト の コ ー ド で、 デー タ ア ク セ ス メ ソ ッ ド を呼び出 し ま す。 イ ベン ト は次の と お り です。 イ ベ ン ト ID pbm_dwngraphcreate。 こ れは、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールのユーザ イ ベ ン ト に割 り 当て る こ と が で き る (後述) • PowerBuilder • Web ActiveX onGraphCreate イ ベン ト グ ラ フ作成 イ ベン ト が発生す る タ イ ミ ン グは、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールに よ っ て グ ラ フ が作成 さ れてデー タ が与え ら れた後、 そのグ ラ フ が表示 さ れ る 前です。 こ の イ ベン ト で グ ラ フ内のデー タ にア ク セ スすれば、 現行のデー タ に確実にア ク セ ス し 、 デー タ を希望どお り に 表示で き ます。 PowerBuilder の イ ベン ト ID pbm_dwngraphcreate は、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールのユーザ イ ベン ト に割 り 当て る こ と がで き ます。 PowerBuilder ユーザ イ ベン ト の設定 v デー タ ウ ィ ン ド ウ コ ン ト ロール内のグ ラ フのデー タ プ ロパテ ィ にア ク セスす るには 1 デー タ ウ ィ ン ド ウ コ ン ト ロ ールを ウ ィ ン ド ウ 内ま たはユーザ オ ブジ ェ ク ト 内に配置 し 、 それ を グ ラ フ が入っ てい る デー タ ウ ィ ン ド ウ オブジ ェ ク ト に関連付け ます。 次に、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールに対 し て、 そのデー タ ウ ィ ン ド ウ コ ン ト ロ ール内にグ ラ フ が作成ま たは変更 さ れた と き に発 生 さ せ る ユーザ イ ベン ト を作成 し ます。 2 メ ニ ュ ー バーか ら [挿入| イ ベン ト ] を選択 し ます。 ス ク リ プ ト ビ ュ ーが表示 さ れ ます。 こ の ビ ュ ーには、 新 し い イ ベ ン ト を追加す る ためのプ ロ ト タ イ プ フ ィ ール ド が含まれ ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 116 第5章 3 グ ラ フの操作 プ ロ ト タ イ プ ウ ィ ン ド ウ の 1 番目の ド ロ ッ プダ ウ ン リ ス ト でデー タ ウ ィ ン ド ウ コ ン ト ロ ールを選択 し ます。 2 番目の ド ロ ッ プダ ウ ン リ ス ト に も 既存のデー タ ウ ィ ン ド ウ イ ベ ン ト プ ロ ト タ イ プが表示 さ れた ら 、 リ ス ト の先頭に ス ク ロ ール し て移動 し 、 [(新規 イ ベン ト )] を選択す る か、 メ ニ ュ ー バーか ら も う 一度 [挿入| イ ベン ト ] を選択 し ます。 4 作成す る イ ベン ト に名前を付け ます。 こ こ では GraphCreate と し ます。 5 イ ベン ト ID と し て pbm_dwngraphcreate を選択 し ます。 6 [OK] ボ タ ン を選択 し て、 新 し いユーザ イ ベン ト を保存 し ます。 7 新 し い GraphCreate イ ベン ト に対 し て、 グ ラ フ のデー タ にア ク セ ス す る ス ク リ プ ト を記述 し ます。 GraphCreate イ ベン ト でデー タ ア ク セ ス メ ソ ッ ド を呼び出す こ と に よ っ て、 デー タ ウ ィ ン ド ウ 内の グ ラ フ が作成 ま たは変更 さ れ る たびに、 必ずデー タ ア ク セ ス が発生す る こ と にな り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 117 第5章 例 グ ラ フの操作 PowerBuilder 次のス テート メ ン ト は、 データ ウ ィ ン ド ウ コ ン ト ロ ール dw_report 内にある グラ フ gr_quarter の系列 Q1 の前景 (塗 り つぶ し ) 色を 黒に設定し ま す。こ のス テート メ ン ト は、イ ベン ト ID pbm_dwngraphcreate に関連付けた GraphCreate イ ベン ト に記述し ま す。 dw_report.SetSeriesStyle("gr_quarter", "Q1", & foreground!, 0) 次 の ス テ ー ト メ ン ト は、 ウ ィ ン ド ウ 内 に あ る グ ラ フ gr_sale の系列 Stellar が持つ 2 番目のデー タ ポ イ ン ト の前景 (塗 り つぶ し ) 色を赤に 変更 し ます。 こ の ス テー ト メ ン ト は、 あ ら ゆ る イ ベン ト の ス ク リ プ ト で使用で き ます。 int SeriesNum // 系列番号を取得 し ます。 SeriesNum = gr_sale.FindSeries("Stellar") // 2 番目のデー タ ポ イ ン ト の色を赤に変更 し ます。 gr_sale.SetDataStyle(SeriesNum, 2, foreground!, 255) 次の ス テー ト メ ン ト は、 デー タ コ ン ト ロ ール dw_report 内にあ る グ ラ フ gr_quarter の系列の 1 つの前景 (塗 り つぶ し ) 色を黒 に設定 し ます。 こ の ス テー ト メ ン ト は、 onGraphCreate イ ベン ト に記述 し ます。 Web ActiveX dw_report.SetSeriesStyleColor("gr_quarter", 1, 0, 0); 詳細情報 グ ラ フ のデー タ ア ク セ ス メ ソ ッ ド についての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 PowerBuilder ユーザ イ ベン ト についての詳細は、PowerBuilder の 『ユー ザーズ ガ イ ド 』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 118 第5章 グ ラ フの操作 ポ イ ン ト ア ン ド ク リ ッ ク の使い方 ユーザは、 実行時にグ ラ フ を ク リ ッ ク で き ます。 デー タ ウ ィ ン ド ウ コ ン ト ロ ー ル に は、 ク リ ッ ク さ れ た 対 象 に 関 す る 情 報 を 格 納 す る ObjectAtPointer メ ソ ッ ド があ り ます。マ ウ ス イ ベン ト では、こ の メ ソ ッ ド を さ ま ざ ま な方法で使用で き ま す。 た と えば、 ObjectAtPointer 情報 を使用 し てほかのグ ラ フ メ ソ ッ ド を呼び出 し 、 ク リ ッ ク し たデー タ ポ イ ン ト の値を ユーザに知 ら せ る こ と がで き ます。 こ の節では、 その方 法について説明 し ます。 マウス イ ベ ン ト と グラ フ ユーザがグ ラ フ を ク リ ッ ク し た と き にア ク シ ョ ン が起動 さ れ る よ う に す る には、 以下の よ う に し ます。 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの Clicked ス ク リ プ ト を記述す る • PowerBuilder • Web ActiveX MouseDown ま たは ButtonClick イ ベン ト の コ ー ド を 記述す る イ ベン ト の コ ー ド の最初の ス テー ト メ ン ト で、 ObjectAtPointer を呼び 出す必要があ り ます。 ObjectAtPointer の 使い方 ObjectAtPointer は、 PowerBuilder と Web ActiveX では動作が異な り ま す。 PowerBuilder ObjectAtPointer の構文は次の と お り です。 DataWindowName.ObjectAtPointer ( "graphName", seriesNumber, dataNumber ) ObjectAtPointer の機能は以下の と お り です。 • ユーザが ク リ ッ ク し たオブジ ェ ク ト の種類を返す オブジ ェ ク ト は、 grObjectType カ タ ロ グ データ 値で確認し ます。 た と えば、ユーザがデータ ポ イ ン ト を ク リ ッ ク する と 、ObjectAtPointer は TypeData! を 返 し ま す。 グ ラ フ の タ イ ト ルを ク リ ッ ク し た場合、 ObjectAtPointer は TypeTitle! を返し ます。 オブジ ェ ク ト 値の一覧については、『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マ ニ ュ ア ル の 定 数 に 関 す る 章 を 参 照 し て く だ さ い。 PowerBuilder では、 オブ ジ ェ ク ト ブ ラ ウ ザ を 開い て、 [カ タ ロ グ デー タ 型] タ ブ を ク リ ッ ク す る こ と も で き ます。 • ポ イ ン タ が置かれた系列の番号を seriesNumber 変数に格納する ( こ れは参照渡 し さ れ る 引数) • デー タ ポ イ ン ト の番号を dataNumber 変数に格納す る ( こ れ も 参照 渡 し さ れ る 引数) デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 119 第5章 グ ラ フの操作 2 つの対応 メ ソ ッ ド で ObjectAtPointer を使用 し て、 すべ ての情報を取得 し ます。 ObjectAtPointer の構文は次の と お り です。 Web ActiveX DataWindowName.ObjectAtPointer ( "graphName" ) 情報を取得す る には、 次の処理を行い ます。 1 ObjectAtPointer を呼び出し ます。 ObjectAtPointer を呼び出す と 、 ユー ザが ク リ ッ ク し たオブジ ェ ク ト の種類が返さ れます。 オブジ ェ ク ト の種類は番号で区別 さ れ ま す。 た と えば、 ユーザが 系列を ク リ ッ ク す る と 、 ObjectAtPointer は 1 を返 し ます。 グ ラ フ の タ イ ト ルを ク リ ッ ク す る と 、 4 を返 し ます。 各グ ラ フ 要素 を表す値の一覧については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス 』 マニ ュ アルの定数に関す る 章を参照 し て く だ さ い。 2 ObjectAtPointerSeries を呼び出 し ます。 ObjectAtPointerSeries を呼び 出す と 、 ポ イ ン タ の位置の系列の番号が返 さ れます。 3 ObjectAtPointerDataPoint を呼び出 し ます。 ObjectAtPointerDataPoint を呼び出す と 、 ポ イ ン タ の位置のデー タ ポ イ ン ト の番号が返 さ れ ます。 以上の 2 つの メ ソ ッ ド は、 ObjectAtPointer の後に呼び出 さ な ければな り ません。 例 デー タ ウ ィ ン ド ウ コ ン ト ロ ール dw_sales に、 gr_sales と い う 名前のグ ラ フ が あ る と し ま す。 コ ン ト ロ ールの MouseDown イ ベン ト の コ ー ド では、 次の よ う な メ ッ セージ ボ ッ ク ス を表示 し ます。 • ユーザが系列を ク リ ッ ク する と 、 つま り ObjectAtPointer が 1 を返す と 、 ク リ ッ ク し た系列の名前が メ ッ セージ ボ ッ ク ス に表示 さ れ ま す。 こ の例では、 GetSeriesName メ ソ ッ ド を使っ て、 ObjectAtPointer に よ っ て格納 さ れてい る系列番号に対応する系列名を取得し ます。 • ユーザがデータ ポ イ ン ト を ク リ ッ ク する と 、 つま り ObjectAtPointer が 2 を返す と 、 ク リ ッ ク さ れた系列の名前 と 値の リ ス ト が メ ッ セー ジ ボ ッ ク スに表示 さ れます。 こ の例では、GetDataNumber を使っ て、 デー タ の系列番号 と デー タ ポ イ ン ト 番号に対応す る デー タ 値を取 得し ます。 PowerBuilder こ れは Clicked イ ベン ト の コ ー ド です。 int SeriesNum, DataNum double Value grObjectType ObjectType string SeriesName, ValueAsString string GraphName GraphName = "gr_sale" デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 120 第5章 グ ラ フの操作 // 次の メ ソ ッ ド は、 ク リ ッ ク さ れた系列の番号を // SeriesNum に格納 し 、 ク リ ッ ク さ れたデー タ ポ イ ン ト の番号を // DataNum に格納 し ます。 ObjectType = & dw_printer.ObjectAtPointer (GraphName, & SeriesNum, DataNum) IF ObjectType = TypeSeries! THEN SeriesName = & dw_printer.SeriesName (GraphName, SeriesNum) MessageBox(" グ ラ フ ", & SeriesName + " 系列がク リ ッ ク さ れま し た。 ") ELSEIF ObjectType = TypeData! THEN Value = dw_printer.GetData (GraphName, & SeriesNum, DataNum) ValueAsString = String(Value) MessageBox(" グ ラ フ ", & dw_printer.SeriesName (GraphName, & SeriesNum) + " の値は " + ValueAsString + " です。") END IF Web ActiveX こ れは MouseDown イ ベン ト の コ ー ド です。 number SeriesNum, DataNum, ObjectType, Success, Value; string SeriesName, GraphName; GraphName = "gr_sales"; ObjectType = dw_sales.GrObjectAtPointer(GraphName); if (ObjectType == 1) { SeriesName = dw_sales.GetSeriesName(GraphName, SeriesNum); alert(SeriesName + " 系列を ク リ ッ ク し ま し た。 ") } else { if (ObjectType == 2) { Success = dw_sales.GetDataNumber(GraphName, SeriesNum, DataNum, 1); if (Success == 1) { Value = GetDataNumberVariable( ); デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 121 第5章 グ ラ フの操作 alert(dw_sales.GetSeriesName(GraphName, SeriesNum) +" 値は " + Value + " です。") } } } デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 122 第 2 部 Web ア プ リ ケーシ ョ ン での デー タ ウ ィ ン ド ウの使い方 第 2 部は Web デー タ ウ ィ ン ド ウお よびデー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX に関する情報を含んでいます。 以降の章で説明 さ れてい る テ ク ノ ロ ジは、ASP.NET に配布 す る デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト お よ び コ ン ト ロ ール では使用 さ れません。 .NET Web フ ォ ーム タ ーゲ ッ ト の詳 細については、 HTML ヘルプの 『ア プ リ ケーシ ョ ン と コ ン ポーネ ン ト の .NET への配布』 マ ニ ュ アルを参照 し て く だ さ い。 第 6 章 Web デー タ ウ ィ ン ド ウの使い方 こ の章について こ の章では、 デー タ ベー ス を 使 っ た Web ア プ リ ケーシ ョ ン での Web デー タ ウ ィ ン ド ウ の使い方について説明 し ます。 特に こ こ で は、 XML Web デー タ ウ ィ ン ド ウ を中心に説明 し ま す。 XML Web デー タ ウ ィ ン ド ウ はす ぐ れたパ フ ォ ーマ ン ス を発揮す る だけでな く 、 デ フ ォ ル ト の生成過程で カ ス タ ム テ ン プ レ ー ト を適用 し て、 生成 さ れ る デー タ ウ ィ ン ド ウ を カ ス タ マ イ ズ す る こ と も で き ま す。 内容 項目 Web デー タ ウ ィ ン ド ウ と は XML Web デー タ ウ ィ ン ド ウ の使い方 Web デー タ ウ ィ ン ド ウ 用のデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の設計 デー タ ベース接続の設定 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の コ ン ポーネ ン ト サーバへ の配布 ページ 125 131 139 ク ラ イ ア ン ト サ イ ド ス ク リ プ ト の記述 生成 さ れ る Web デー タ ウ ィ ン ド ウ のカ ス タ マ イ ズ 170 172 163 167 Web デー タ ウ ィ ン ド ウ と は Web デー タ ウ ィ ン ド ウ は、 Web アプ リ ケーシ ョ ン で使用す る ため に生成 さ れ る デー タ ウ ィ ン ド ウ です。 こ の環境では、 Web ク ラ イ ア ン ト 上に PowerBuilder DLL やプ ラ グ イ ン を 必要 と す る こ と な く 、 PowerBuilder デー タ ウ ィ ン ド ウ のデー タ 操作機能、 表示機能、 お よ び ス ク リ プ ト 機能の大部分 を 提供す る シ ン ク ラ イ ア ン ト ソ リ ュ ー シ ョ ン を 実現で き ま す。 Web ブ ラ ウ ザに表示 さ れ る 際の デー タ ウ ィ ン ド ウ の外観は、 デー タ ウ ィ ン ド ウ ペ イ ン タ での設計 時の外観 と ほ と ん ど同 じ です。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 125 第6章 Web デー タ ウ ィ ン ド ウの使い方 JavaScript キーワー ド Web に配布す る デー タ ウ ィ ン ド ウ コ ン ト ロ ールの フ ィ ール ド あ る い は区域に名前を付け る ために、JavaScript 予約語を使用す る こ と はで き ません。 予約語の一覧は、 Sun Microsystems Web のサイ ト http://docs.sun. com/source/816-6410-10/keywords.htm で入手で き ます。 Web デー タ ウ ィ ン ド ウの種類 Web デー タ ウ ィ ン ド ウ の機能は、 以下の 3 種類の Web デー タ ウ ィ ン ド ウ 実装を含みます。 XML (内容) 、 XSLT (レ イ ア ウ ト ) 、 CSS (表示様式) の 3 つに分けて記述 し 、 XHTML に変換 し て利用 • XML Web デー タ ウ ィ ン ド ウ • XHTML Web デー タ ウ ィ ン ド ウ • HTML Web デー タ ウ ィ ン ド ウ XHTML の内容のみ HTML の内容のみ [HTML 生成] プ ロパテ ィ ページの名称変更 Web デー タ ウ ィ ン ド ウ は XML、 XHTML、 お よ び HTML での生成が可 能なため、 デー タ ウ ィ ン ド ウ プ ロ パテ ィ ビ ュ ーの [HTML 生成] プ ロ パテ ィ ページの名称が [Web 生成] プ ロ パテ ィ ページに変更 さ れま し た。 XHTML と HTML に共通のプ ロ パテ ィ と 、 XML、 XHTML、 HTML のそれぞれに固有のプ ロ パテ ィ を こ こ で設定で き ます。 Web 生成 プ ロ パテ ィ の設定についての詳細は、 146 ページの 「Web デー タ ウ ィ ン ド ウ の Web 生成プ ロ パテ ィ の設定」 を参照 し て く だ さ い。 Web デー タ ウ ィ ン ド ウの使い方 3 種類の Web デー タ ウ ィ ン ド ウ の使い方はすべて同 じ です。 XML Web デー タ ウ ィ ン ド ウ の使い方についての詳細は、131 ページの「XML Web デー タ ウ ィ ン ド ウ の使い方」 を参照 し て く だ さ い。 Web デー タ ウ ィ ン ド ウの仕組み Web デー タ ウ ィ ン ド ウ で は、 ト ラ ン ザ ク シ ョ ン サーバ (EAServer、 COM+ な ど) で動作す る コ ン ポーネ ン ト を使用 し ます。 こ の ト ラ ン ザ ク シ ョ ン サーバは、 動的ページ サーバ (IIS の Microsoft Active Server Pages、 Tomcat の Java Server Pages な ど) と 連動 し 、 Web サーバを介 し て Web ク ラ イ ア ン ト と 通信 し ます。 Web ク ラ イ ア ン ト に PowerBuilder DLL ま たはプ ラ グ イ ンは必要あ り ません。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 126 第6章 Web デー タ ウ ィ ン ド ウの使い方 組み込み Web デー タ ウ ィ ン ド ウ コ ン ポーネ ン ト は、 EAServer 6.x にプ リ イ ン ス ト ール さ れ て い る HTMLGenerator115 コ ン ポーネ ン ト です。 こ の コ ン ポーネ ン ト を使っ て、 作成す る Web デー タ ウ ィ ン ド ウ の種類 に応 じ 、(1) JavaScript と HTML、(2) JavaScript と XHTML、(3) JavaScript と XML、 XSLT、 CSS、 お よ び XHTML、 のいずれか を生成 し ます。 独 自に開発 し た カ ス タ ム コ ン ポーネ ン ト も 使用で き ます。 詳細について は、 129 ページの 「Web デー タ ウ ィ ン ド ウ のサーバ コ ン ポーネ ン ト と ク ラ イ ア ン ト コ ン ト ロ ール」 を参照 し て く だ さ い。 Web デー タ ウ ィ ン ド ウ タ ーゲ ッ ト の配布時に イ ン ス タ ン ス プー リ ングを無 効にする イ ン ス タ ン ス プー リ ン グ を使用す る と 、 ト ラ ンザ ク シ ョ ン サーバの ク ラ イ ア ン ト は コ ン ポーネ ン ト の イ ン ス タ ン ス を再利用で き る よ う にな り 、 コ ン ポーネ ン ト イ ン ス タ ン ス を繰 り 返 し 割 り 当て る こ と が原因で 発生す る リ ソ ー ス 漏れが解消 さ れ、 サーバのパ フ ォ ーマ ン ス が向上 し ます。 EAServer の HTMLGenerator115 コ ン ポーネ ン ト では、 イ ン ス タ ン ス プー リ ン グがデフ ォ ル ト でオ ンにな っ てい ます。 そのため、 次に コ ン ポーネ ン ト を使用す る タ ーゲ ッ ト を配布す る には、 サーバを停止 し 、 再起動 し なければな り ません。 開発中は イ ン ス タ ン ス プー リ ン グ を オ フ に し てお く と よ いで し ょ う 。 コ ン ポーネ ン ト のプール プ ロ パ テ ィ の変更については、 サーバのマニ ュ アルを参照 し て く だ さ い。 EAServer では、 EAServer Manager を 使用する か、 \EAServer\Repository\Component\DataWindow ディ レ ク ト リ にある HTMLGenerator115.props フ ァ イ ルの com.sybase.jaguar.component.pooling プ ロ パティ を false に設定し て、 イ ン ス タ ン ス プーリ ン グを 無効にでき ま す。 実働時には、 コ ン ポーネン ト の pooling プロ パティ は true に設定し て く ださ い。 ユーザがページ を要求 し た場合の処理 図 6-1 で は、 ユーザが XHTML Web デー タ ウ ィ ン ド ウ ま た は HTML Web デー タ ウ ィ ン ド ウ を含む Web ページ に ア ク セ ス し た場合の処理 を 8 段階の手順に分けて示 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 127 第6章 Web デー タ ウ ィ ン ド ウの使い方 図 6-1: Web デー タ ウ ィ ン ド ウの仕組み 図の番号 1 か ら 8 は、 開発が完了 し た Web デー タ ウ ィ ン ド ウ が コ ン ポーネ ン ト サーバに配布 さ れた状態で、 ユーザが こ のページにア ク セ ス し た と き に発生す る 各 イ ベン ト に対応 し てい ます。 1 Web ブ ラ ウ ザで、 ユーザがページの URL を要求 し ます。 2 Web サーバは、 その要求をページ サーバに渡 し ます。 ページ サー バは、 要求 さ れたページのテ ン プ レ ー ト を見つけ、 テ ン プ レ ー ト 内のサーバ サ イ ド ス ク リ プ ト を実行 し ます。 3 サーバ サ イ ド ス ク リ プ ト が実行 さ れ る と 、 ( ト ラ ンザ ク シ ョ ン) サーバ コ ン ポーネ ン ト と の接続が確立 さ れ、 サーバ コ ン ポーネ ン ト にデー タ ウ ィ ン ド ウ と デー タ ベー ス 接続に関す る 情報が渡 さ れ ます。 4 サーバ コ ン ポーネ ン ト 上の メ ソ ッ ド に よ っ て、 デー タ ウ ィ ン ド ウ に必要なデー タ がデー タ ベー ス か ら 読み出 さ れ、 デー タ ウ ィ ン ド ウ 定義、 デー タ 、 お よ び状態が JavaScript と XHTML ま たは HTML に変換 さ れ ます。 5 サーバ コ ン ポーネ ン ト が JavaScript と XHTML ま たは HTML を ページ サーバに返 し ます。 6 ページ サーバは、 要求 さ れた Web ページのサーバ サ イ ド ス ク リ プ ト を生成 さ れた JavaScript と XHTML ま たは HTML で置 き 換え、 そのページ を Web サーバを介 し て Web ブ ラ ウ ザに返 し ます。 7 ユーザは、 デー タ ウ ィ ン ド ウ で対話操作を行っ て、 次のページ を 要求 し た り デー タ を更新 し た り し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 128 第6章 8 Web デー タ ウ ィ ン ド ウの使い方 Web サーバは、 ア ク シ ョ ン パ ラ メ ー タ が追加 さ れた URL をペー ジ サーバに渡 し ます。 Web デー タ ウ ィ ン ド ウのサーバ コ ンポーネ ン ト と ク ラ イ ア ン ト コ ン ト ロール Web デー タ ウ ィ ン ド ウ には、サーバ コ ン ポーネ ン ト と ク ラ イ ア ン ト コ ン ト ロ ール と い う 主要な 2 つの コ ン ポーネ ン ト があ り ます。 Web デー タ ウ ィ ン ド ウのサーバ コ ンポー ネン ト Web データ ウ ィ ン ド ウ のサーバ コ ン ポーネ ン ト は、 デー タ ベース か ら データ を読み出し 、そのデータ と データ ウ ィ ン ド ウ オブジ ェ ク ト の定義 を、 JavaScript、 およ び XSLT、 XHTML、 HTML のいずれかの形で表し 、 ページ サーバに返し ます。 サーバ コ ンポーネン ト と は、 PowerBuilder の カ ス タ ム ク ラ ス のユーザ オブジ ェ ク ト です。 こ のユーザ オブジ ェ ク ト は、 データ ス ト ア を使用し て検索 と 更新を行い、 EAServer コ ンポーネン ト と し て配布 さ れます。 PowerBuilder で提供 さ れ る汎用コ ンポーネン ト ま たはカ ス タ ム コ ンポーネン ト を使用で き ます。 汎用 EAServer コ ン ポーネ ン ト であ る HTMLGenerator115 は、 EAServer の DataWindow と い う パ ッ ケージにプ リ イ ン ス ト ール さ れてい ます。 旧バージ ョ ンの汎用 コ ンポーネ ン ト の使い方 旧バー ジ ョ ン の汎用 HTMLGenerator コ ン ポ ー ネ ン ト も EAServer の DataWindow パ ッ ケージに イ ン ス ト ール さ れてい ま す。 EAServer は複 数の PowerBuilder VM を サポー ト し てい る ので、 HTMLGenerator を使 用す る 旧バージ ョ ン の Web デー タ ウ ィ ン ド ウ アプ リ ケーシ ョ ン を実 行で き ます。 汎用 コ ン ポーネ ン ト には、 Web ページ テ ン プ レー ト で呼び出 し て コ ン ポーネ ン ト を イ ン ス タ ン ス化お よ び設定す る ための メ ソ ッ ド があ り ま す。 ま た、 汎用 コ ン ポーネ ン ト は、 PowerBuilder デー タ ウ ィ ン ド ウ コ ン ト ロ ールで使用可能 な ほ と ん ど の メ ソ ッ ド を 備 え て い ま す。 Web デー タ ウ ィ ン ド ウ を初めて使用す る と き には、 汎用 コ ン ポーネ ン ト を 使用す る こ と をお勧め し ます。 その後、 汎用 EAServer コ ン ポーネ ン ト イ ン タ フ ェ ー ス の メ ソ ッ ド や、 コ ン ポーネ ン ト 用に設計 し た メ ソ ッ ド のみを使用す る カ ス タ ム コ ン ポーネ ン ト を構築 し て配布で き ます。 詳 細については、 206 ページの 「カ ス タ ム サーバ コ ン ポーネ ン ト の使い 方」 を参照 し て く だ さ い。 サーバ コ ンポーネ ン ト およびプ ラ ッ ト フ ォ ームの種類 次の表に、 全種類の Web デー タ ウ ィ ン ド ウ サーバ コ ン ポーネ ン ト と 、 サポー ト さ れてい る プ ラ ッ ト フ ォ ーム を示 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 129 第6章 Web デー タ ウ ィ ン ド ウの使い方 表 6-1: Web デー タ ウ ィ ン ド ウ サーバ コ ンポーネ ン ト と プ ラ ッ ト フ ォ ーム Web デー タ ウィ ンドウ サーバ コ ン ポーネ ン ト 汎用 Web デー タ ウ ィ ン ド ウ ク ラ イアン ト コ ン ト ロール プ ラ ッ ト フ ォ ーム (サーバ コ ンポーネ ン ト 名) EAServer (DataWindow::HTMLGenerator115) コ ン テナ (複数のデー タウィンドウ 定義を含め る こ と が可能) EAServer (PackageName::ComponentName、 汎用 DataWindow::HTMLGenerator115 イ ン タ フ ェース を使用す る ) カ ス タ ム (ハ イブ リ ッ ド) EAServer (PackageName::ComponentName、 汎用 DataWindow::HTMLGenerator115 イ ン タ フ ェース を使用す る ) カスタム (ユ ー ザ デ ザ イ ン) EAServer (PackageName::ComponentName) 説明 構築済み EAServer コ ン ポーネ ン ト 。 ス タ ブの 生成お よ び コ ンパ イ ル は不要 Web DW コ ン テナ プ ロ ジ ェ ク ト ウ ィ ザー ド を 使 用 し て 配 布 す る。 サーバへの呼び出 し 回 数を減 ら す こ と に よ り パ フ ォ ーマ ン ス が向上 す る 。 ス タ ブ の生成お よ び コ ンパ イ ルは不要 汎用 コ ン ポーネ ン ト の 柔 軟 性 が 向 上 す る。 PowerBuilder オ ブ ジ ェ ク ト ま た はプ ロ ジ ェ ク ト ウ ィ ザー ド を使用 し て 構 築 と 配 布 が 可 能。 汎用 メ ソ ッ ド も 使用可 能 パフ ォーマ ン ス と ス ケ ー ラ ビ リ テ ィ の面で は最善。 不要 な 汎用 メ ソ ッ ドがク ラ イアン ト にダ ウ ン ロ ー ド さ れな い よ う にす る こ と が で きる ク ラ イ ア ン ト サイ ド ス ク リ プ ト の埋め込み Web デー タ ウ ィ ン ド ウ の ク ラ イ ア ン ト コ ン ト ロ ール と は、 (1) JavaScript と XML、 XSLT お よ び CSS、 (2) JavaScript と XHTML、 ま たは (3) JavaScript と HTML です。 こ れ ら は、 サーバ コ ン ポーネ ン ト に よ っ て生成 さ れ、 Web ク ラ イ ア ン ト に返 さ れ る ページに埋め込まれ ます。 Web ページ テ ン プ レー ト に追 加 し て SCRIPT タ グで指定す る ク ラ イ ア ン ト サ イ ド ス ク リ プ ト は、 ク ラ イ ア ン ト コ ン ト ロ ールに JavaScript と し て埋め込ま れます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 130 第6章 Web デー タ ウ ィ ン ド ウの使い方 ク ラ イ ア ン ト コ ン ト ロ ールで使用可能な イ ベ ン ト 、 メ ソ ッ ド 、 デー タ の更新 と 検証、 お よ び新規入力デー タ の表示 書式な ど の機能は省略で き ます。 ク ラ イ ア ン ト サ イ ド の機能を追加す る と 、 そ れ だ け 生成 さ れ る JavaScript の サ イ ズ が 大 き く な り ま す。 JavaScript フ ァ イ ルに記述 さ れた ク ラ イ ア ン ト サ イ ド メ ソ ッ ド を、Web サーバにキ ャ ッ シ ュ す る こ と に よ り 、 Web デー タ ウ ィ ン ド ウ のページ に対 し て生成 さ れ る マー ク ア ッ プのサ イ ズ を小 さ く す る こ と がで き ま す。 ブ ラ ウ ザがキ ャ ッ シ ュ フ ァ イ ルを使用す る よ う に設定 さ れていれ ば、 ク ラ イ ア ン ト マシ ン のパフ ォーマ ン ス も 向上 し ます。 JavaScript キ ャ ッ シ ュ JavaScript キ ャ ッ シ ュ を 使用で き る よ う にす る 方法につい て は、 152 ページの 「Web デー タ ウ ィ ン ド ウ メ ソ ッ ド への JavaScript キ ャ ッ シ ュ の使い方」 を参照 し て く だ さ い。 ク ラ イ ア ン ト サ イ ド のキ ャ ッ シ ュ 機 能、 HTMLGen プ ロ パテ ィ 、 お よ びそのほかの生成プ ロ パテ ィ につい ての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アル を参照 し て く だ さ い。 ク ラ イ ア ン ト サイ ド イ ベン ト の使い方 ク ラ イ ア ン ト コ ン ト ロ ール上で 呼び出 さ れ る イ ベン ト と 、 ク ラ イ ア ン ト コ ン ト ロ ールの一部の メ ソ ッ ド では、 サーバ コ ン ポーネ ン ト がページ を リ ロ ー ド す る 必要がないの で、 通常はサーバ上での処理速度 よ り ク ラ イ ア ン ト 上での処理速度の 方が高速です。 ク ラ イ ア ン ト の機能を有効にす る 方法については、 142 ページの 「Web デー タ ウ ィ ン ド ウ のプ ロ パテ ィ 」 お よ び 198 ページの 「生成内容の制 御」 を参照 し て く だ さ い。 ス ク リ プ ト の記述については、 170 ページ の 「 ク ラ イ ア ン ト サ イ ド ス ク リ プ ト の記述」 を参照 し て く だ さ い。 サーバ コ ン ポーネ ン ト と ク ラ イ ア ン ト コ ン ト ロ ールで使用可能な イ ベン ト と メ ソ ッ ド についての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルあ る いは PowerBuilder のオ ン ラ イ ン ヘルプ を参照 し て く だ さ い。 XML Web デー タ ウ ィ ン ド ウの使い方 こ の節では、 XML、 XSLT、 CSS、 XHTML について簡単に触れ、 その 後、 XML Web デー タ ウ ィ ン ド ウ の機能 と Web アプ リ ケーシ ョ ン での 使い方について説明 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 131 第6章 Web デー タ ウ ィ ン ド ウの使い方 HTML Web デー タ ウ ィ ン ド ウ と XHTML Web デー タ ウ ィ ン ド ウの使い方 HTML Web デー タ ウ ィ ン ド ウ と XHTML Web デー タ ウ ィ ン ド ウ を使 う 手順は、 XML Web デー タ ウ ィ ン ド ウ の使用手順 と 同様です。 唯一の違 いは、 指定す る Web 生成の種類 と 、 設定す る デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト のプ ロ パテ ィ の選択です。 Web アプ リ ケーシ ョ ン で使用す る ために XML Web デー タ ウ ィ ン ド ウ を生成す る には、 デー タ ウ ィ ン ド ウ ペ イ ン タ で使用す る デー タ ウ ィ ン ド ウ オブジ ェ ク ト を作成す る 必要があ り ます。任意の種類の Web デー タ ウ ィ ン ド ウ で使用す る デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を 設計す る 方法については、139 ページの 「Web デー タ ウ ィ ン ド ウ 用のデー タ ウ ィ ン ド ウ オブジ ェ ク ト の設計」 を参照 し て く だ さ い。 XML、 XSLT、 CSS、 および XHTML について HTML は 世界 で 最 も 普及 し て い る マ ー ク ア ッ プ 言語 で す。 た だ し HTML マー ク ア ッ プは表示の制御を目的 と し た も ので、 タ グには何の 情報 も 書 き 込 ま れてい ま せん。 た と えば、 <td>12345</td> と い っ た単 純な内容の要素を含む HTML ド キ ュ メ ン ト を見て も 、 内容が表す も の はわか り ません。 こ の数字はど こ かの町の郵便番号か も し れません し 、 その町の人口か も し れません。 XML ド キ ュ メ ン ト には以下の特徴があ り ます。 • 情報の構成要素すべてを 表すタ グでマーク アッ プさ れた情報を 持つ • 情報のすべての構成要素の関係を モデル化す る • ルー ト 要素 と 呼ばれ る 単一の要素を持つ。 ルー ト 要素は、情報を表 すそのほかの要素を含むツ リ ー構造のルー ト と な る XML ド キ ュ メ ン ト には <zipcode>12345</zipcode> と い う 要素を記述で き 、 zipcode タ グ を見れば 「12345」 が郵便番号だ と わか り ます。 XML ド キ ュ メ ン ト で は 内 容 と 表 示 が 区 別 さ れ、 XSLT (Extensible Stylesheet Language for Transformations) を使用 し て以下の よ う な さ ま ざ ま な表示形式に変換で き ます。 • <td>12345</td> を含む HTML ページ • 郵便番号情報を含む PDF フ ァ イ ル • 携帯電話やポ ケ ッ ト ベルでの郵便番号表示 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 132 第6章 Web デー タ ウ ィ ン ド ウの使い方 XSLT を使用すれば XML ド キ ュ メ ン ト を 別の ド キ ュ メ ン ト に変換で き ま すが、 変換後の形式がやは り XML ド キ ュ メ ン ト で あ る こ と も 少 な く あ り ません。 た と えば、 XHTML (XML 準拠の HTML) で作成 さ れた Web ページ は XML ド キ ュ メ ン ト ですが、 XSLT を 使用す る と 、 XML ド キ ュ メ ン ト を ブ ラ ウ ザでの表示用に ス タ イ ルを整え た XHTML Web ページに変換で き ます。 カ ス ケー ド ス タ イ ル シー ト (CSS) を使用すれば、 ド キ ュ メ ン ト の各 要素に内容の表示方法を定義す る ス タ イ ル規則を適用で き ま す。 CSS で も HTML、 XHTML、 XML ド キ ュ メ ン ト の内容 と 表示を区別で き ま す。 ただ し 、 XSLT は内容の レ イ ア ウ ト を柔軟に変更で き る ので、 こ の点で CSS よ り も す ぐ れてい ます。 XSLT では、 デザ イ ン を変更す る 規則だけではな く 、 必要に応 じ て、 内容の要素を追加、 変更、 削除す る 規則を定義す る こ と も で き ます。 XML の概要については、 PowerBuilder の 『ユーザーズ ガ イ ド 』 マニ ュ アルの XML のエ ク ス ポー ト と イ ン ポー ト に関す る 章の最初の節を参 照 し て く だ さ い。 XML と XSLT についての詳細は、 オ ラ イ リ ー ジ ャ パン の書籍、 『入門 XML』 お よ び XSLT に関す る 入門書を参照 し て く だ さ い。 XML Web デー タ ウ ィ ン ド ウの仕組み XML Web デー タ ウ ィ ン ド ウ は、 デー タ ウ ィ ン ド ウ の内容、 レ イ ア ウ ト 、 ス タ イ ルを実行時に個別に生成 し て XHTML に変換 し 、 必要な機 能を備え たデー タ ウ ィ ン ド ウ と し てブ ラ ウ ザに表示 し ます。 XML Web デー タ ウ ィ ン ド ウ の各 コ ン ポーネ ン ト は、 設計時に XHTML エ ク ス ポー ト テ ン プ レ ー ト ビ ュ ーの カ ス タ ム XHTML エ ク ス ポー ト テ ン プ レー ト を使用 し て カ ス タ マ イ ズで き ます。 詳細については、 172 ページの 「生成 さ れ る Web デー タ ウ ィ ン ド ウ のカ ス タ マ イ ズ」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 133 第6章 Web デー タ ウ ィ ン ド ウの使い方 サーバ サイ ド 処理 と ク ラ イ ア ン ト サイ ド 処理 XML Web デー タ ウ ィ ン ド ウ で必要な要素を開発 し て配布 し 、ユーザが こ のデー タ ウ ィ ン ド ウ を含むページの URL を要求す る と 以下の よ う な処理が行われ ます。 サーバ サイ ド 処理 サーバ サ イ ド コ ー ド を使用 し て、 Web デー タ ウ ィ ン ド ウ ジ ェ ネ レー タ が呼び出 さ れ ます。 生成プ ロ セ ス では以下の処理が行われ ます。 1 デフ ォ ル ト の XHTML エ ク ス ポー ト テ ン プ レー ト ま たは作成 し た カ ス タ ム テ ン プ レー ト を使用 し て、 デー タ ウ ィ ン ド ウ の XHTML レ ン ダ リ ン グ を Document Object Model (DOM) ツ リ ーに生成 し ま す。 2 デー タ ウ ィ ン ド ウ 要素の ス タ イ ル情報を持つ CSS ス タ イ ル シー ト を DOM ツ リ ーに生成 し ます。 すべての要素の絶対位置な ど、 で き る 限 り ス タ イ ル規則を CSS で 生成すれば、 ス タ イ ル シー ト は一度だけダ ウ ン ロ ー ド し て キ ャ ッ シ ュ さ れ る ため、 ページのダ ウ ン ロ ー ド 速度を向上で き ます。 3 コ ン ト ロ ール オブジ ェ ク ト と 行要素の配列を イ ン ス タ ン ス化す る ため、 ク ラ イ ア ン ト サ イ ド JavaScript フ ァ イ ルを生成 し ます。 静的フ ァ イ ルに こ の ク ラ イ ア ン ト サ イ ド JavaScript フ ァ イ ルの多 く を生成す る こ と で、 パ フ ォ ーマ ン ス を向上 さ せ る こ と がで き ま す。静的 JavaScript フ ァ イ ルの作成 と 配布方法については、152 ペー ジの 「Web デー タ ウ ィ ン ド ウ メ ソ ッ ド への JavaScript キ ャ ッ シ ュ の使い方」 を参照 し て く だ さ い。 4 XHTML DOM ツ リ ーか ら XML (デー タ ウ ィ ン ド ウ の内容) お よ び XSLT (デー タ ウ ィ ン ド ウ の レ イ ア ウ ト ) に逆変換 し ます。 XSLT はページの構造レ イ ア ウ ト も 作成す る ため、通信時の帯域使 用を減少 さ せ ま す。 ま た処理の一部を ク ラ イ ア ン ト 側に任せ る の で、 サーバ側の負荷を軽減す る 効果 も あ り ます。 5 ク ラ イ ア ン ト サイ ド 処理 ク ラ イ ア ン ト 側で必要 な 機能 を 備 え た デー タ ウ ィ ン ド ウ を XHTML 形式でブ ラ ウ ザに表示す る ための、明示的な変換を行 う 短 い JavaScript を生成 し ます。 XML Web デー タ ウ ィ ン ド ウ を含む Web ページにア ク セ スす る と 、 ク ラ イ ア ン ト のブ ラ ウ ザでは以下の処理が行われ ます。 1 ソ ース XML フ ァ イ ル (ページのデー タ ウ ィ ン ド ウ 内容) と XSLT ス タ イ ル シー ト を ダ ウ ン ロ ー ド し 、ロ ーカルにキ ャ ッ シ ュ し ます。 2 Microsoft ま たは Netscape の組み込み XSLT プ ロ セ ッ サ を使用 し て 変換を実行 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 134 第6章 Web デー タ ウ ィ ン ド ウの使い方 3 生成 し た XHTML をページの <DIV> セ ク シ ョ ンに出力 し ます。 4 ブ ラ ウ ザ表示用の CSS ス タ イ ル シー ト を ダ ウ ン ロ ー ド し て キ ャ ッ シ ュ し 、 適用 し ます。 5 JavaScript フ ァ イ ルを ダ ウ ン ロ ー ド し て キ ャ ッ シ ュ し ます。 6 ユーザが指定 し た操作 (HTTP Get や HTTP response) の後、 デー タ ウ ィ ン ド ウ ページの更新用に XML フ ァ イ ルお よ び JavaScript 行 オブジ ェ ク ト フ ァ イ ルを再生成 し てダ ウ ン ロ ー ド し ます。 XHTML Web ページの利点 HTML は構文規則が複雑な ため、 ブ ラ ウ ザ側で余分な処理を し なけれ ばな り ませんが、XHTML Web ページはその必要がないために、HTML ページ よ り も ブ ラ ウ ザで の表示が高速です。 XSLT と CSS ス タ イ ル シー ト は一度だけダ ウ ン ロ ー ド し て キ ャ ッ シ ュ さ れ る ため、 通信時の 帯域使用が減少 し 、 デー タ ウ ィ ン ド ウ のダ ウ ン ロ ー ド 速度が向上 し て Web ユーザに と っ ては利点 と な り ます。 ま た企業に と っ ては、 W3C 標 準テ ク ノ ロ ジ を 使用す る こ と で、 効率、 ス ケー ラ ビ リ テ ィ 、 拡張性、 利便性が大 き く 向上す る と い う 利点 も あ り ます。 使用する Web デー タ ウ ィ ン ド ウの種類 XML Web デー タ ウ ィ ン ド ウ と XHTML Web デー タ ウ ィ ン ド ウ は、 HTML Web デー タ ウ ィ ン ド ウ の機 能を拡張 し た も のです。 次の表に、 XML Web デー タ ウ ィ ン ド ウ ま たは XHTML Web デー タ ウ ィ ン ド ウ を 使用 し た 方が よ い場合 と 、 HTML Web デー タ ウ ィ ン ド ウ を使用 し た方が よ い場合を示 し ます。 表 6-2: Web デー タ ウ ィ ン ド ウのレ ン ダ リ ング形式の機能 XML XHTML HTML 機能 Yes No Web ペー ジ の業界標準へ の Yes 準拠 Yes No ペ ー ジ を XHTML エ ク ス Yes ポー ト テ ン プ レ ー ト を 使用 し て カ ス タ マ イ ズ可能 Yes No No XSLT シー ト のキ ャ ッ シ ュ CSS ス タ イ ルシー ト の キャ ッシュ 共 通 JavaScript フ ァ イ ル の キャ ッシュ 大量のペー ジ デー タ を 最 も 効果的に処理 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド Yes Yes No Yes Yes Yes Yes No No 135 第6章 機能 ペー ジ ン グ お よ び ほ か の ク ラ イ アン ト ア ク シ ョ ンの コ ールバ ッ ク メ カ ニズ ム ペー ジ ン グ お よ び ほ か の ク ラ イ アン ト ア ク シ ョ ンの ク ラ イ アン ト サ イ ド メ カニズ ム ポ ス ト バ ッ ク のない ク ラ イ ア ン ト で グ リ ッ ド デー タ ウ ィ ン ド ウ ペー ジ が ソ ー ト 可能 コ ン ポ ジ ッ ト デー タ ウ イ ン ド ウおよ びネ ス テ ィ ッ ド デー タ ウ ィ ン ド ウ の サ ポ ー ト グ リ ッ ド デー タ ウ ィ ン ド ウ での絶対位置のサポー ト ア ク セシビ リ テ ィ ソ フ ト ウ ェ ア と の互換性 (508 条) Web デー タ ウ ィ ン ド ウの使い方 XML Yes XHTML Yes HTML Yes Yes No No Yes No No No Yes No Yes Yes No No Yes No XML レ ン ダ リ ン グ形式は、 ア ク セ シ ビ リ テ ィ ソ フ ト ウ ェ ア を サポー ト し ません。HTML レ ン ダ リ ン グ形式を使用 し て生成 さ れた HTML の 一部は、 ア ク セシ ビ リ テ ィ ソ フ ト ウ ェ ア をサポー ト し ません。 XML Web デー タ ウ ィ ン ド ウ のキ ャ ッ シ ュ 機能、 帯域使用の軽減、 ク ラ イ ア ン ト サ イ ド ページ ン グ機能に よ り 、 パ フ ォ ーマ ン ス が向上 し ま す。 さ ら に、 XHTML エ ク ス ポー ト テ ン プ レー ト を使用すれば、 XML Web デー タ ウ ィ ン ド ウ の XHTML レ ン ダ リ ン グ を カ ス タ マ イ ズで き ま す。 XSLT 変換のカ ス タ マ イ ズ デー タ ウ ィ ン ド ウ の内容を XHTML に変換す る XSLT ス タ イ ルシー ト は、 デ フ ォ ル ト の生成過程で カ ス タ ム XHTML エ ク ス ポー ト テ ン プ レー ト を適用 し て カ ス タ マ イ ズで き ます。 CSS ス タ イ ルシー ト は、 カ ス タ ム XHTML エ ク ス ポー ト テ ン プ レ ー ト の カ ス タ ム ス タ イ ル属性 を適用 し て カ ス タ マ イ ズで き ます。 表示媒体に応 じ て ス タ イ ルシー ト を使い分ければ、 ほ と ん ど あ ら ゆ る デバ イ ス でデー タ ウ ィ ン ド ウ を表 示で き ます。デー タ ウ ィ ン ド ウ ペ イ ン タ の XHTML エ ク ス ポー ト テ ン プ レ ー ト ビ ュ ーについ て の詳細は、 172 ページ の 「生成 さ れ る Web デー タ ウ ィ ン ド ウ のカ ス タ マ イ ズ」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 136 第6章 Web デー タ ウ ィ ン ド ウの使い方 XML Web デー タ ウ ィ ン ド ウのブ ラ ウザ要件 XML Web デー タ ウ ィ ン ド ウ を使用す る には、 XML、 XSLT、 XHTML、 CSS、 JavaScript の ク ラ イ ア ン ト サ イ ド テ ク ノ ロ ジ を サポー ト す る ブ ラ ウ ザが必要です。 XML Web デー タ ウ ィ ン ド ウ (XHTML 形式) の表 示に使用す る ブ ラ ウ ザは、デー タ ウ ィ ン ド ウ オブジ ェ ク ト プ ロ パテ ィ ビ ュ ーの [Web 生成] ページで選択で き ます。 ブ ラ ウザ XML パーサ、XSLT プ ロ セ ッ サ XSLT のバージ ョ ン Internet Explorer 5 お MSXML 2.0、 2.5 (更新が必要) XSL-WD よ び 5.5 Internet Explorer 6.0 MSXML 3.0+ XSLT 1.0 TransforMiiX XSLT 1.0 Netscape 6 以降 Mozilla 1.0+ TransforMiiX XSLT 1.0 Internet Explorer では MSXML 2.6 以降が必要 Internet Explorer で XML Web デー タ ウ ィ ン ド ウ を 使用す る た め には MSXML 2.6 以降のバージ ョ ン が必要です。 Internet Explorer 5 ま たは 5. 5 の MSXML のバージ ョ ンは 2.0 ま たは 2.5 です。 MSXML 2.6 以降の バージ ョ ン に更新す る か、 Internet Explorer 6.0 を 使用 し て く だ さ い。 MSXML のバージ ョ ンについては、 Microsoft Web サ イ ト のサポー ト 技 術情報 269238 を参照 し て く だ さ い。 XML Web デー タ ウ ィ ン ド ウの使い方 Web アプ リ ケーシ ョ ン で XML Web デー タ ウ ィ ン ド ウ を最 も 簡単に使 用す る には、 以下の操作を行い ます。 1 Web ブ ラ ウ ザに表示す る デー タ ウ ィ ン ド ウ オブジ ェ ク ト を新たに 作成、 ま たは既存の も のか ら 選択 し ます。 詳細につい ては、 139 ページの 「Web デー タ ウ ィ ン ド ウ 用のデー タ ウ ィ ン ド ウ オブジ ェ ク ト の設計」 を参照 し て く だ さ い。 2 XML Web デー タ ウ ィ ン ド ウ の静的 JavaScript 用に JavaScript 生成 プ ロ パテ ィ を設定 (設定が済んでいない場合) し ます。 詳細については、 152 ページの 「Web デー タ ウ ィ ン ド ウ メ ソ ッ ド への JavaScript キ ャ ッ シ ュ の使い方」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 137 第6章 Web デー タ ウ ィ ン ド ウの使い方 XML Web デー タ ウ ィ ン ド ウ用の静的 JavaScript の再利用 HTML Web デー タ ウ ィ ン ド ウ で導入 さ れた静的 JavaScript キ ャ ッ シ ュ 機能 を 使用 し て い る 場合、 こ の静的 JavaScript を XML Web デー タ ウ ィ ン ド ウ (お よ び XHTML Web デー タ ウ ィ ン ド ウ ) 用に 再生成 し 、 再配布す る 必要が あ り ま す。 こ の作業が必要 と な る の は 1 回のみです。 3 Web サーバのルー ト 配布フ ォ ルダ以下に、 Web 配布フ ォ ルダ (静 的 JavaScript 用) と JavaScript 配布フ ォ ルダ (動的 JavaScript 用) を 別々に作成 し 、 デー タ ウ ィ ン ド ウ の Web 生成プ ロ パ テ ィ お よ び JavaScript 生成 プ ロ パテ ィ に、 それぞれの フ ォ ルダ を設定 し ます。 フ ォ ルダ を作成 し な く て も 、 プ ロ パテ ィ が設定 さ れていれば自動 的に作成 さ れ ま す。 プ ロ パテ ィ を設定 し な ければ、 デフ ォ ル ト の オブジ ェ ク ト モデルに よ り 、 _tmp と い う 名前で仮の配布フ ォ ルダ が作成 さ れ ます。 4 JSP ページのための Java 実装では、 GenerateXMLWeb メ ソ ッ ド を サーバ コ ン ポーネ ン ト 上で呼び出 し 、XML 生成形式を要求す る よ う に し ます。 XML 生 成 形 式 に よ り 、 デ ー タ 内 容 は XML の 形、 表 示 形 式 は XHTML への変換規則を記述 し た XSLT の形で、別々に生成 さ れま す。 XML Web デー タ ウ ィ ン ド ウ に最適な形式です。 GenerateXMLWeb メ ソ ッ ド を 呼び出す JSP ペ ー ジ の 例 は、 CodeXchange のサ イ ト https://powerbuilder.codexchange.sybase.com/ の DataWindow N-Tier セ ク シ ョ ン に あ る XML WebDataWindow Code Sample で見 る こ と がで き ます。 5 ブ ラ ウ ザで URL を入力 し て、 結果を表示 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 138 第6章 Web デー タ ウ ィ ン ド ウの使い方 Web デー タ ウ ィ ン ド ウ用のデー タ ウ ィ ン ド ウ オブジ ェ ク ト の設計 Web デー タ ウ ィ ン ド ウ では、 PowerBuilder デー タ ウ ィ ン ド ウ の機能の 大部分をサポー ト し てい ます。 こ の節では、 Web デー タ ウ ィ ン ド ウ を 最大限に利用す る ために使用す る 機能について説明 し ます。 デー タ ウ ィ ン ド ウ カ ラ ムの編集様式のデ フ ォル ト プ ロパテ ィ を使用 デー タ ウ ィ ン ド ウ カ ラ ム の編集様式のプ ロ パテ ィ は、 デフ ォ ル ト で表 示を最適化す る 値にな っ てい ます。 た と えば、 ラ ジオ ボ タ ンは左揃え に な っ て い ま す。 ス タ イ ルのプ ロ パテ ィ を 変更す る 必要が あ る 場合、 ブ ラ ウ ザが HTML コ ン ト ロ ールの レ ン ダ リ ン グ を管理す る ため、 Web デー タ ウ ィ ン ド ウ の カ ラ ム の表示がデー タ ウ ィ ン ド ウ ペ イ ン タ の表 示 と 異な る こ と があ り ます。 コ ン ト ロ ールを再配置、 ま たはカ ラ ム の サ イ ズ を変更すれば、 Web デー タ ウ ィ ン ド ウ の表示を調整で き ます。 既存のデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の使 い方 サポー ト 機能 と 未サ ポー ト 機能 既存のデー タ ウ ィ ン ド ウ オブジ ェ ク ト の多 く は、 Web デー タ ウ ィ ン ド ウ 内で動作 し ます。 Web デー タ ウ ィ ン ド ウ がサポー ト し ていない機能 をデー タ ウ ィ ン ド ウ オブジ ェ ク ト で使用 し て も 、 その機能は無視 さ れ ます。 サポー ト さ れてい る 機能だけで十分で あれば、 そのデー タ ウ ィ ン ド ウ オブジ ェ ク ト を使用 し て も か ま い ません。 例えば、 デー タ ウ ィ ン ド ウ に グ ラ フ コ ン ト ロ ール を 含む場合、 グ ラ フ は無視 さ れ ま す。 デー タ ウ ィ ン ド ウ がグ ラ フ提示様式を使用 し てい る 場合、 こ のデー タ ウ ィ ン ド ウ オブジ ェ ク ト は実用的 と は言え ません。 表 6-3: Web デー タ ウ ィ ン ド ウでサポー ト さ れている機能 と サポー ト さ れて いない機能 デー タ ウ ィ ン ド ウの機能 提示様式 サポー ト さ れている機能 と サポー ト さ れていない機能 OLE、 グ ラ フ、 お よ び リ ッ チテ キ ス ト を除 く すべての提示様式をサポー ト 。 サポー ト さ れていない提示様式ではデー タ の検索を行 う だけで何 も 表示 さ れない。 グ リ ッ ド 提示様式は、 HTML 形式を使用す る 場合は HTML テーブ ル と し て表示 さ れ、その結果、絶対位置をサポー ト せず、表示の特徴は XML お よ び XHTML Web デー タ ウ ィ ン ド ウ と は異な る ネ ス テ ィ ッ ド レ ポー ト およびコ ンポジ ッ ト レ ポー ト デー タ の検索 XHTML 形式のみをサポー ト 指定で き る 検索引数の数の上限は 16 個。 Modify メ ソ ッ ド でプ ロ パテ ィ を設 定す る か、 サーバ コ ン ポーネ ン ト で メ ソ ッ ド を呼び出す こ と に よ り 、 フ ィ ル タ 機能 と ソ ー ト 機能がサポー ト さ れ る 。 ソ ー ト 機能は ク ラ イ ア ン ト コ ン ト ロ ールの メ ソ ッ ド に よ っ て も 指定で き る QueryMode プ ロ パテ ィ を使用 し たユーザ指定の ク エ リ はサポー ト さ れない デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 139 第6章 デー タ ウ ィ ン ド ウの機能 コ ン ト ロ ール Web デー タ ウ ィ ン ド ウの使い方 サポー ト さ れている機能 と サポー ト さ れていない機能 サポー ト さ れ る コ ン ト ロ ールは、 カ ラ ム、 計算フ ィ ール ド 、 グ ラ フ、 テ キ ス ト 、 ピ ク チ ャ 、 ボ タ ン、 グループボ ッ ク ス、 長方形 無視 さ れ る コ ン ト ロ ールは、 OLE オブジ ェ ク ト 、 Blob を表示する OLE カ ラ ム、 丸長方形、 楕円、 イ ン ク ピ ク チ ャ レ ポー ト コ ン ト ロ ールは、 XHTML Web デー タ ウ ィ ン ド ウ のみでサポー ト 長方形の レ イ ヤが前景の と き に、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの高 さ が 固定値に設定 さ れ な い と 、 ど ん な レ ン ダ リ ン グ 形式で も 長方形 を ラ ベル デー タ ウ ィ ン ド ウ に表示で き ない サポー ト さ れない長方形プ ロ パテ ィ は、moveable、pointer、resizeable、slideleft、 slideup、 brush.hatch、 pen.style グループボ ッ ク スは、ク ロ ス タ ブお よ びグ リ ッ ド 提示様式のデー タ ウ ィ ン ド ウ に表示で き ない サ ポ ー ト さ れ な い グ ル ー プ ボ ッ ク ス プ ロ パ テ ィ は、 moveable、 pointer、 resizeable、 slideleft、 slideup、 font.charset、 font.width 直線 コ ン ト ロ ールは水平線だけ をサポー ト 。 線の color プ ロ パテ ィ は、 つね に表示 さ れ、 width プ ロ パテ ィ は線が実線の場合に表示 さ れ る 。 ほかの線の ス タ イ ルはデフ ォ ル ト の幅を持つ実線 と し て表示 さ れ る 。垂直線お よ び斜線 は無視 さ れ る 参照先 • 計算フ ィ ール ド 用の式については、 156 ページの 「式の使い方」 を参照 • ピ ク チ ャ コ ン ト ロ ール用の画像については、 161 ページの 「ピ ク チ ャ コ ン ト ロ ールの使い方」 を参照 • コ ン ト ロ ールへの適切な HTML の取 り 込みについては、158 ページの 「 コ ン ト ロ ールに HTML を取 り 込む」 を参照 デー タ の更新 編集様式 ド ロ ッ プダ ウ ン カ レ ン ダ エデ ィ ッ ト マ ス ク プ ロ パテ ィ • ボ タ ン コ ン ト ロ ール と サポー ト さ れてい る ア ク シ ョ ンについては、 159 ページの 「ボ タ ン コ ン ト ロ ールの使い方」 を参照 PowerBuilder デー タ ウ ィ ン ド ウ コ ン ト ロ ールの場合 と 同 じ 。デー タ ウ ィ ン ド ウ オブジ ェ ク ト に編集可能な カ ラ ム を含めなければな ら ない イ ン ク エデ ィ ッ ト お よ びエデ ィ ッ ト マ ス ク ( ド ロ ッ プ ダ ウ ン カ レ ン ダ エ デ ィ ッ ト マ ス ク 以外) を除 く すべての編集様式がサポー ト さ れ る 。 デー タ ウ ィ ン ド ウ でエデ ィ ッ ト マ ス ク 編集様式を使用す る 場合、指定 し た様式は表 示書式 と し て扱われ る ド ロ ッ プダ ウ ン カ レ ン ダ エデ ィ ッ ト マ ス ク プ ロ パテ ィ オプシ ョ ンは、カ レ ン ダの年、 月、 日の個々に対 し て選択で き る 。 こ のオプシ ョ ンは、 エデ ィ ッ ト マ ス ク 編集様式 を持つ Date カ ラ ム ま たは DateTime カ ラ ム が選択 さ れ る と き にデー タ ウ ィ ン ド ウ ペ イ ン タ のプ ロ パテ ィ ビ ュ ーの [編集] タ ブの チ ェ ッ ク ボ ッ ク ス で設定 さ れ る 。次の例の よ う に、 birth_date カ ラ ムに関 し て コ ー ド で設定す る こ と も で き る dwEmp.Modify("birth_date.EditMask.DDCalendar='Yes'") 詳細については、 141 ページの 「 ド ロ ッ プダ ウ ン カ レ ン ダの使い方」 を参照 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 140 第6章 Web デー タ ウ ィ ン ド ウの使い方 デー タ ウ ィ ン ド ウの機能 サポー ト さ れている機能 と サポー ト さ れていない機能 ド ロ ッ プダ ウ ン デー タ ウィンドウ ド ロ ッ プダ ウ ン デー タ ウ ィ ン ド ウ は、 親デー タ ウ ィ ン ド ウ と 同 じ PBL 内に デー タ ウ ィ ン ド ウ と し て存在 し な ければな ら ない。 ド ロ ッ プダ ウ ン デー タ ウ ィ ン ド ウ のデー タ はサーバ上で検索 さ れ る 。 150 ページの 「 ド ロ ッ プダ ウ ン デー タ ウ ィ ン ド ウ の使い方」 を参照。 dddw.lines プ ロ パテ ィ は、 ブ ラ ウ ザ が ド ロ ッ プダ ウ ン デー タ ウ ィ ン ド ウ の表示方法を制御す る ため、 Web ペー ジでサポー ト さ れない サポー ト さ れ る 。 色の使用 も 可能 表示書式 入力条件則 プ ロ パテ ィ 式 レイアウ ト プ ロ パテ ィ 式はその種類に よ り 、 ク ラ イ ア ン ト 側で評価 さ れ る 場合 と 、 サーバ側で評価 さ れ る 場合があ る 詳細については、 156 ページの 「式の使い方」 を参照 サーバ上で評価 さ れ る 高 さ ま たは幅の自動調整を指定す る プ ロ パテ ィ 、ま たは コ ン ト ロ ールのサ イ ズ変更や移動を ユーザに許可す る プ ロ パテ ィ (SlideLeft や SlideRight な ど) は無視 さ れ る 以下のプ ロ パテ ィ はサポー ト さ れない • EditMask.Spin デー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ • Sparse (反復値省略) デー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ • RightToLeft デー タ ウ ィ ン ド ウ コ ン ト ロ ールのプ ロ パテ ィ • ツ リ ービ ュ ー Web デー タ ウ ィ ン ド ウ の ShowLeafNodeConnectLines プ ロ パテ ィ タ ブ順序 ド ロ ッ プ ダウン カ レ ン ダの使い方 ShowConnectLines および Limit プ ロ パテ ィ は Web データ ウ ィ ン ド ウ のマルチ ラ イ ン エデ ィ ッ ト カ ラ ム ではサポー ト さ れない。 JavaScript では、 マルチ ラ イ ン エデ ィ ッ ト カ ラ ムは テキ ス ト エ リ ア オブジ ェ ク ト にマ ッ プ さ れ、 Limit プ ロパテ ィ は maxlength 属 性にマ ッ プ さ れる。 テキ ス ト エ リ ア オブジ ェ ク ト は maxlength 属性をサポー ト し ない HTML 4 対応のブ ラ ウ ザでサポー ト さ れ る ド ロ ッ プ ダ ウ ン カ レ ン ダ デー タ ウ ィ ン ド ウ オ プ シ ョ ン は、 Date、 DateTime、 あ る いは TimeStamp デー タ 型のデー タ ウ ィ ン ド ウ カ ラ ムの エデ ィ ッ ト マ ス ク で使用で き ます。 ド ロ ッ プダ ウ ン カ レ ン ダ エデ ィ ッ ト マ ス ク プ ロ パテ ィ オプシ ョ ンは、 カ レ ン ダの年、 月、 日の個々に対 し て選択で き ま す。 こ のオプシ ョ ン は、 エデ ィ ッ ト マ ス ク 編集様式の カ ラ ム が選択 さ れ る と き に、 デー タ ウ ィ ン ド ウ ペ イ ン タ プ ロ パテ ィ ビ ュ ーの [編集] タ ブのチ ェ ッ ク ボ ッ ク ス で設定で き ま す。 コ ー ド で 設定す る こ と も で き ます。、 次の例の よ う に、 birth_date カ ラ ムに対 し て コ ー ド で設定す る こ と も で き ます。 dw_1.Modify("birth_date.EditMask.DDCalendar='Yes'") ス ク リ プ ト あ る いはカ ラ ムのプ ロ パテ ィ ビ ュ ーの [その他] ページで、 カ レ ン ダの表示を制御す る ために次のプ ロ パテ ィ を設定す る こ と がで き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 141 第6章 ペ イ ン タ オプ シ ョ ン ド ロ ッ プダ ウ ンの右揃え カ レ ン ダの背景色 カ レ ン ダのテ キ ス ト 色 カ レ ン ダ タ イ ト ルの背景色 カ レ ン ダ タ イ ト ルの テ キ ス ト色 カ レ ン ダ ト レー ラ のテキ ス ト色 Web デー タ ウ ィ ン ド ウの使い方 プ ロパテ ィ Column.Editmask.ddcal_alignright Column.Editmask.ddcal_backcolor Column.Editmask.ddcal_textcolor Column.Editmask.ddcal_titlebackcolor Column.Editmask.ddcal_titletextcolor Column.Editmask.ddcal_trailingtextcolor ド ロ ッ プ ダ ウ ン カ レ ン ダ オ プ シ ョ ン で選択 し た日付が Web デー タ ウ ィ ン ド ウ に関 し て希望す る エデ ィ ッ ト マ ス ク で表示 さ れ る よ う にす る には、 [ ク ラ イ ア ン ト での書式化] オプ シ ョ ン を 指定 し て、 デー タ ウ ィ ン ド ウ に対 し て静的 JavaScript の生成 と 配布が含 ま れ る よ う に し ま す。 帯域使用を減少 さ せ る ために、 デフ ォ ル ト では ク ラ イ ア ン ト で の書式化 を行 う JavaScript は含 ま れ ま せん。 こ の ス ク リ プ ト を 含め る には、 デー タ ウ ィ ン ド ウ プ ロ パテ ィ ビ ュ ーの [Web 生成] ページ で [ ク ラ イ ア ン ト での書式化] チ ェ ッ ク ボ ッ ク ス を選択 し ます。 ク ラ イ ア ン ト での書式化を行 う ス ク リ プ ト を含めない場合は、 ド ロ ッ プダ ウ ン カ レ ン ダはデフ ォ ル ト のエデ ィ ッ ト マ ス ク を使用 し て、 ク ラ イ ア ン ト コ ン ピ ュ ー タ のデ フ ォ ル ト の地域の設定 を も と に カ ラ ム デー タ を 表 示 し ます。 以下の よ う に ド ロ ッ プダ ウ ン カ レ ン ダ内で操作 し ます。 • 上端の矢印を ク リ ッ ク し て、 月か ら 月に移動す る • 月を ク リ ッ ク し て月の リ ス ト を表示 し 、 それか ら 月を ク リ ッ ク し て選択す る • 年を ク リ ッ ク し て ス ピ ン コ ン ト ロ ールを表示 し 、 それか ら ス ピ ン コ ン ト ロ ールの矢印を使用 し て年を選択す る • 日を ク リ ッ ク し て日付を選択 し 、 カ レ ン ダ を閉 じ る • 〔Esc〕 を押 し て、 選択を変更 し ないでカ レ ン ダ を閉 じ る Web デー タ ウ ィ ン ド ウのプ ロパテ ィ こ の節では、 Web デー タ ウ ィ ン ド ウ 用の XML、 XHTML、 HTML デー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ について説明 し ます。 プ ロ パ テ ィ を設定す る 場合は、 デー タ ウ ィ ン ド ウ ペ イ ン タ か ス ク リ プ ト を使 用 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 142 第6章 Web デー タ ウ ィ ン ド ウの使い方 各プ ロ パテ ィ についての詳細は、『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マ ニ ュ アル ま たはオ ン ラ イ ン ヘルプで、 プ ロ パテ ィ 名を参照 し て く だ さ い。デー タ ウ ィ ン ド ウ ペ イ ン タ での共有 HTML お よ び XHTML のプ ロ パテ ィ の設定な ど、 各プ ロ パテ ィ の設定方法については、 146 ページ の 「Web デー タ ウ ィ ン ド ウ の Web 生成プ ロ パテ ィ の設定」 を参照 し て く だ さ い。 XML お よび XHTML デー タ プ ロパテ ィ 表 6-4 は、XML お よ び XHTML Web デー タ ウ ィ ン ド ウ の行デー タ のプ ロ パテ ィ を示 し てい ます。 表 6-4: XML お よび XHTML Web デー タ ウ ィ ン ド ウの行プ ロパテ ィ プ ロパテ ィ Data.XHTML Data.XMLWeb XML Web デー タ ウ ィ ン ド ウ生成プ ロパテ ィ ユーザ イ ン タ フ ェ ース フ ィ ール ド 読み出 し 専用。 ユーザ イ ン タ フ ェース フ ィ ー ルドなし 読み出 し 専用。 ユーザ イ ン タ フ ェース フ ィ ー ルドなし 説明 XHTML 形式の デー タ ウ ィ ン ド ウ オブジ ェ ク ト の行 デー タ 内容を含む文字列 ブ ラ ウ ザで XSLT 変換を実 行す る ブ ラ ウ ザ固有の JavaScript を含む文字列 表 6-5 は XML Web デー タ ウ ィ ン ド ウ 生成を サポー ト す る プ ロ パテ ィ を示 し てい ます。 表 6-5: XML Web デー タ ウ ィ ン ド ウ生成をサポー ト する プ ロパテ ィ プ ロパテ ィ CSSGen.property JSGen.property デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド ユーザ イ ン タ フ ェ ー ス フ ィ ール ド リ ソ ース ベースお よ び 配布先を [設定する フ ォーマ ッ ト ] と し て CSS が選択 さ れた [Web 生成] プ ロ パ テ ィ ページ リ ソ ース ベースお よ び 配布先を [設定する フ ォーマ ッ ト ] と し て XHTML が選択 さ れた [JavaScript 生成] プ ロ パテ ィ ページ 機能 生成 さ れた CSS ス タ イ ル シー ト が配布 さ れ る 物理パ ス、 お よ び、 ス タ イ ル シー ト の位置を示す URL を指 定。 プ ロ パテ ィ 変数は PublishPath ま たは ResourceBase 最終的 な XHTML ペー ジ に 含まれ る 生成 JavaScript が配 布 さ れ る 物理パ ス、 お よ び、 生成 さ れた JavaScript の位置 を示す URL を指定。 プ ロ パ テ ィ 変数は PublishPath ま た は ResourceBase 143 第6章 プ ロパテ ィ XMLGen.property Web デー タ ウ ィ ン ド ウの使い方 ユーザ イ ン タ フ ェ ー ス フ ィ ール ド リ ソ ース ベースお よ び 配布先を [設定する フ ォーマ ッ ト ] と し て XML が選択 さ れた [Web 生成] プ ロ パ テ ィ ページ XSLTGen.property リ ソ ース ベースお よ び 配布先を [設定する フ ォーマ ッ ト ] と し て XSLT が選択 さ れた [Web 生成] プ ロ パ テ ィ ページ XHTMLGen.Browser ブ ラ ウ ザを [設定する フ ォーマ ッ ト ] と し て XHTML が選択 さ れた [Web 生成] プ ロ パ テ ィ ページ 機能 XML が 配布 さ れ る 物理 パ ス、お よ び、XML を XHTML に変換する JavaScript が参照 す る URL を 指定。 プ ロ パ テ ィ 変数は PublishPath ま た は ResourceBase。 XML が XSLT 変換 ス ク リ プ ト に イ ン ラ イ ン 生成 さ れ る か ど う か、ページ ン グが ク ラ イ ア ン ト で行われ る か、サーバで行 われ る か を 指定す る こ と も でき る 生成 さ れた XSLT ス タ イ ル シー ト が配布 さ れ る 物理パ ス、 お よ び、 生成 さ れた XSLT ス タ イ ルシー ト を使 用 し て XML を XHTML に変 換する JavaScript が参照す る URL を指定。 プ ロ パテ ィ 変 数は PublishPath ま たは ResourceBase XSLT ス タ イ ル シー ト で生 成 さ れた XHTML を表示す る ブ ラ ウ ザを指定 PublishPath と ResourceBase について PublishPath (配布先) は Web サ イ ト フ ォ ルダの物理パ ス を指定す る 文 字列です。 PowerBuilder は生成 し た CSS、 JavaScript、 XML、 XSLT を こ の フ ォ ルダに配布 し ます。 ResourceBase ( リ ソ ー ス ベー ス) は生成 フ ァ イ ルの URL を指定す る 文字列です。 HTML プ ロパテ ィ デー タ ウ ィ ン ド ウ ペ イ ン タ では、 4 種類の HTML プ ロ パテ ィ を設定で き ます。 最初の 3 種類のプ ロ パテ ィ は、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト その も のに適用 さ れ ます。 最後のプ ロ パテ ィ は、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト 内の ビ ッ ト マ ッ プ、 カ ラ ム、 計算フ ィ ール ド 、 お よ びテ キ ス ト コ ン ト ロ ールに適用 さ れ ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 144 第6章 Web デー タ ウ ィ ン ド ウの使い方 共有にな っ たプ ロパテ ィ のプ ロパテ ィ 名は変更な し 旧バージ ョ ン の PowerBuilder では、 HTML プ ロ パ テ ィ は HTML Web デー タ ウ ィ ン ド ウ にのみ適用 さ れてい ま し た。 PowerBuilder 10 では、 HTML プ ロ パ テ ィ の 一部 を XML Web デー タ ウ ィ ン ド ウ 、 お よ び、 XHTML Web デー タ ウ ィ ン ド ウ と 共有 し てい ます。 HTML プ ロ パテ ィ 名は変更 し てい ません。 表 6-6: デー タ ウ ィ ン ド ウ ペ イ ン タ で設定で き る HTML のプ ロパテ ィ プ ロパテ ィ HTMLDW (共有) ユーザ イ ン タ フ ェ ー ス フ ィ ール ド オブジ ェ ク ト のプ ロ パ テ ィ ビ ュ ーの [全般] ページにあ る [HTML デー タ ウ ィ ン ド ウ] チ ェ ッ ク ボ ッ ク ス。 こ のチ ェ ッ ク ボ ッ ク ス を 選択す る と 、 プ ロ パ テ ィ が Yes に設定 さ れる HTMLTable. property (HTML のみ) オブジ ェ ク ト のプ ロ パ テ ィ ビ ュ ーの [HTML テーブル] ページにあ る すべての フ ィ ール ド HTMLGen.property (全 Web デー タ ウ ィ ン ド ウ形式で 共有) デー タ ウ ィ ン ド ウ オ ブジ ェ ク ト のプ ロ パ テ ィ ビ ュ ーの [Web 生成] ページお よ び [JavaScript 生成] ペー ジの全フ ィ ール ド (ま たは、 [JavaScript 生 成] ページの [フ ァ イ ル生成] ボ タ ン を押 し て、 JavaScript 生成 ウ ィ ザー ド を開始) デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 機能 [デザ イ ン| HTML のプ レ ビ ュ ー] を選択 し て HTML をブ ラ ウ ザに表示す る (つ ま り 、 オブジ ェ ク ト と Web デー タ ウ ィ ン ド ウ のカ ス タ ム サーバ コ ン ポーネ ン ト を 併用す る 場合)。 汎用サーバ コ ン ポーネ ン ト に よ り 、 こ のプ ロ パテ ィ は自動的に Yes に設定 さ れ る 罫線様式、 セル幅、 パデ ィ ン グ な ど、 HTML テーブル の表示特性を変更す る ページに表示す る 行数を指 定、 特定のブ ラ ウ ザ ま たは HTML バージ ョ ン用の HTML を生成、 ページに組 み込む ク ラ イ ア ン ト サ イ ド の機能を選択、 お よ び JavaScript キ ャ ッ シ ュ を設定 し てパフ ォーマ ン ス を向上 させる 145 第6章 プ ロパテ ィ HTML.property (全 Web デー タ ウ ィ ン ド ウ形式で 共有) Web デー タ ウ ィ ン ド ウの使い方 ユーザ イ ン タ フ ェ ー ス フ ィ ール ド オブジ ェ ク ト 内のカ ラ ム、 計算フ ィ ール ド 、 テ キ ス ト 、 ま たはピ ク チ ャ コ ン ト ロ ールの プ ロ パテ ィ ビ ュ ーの [HTML] ページにあ る すべての フ ィ ール ド 機能 Web ページのマ ス タ ま たは 詳細ページの作成時に一般 的に使用す る ハ イ パー リ ン ク と 検索引数を設定、 コ ン ト ロ ールの内容を HTML 形 式に変換 し て挿入す る か ど う か を指定、 お よ び コ ン ト ロ ールに追加す る HTML を 指定す る Web デー タ ウ ィ ン ド ウの Web 生成プ ロパテ ィ の設定 Web デー タ ウ ィ ン ド ウ の生成に使 う 以下の Web 形式 (最終的には生成 さ れ る フ ァ イ ル形式) について、 それぞれ必要な設定を行 う 必要があ り ます。 HTML XHTML CSS XML XSLT JavaScript XHTML お よび HTML のブ ラ ウザに対する最適化 特定ブ ラ ウ ザ用に最適化 し た XHTML お よ び HTML の生成につい て は、 162 ページの 「特定のブ ラ ウ ザ用の Web 生成の指定」 を参照 し て く だ さ い。 こ の節では、 HTML、 XHTML、 CSS、 XML、 XSLT の設定について説 明 し ま す。 JavaScript の設定につい て は、 152 ページ の 「Web デー タ ウ ィ ン ド ウ メ ソ ッ ド への JavaScript キ ャ ッ シ ュ の使い方」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 146 第6章 Web デー タ ウ ィ ン ド ウの使い方 それぞれの Web 形式について必要な設定を行 う には、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ ビ ュ ーの [Web 生成] ページ を使用 し ま す。 [Web 生成] ページ の一番上に あ る [設定す る フ ォ ーマ ッ ト ] ド ロ ッ プダ ウ ン リ ス ト ボ ッ ク ス には、Web デー タ ウ ィ ン ド ウ で使用す る Web 形式が列挙 さ れてい ます。 こ れを切 り 替え る と 、 こ のページに表 示 さ れ る プ ロ パテ ィ も 変わ り ます。 デフ ォ ル ト では、 すべての レ ン ダ リ ン グ形式で共有 さ れ る プ ロ パテ ィ が ビ ュ ーに表示 さ れてい ます。 設定可能なプ ロ パテ ィ は選択 し た形式に よ っ て変わ り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 147 第6章 設定す る フ ォ ー マッ ト HTML/XHTML (共有) HTML XHTML CSS 説明 すべての Web デー タ ウ ィ ン ド ウ レンダ リ ン グ形式で共有する プ ロ パテ ィ HTML のみの Web デー タ ウ ィ ン ド ウ プ ロ パテ ィ XHTML のみの XML Web デー タ ウ ィ ン ド ウ プ ロ パテ ィ XML Web デー タ ウ ィ ン ド ウ CSS プ ロ パ ティ XML XML Web デー タ ウ ィ ン ド ウ のデー タ お よ び表示のプ ロ パテ ィ XSLT XML Web デー タ ウ ィ ン ド ウ XSLT プ ロ パ ティ デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド Web デー タ ウ ィ ン ド ウの使い方 プ ロパテ ィ ページあたり の行数 JavaScript を 生成 ク ラ イ アン ト でのイ ベン ト ク ラ イ アン ト での入力条件則 ク ラ イ アン ト での計算フ ィ ール ド ク ラ イ アン ト での書式化 ク ラ イ アン ト でのス ク リ プト 利 用可能 DDDW フ レームの生成 オブジェ ク ト 名 自己のリ ン ク 自己のリ ン ク の引数 自己のリ ン ク の引数を エン コ ー ド する 開始タ ブ順序番号 ページ ン グ メ ソ ッ ド ブラ ウザ Netscape 用の レ イ ヤ を使用 HTML バージ ョ ン ブラ ウザ リ ソ ース ベース 配布先 セ ッ シ ョ ン 固 有 の CSS, XSLT お よ び JS フ ァ イ ル名 リ ソ ース ベース 配布先 イ ン ラ イ ン セ キ ュ リ テ ィ の生 成 リ ソ ース ベース 配布先 148 第6章 Web デー タ ウ ィ ン ド ウの使い方 通常は、 使用す る ス タ イ ル (CSS)、 レ イ ア ウ ト (XSLT)、 コ ン ト ロ ー ル定義 (JS) を全 ク ラ イ ア ン ト で共有 し ま すが、 特定の ク ラ イ ア ン ト 用にカ ス タ マ イ ズ し た動的デー タ ウ ィ ン ド ウ を使用す る 場合は、 デー タ ウ ィ ン ド ウ の表示関連 ド キ ュ メ ン ト 名を各 ク ラ イ ア ン ト に特定 し て 強制的に生成で き ます。 こ の場合は、[セ ッ シ ョ ン固有の CSS, XSLT お よ び JS フ ァ イ ル 名] チ ェ ッ ク ボ ッ ク ス を 選 択 す る か、 CSSGen. SessionSpecific プ ロ パテ ィ を 「yes」 に設定 し ま す。 こ れで、 ク ラ イ ア ン ト ご と に別々のデー タ ウ ィ ン ド ウ を生成す る 場合で も 、 サーバ側で 表示書式が競合す る こ と がな く な り ます。 同一アプ リ ケーシ ョ ン で同一の名前を持つ異な る デー タ ウ ィ ン ド ウ に 関 し ては、 デー タ ウ ィ ン ド ウ の配布先プ ロ パテ ィ に、 デ ィ レ ク ト リ パ ス だけではな く フ ァ イ ル名ま で含めて設定すれば、 サーバ サ イ ド での 表示書式 と デー タ 内容に関す る 競合が な く な り ま す。 配布先プ ロ パ テ ィ に フ ァ イ ル名を使用す る 場合は、 生成す る フ ァ イ ルの形式に応 じ た拡張子 を 与え る 必要が あ り ま す。 た と えば、 XML 形式の配布先に フ ァ イ ル名を追加す る 場合は、 フ ァ イ ルの拡張子を .xml に し ます。 生成 さ れる コ ー ド のサイ ズの制御 サポー ト さ れてい る 機能に よ っ ては、 生成 さ れ る コ ー ド のサ イ ズが大 き く な る 場合があ り ます。 表示書式、 入力条件則、 ク ラ イ ア ン ト サ イ ド ス ク リ プ ト な ど の機能を使用 し ない場合は、 不要な機能に対応す る コ ー ド を サーバ コ ン ポーネ ン ト で生成 し な い よ う に し てパ フ ォ ーマ ン ス を向上 さ せ る こ と がで き ます。 こ れ ら の機能のオ ン / オ フ を切 り 替え る には、 デー タ ウ ィ ン ド ウ ペ イ ン タ の [Web 生成] プ ロ パ テ ィ ページか ス ク リ プ ト を使用 し ます。 詳細については、 198 ページの 「生 成内容の制御」 を参照 し て く だ さ い。 ク ラ イ ア ン ト サ イ ド の メ ソ ッ ド を JavaScript フ ァ イ ルにキ ャ ッ シ ュ し て、 生成 さ れ る コ ー ド のサ イ ズ を小 さ く し 、 サーバ サ イ ド と ク ラ イ ア ン ト サ イ ド のパフ ォーマ ン ス を向上 さ せ る こ と も で き ます。JavaScript キ ャ ッ シ ュ を使用 し ない場合には、 Web デー タ ウ ィ ン ド ウ が ク ラ イ ア ン ト ブ ラ ウ ザに取 り 込まれ る たびに、デー タ ウ ィ ン ド ウ メ ソ ッ ド に対 応す る JavaScript コ ー ド がサーバ上で生成 さ れて、 ク ラ イ ア ン ト にダ ウ ン ロ ー ド さ れ ま す。 キ ャ ッ シ ュ さ れた JavaScript フ ァ イ ル を参照す る よ う にデー タ ウ ィ ン ド ウ プ ロ パテ ィ を設定す る と 、 フ ァ イ ル内に定 義 さ れた メ ソ ッ ド は、 ページ サーバ (お よ び ク ラ イ ア ン ト ブ ラ ウ ザ) に送信 さ れ る Web デー タ ウ ィ ン ド ウ ページ内で HTML 形式で生成 さ れません。 詳細については、次の 「Web デー タ ウ ィ ン ド ウ メ ソ ッ ド への JavaScript キ ャ ッ シ ュ の使い方」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 149 第6章 Web デー タ ウ ィ ン ド ウの使い方 ド ロ ッ プ ダウ ン デー タ ウ ィ ン ド ウの使い方 ド ロ ッ プ ダ ウ ン デー タ ウ ィ ン ド ウ 編集様式 を 使用す る カ ラ ム に移動 す る と き に、 キーボー ド の矢印キーを使用 し てその値を変更す る こ と がで き ます。 カ ラ ム を ク リ ッ ク す る と 、 ド ロ ッ プダ ウ ン デー タ ウ ィ ン ド ウ が、 別の値に ス ク ロ ール し て、 それを選択す る ために ク リ ッ ク で き る よ う に表示 さ れます。 デー タ ウ ィ ン ド ウ ペ イ ン タ のプ ロ パテ ィ ビ ュ ーの [編集] ページで、 カ ラ ム の表示プ ロ パテ ィ を設定 し ます。 [ ド ロ ッ プダ ウ ン の幅] プ ロ パ テ ィ は、 ド ロ ッ プ ダ ウ ン の表示幅 を カ ラ ム の幅の割合で設定 し ま す。 た と えば、 300 は表示幅を カ ラ ム幅の 3 倍に設定 し ます。 デフ ォ ル ト の動作は イ ン ラ イ ン フ レーム (iFrames) を使用 し ます。 イ ン ラ イ ン フ レームは、 生成 さ れ る マー ク ア ッ プの量を増や し ます。 ド ロ ッ プ ダ ウ ン デー タ ウ ィ ン ド ウ を 大量に使用す る デー タ ウ ィ ン ド ウ オブジ ェ ク ト では、 HTML select 要素で ド ロ ッ プダ ウ ン デー タ ウ ィ ン ド ウ を生成す る こ と で、 帯域の使用を少な く で き ます。 こ れを行 う に は、 [Web 生成] ペー ジ の [設定す る フ ォ ー マ ッ ト ] オ プ シ ョ ン を [HTML/XHTML] に設定 し て [DDDW フ レーム の生成] チ ェ ッ ク ボ ッ ク ス の選択を解除す る か、HTMLGen.GenerateDDDWFrames プ ロ パテ ィ に 「No」 を設定 し ます。 HTMLGen.GenerateDDDWFrames プ ロ パテ ィ の詳細については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アル ま たはオ ン ラ イ ン ヘルプ を参 照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 150 第6章 Web デー タ ウ ィ ン ド ウの使い方 Netscape および Mozilla ブ ラ ウザ HTMLGen.GenerateDDDWFrames プ ロ パ テ ィ は、 Netscape あ る い は Mozilla ブ ラ ウ ザでサポー ト し てい ません。 サポー ト す る ブ ラ ウ ザの詳 細については、 137 ページの 「XML Web デー タ ウ ィ ン ド ウ のブ ラ ウ ザ 要件」 を参照 し て く だ さ い。 コ ールバ ッ ク および ク ラ イ ア ン ト サイ ド ページ ングのサポー ト PagingMethod (ページ ン グ メ ソ ッ ド ) プ ロ パテ ィ は、 ページ ン グ要求 の処理方法を指定で き る よ う に し ます。 デフ ォ ル ト の設定は PostBack で、 こ れは各ページ要求を も と のサーバにポ ス ト し ます。 [Web 生成] ページで [設定す る フ ォ ーマ ッ ト ] オプシ ョ ン を [HTML/XHTML] に 設定 し て、 プ ロ パテ ィ ビ ュ ーの設定を変更す る こ と がで き ます。 CallBack コ ールバ ッ ク ページ ン グは、 ス ク リ プ ト の コ ールバ ッ ク 機能を使用 し て、 ページ全体を元のサーバにポ ス ト し ないページ ナビ ゲーシ ョ ン を 提供 し ま す。 次に要求 さ れ る ページの XML デー タ は、 コ ールバ ッ ク に返 さ れ る XML 文字列 と し て ダ ウ ン ロ ー ド さ れ ま す。 ク ラ イ ア ン ト の JavaScript 関数はデー タ を集めて、 最初の要求でダ ウ ン ロ ー ド さ れ て キ ャ ッ シ ュ さ れた XSLT ス タ イ ルシー ト を使用 し てデー タ を転送す る ために ク ラ イ ア ン ト サ イ ド XSLT プ ロ セ ッ サ を実行 し ます。 デー タ の次のページは要求に応 じ て表示 さ れ ます。 PagingMethod プ ロ パテ ィ に CallBack を設定す る と 、 ス ク リ プ ト の コ ールバ ッ ク 機能を使用す る ため、 サーバ サ イ ド コ ー ド お よ び ク ラ イ ア ン ト サ イ ド JavaScript を書 く 必要はあ り ません。 XML レ ン ダ リ ン グ形式での Callback! オプシ ョ ン の使用は、 再使用可 能な XSLT ス タ イ ルシー ト を生成 し て、 ブ ラ ウ ザがそれを キ ャ ッ シ ュ で き る よ う にす る こ と を要求 し ます。 こ の要件の利点は、 コ ールバ ッ ク は次に要求 さ れたページの XML デー タ だけ を返す必要があ る と い う こ と です。 こ の XML デー タ のサ イ ズは常にわずかで あ る ため (約 1/20)、 大幅な帯域の節約にな り ます。 こ れはほかの実装 と 異な り 、 表 示全体が常に再生成 さ れて、 各 コ ールバ ッ ク か ら 再びダ ウ ン ロ ー ド さ れます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 151 第6章 Web デー タ ウ ィ ン ド ウの使い方 デー タ ウ ィ ン ド ウ レ イ ア ウ ト がページ ご と に一貫性がない場合、 あ る いはデー タ ウ ィ ン ド ウ レ イ ア ウ ト が完全なデー タ の先頭ページ を 含 ま ない場合は、 生成 さ れ る XSLT ス タ イ ルシー ト は再使用可能ではな く 、 そのためブ ラ ウ ザはキ ャ ッ シ ュ す る こ と がで き ません。 こ れ ら の シナ リ オでは、 Callback! オプシ ョ ンは、 ス タ イ ルシー ト が再使用可能 に な り 、 そ の 結 果 ブ ラ ウ ザ で キ ャ ッ シ ュ で き る よ う に な る ま で、 PostBack! に任せます。 XMLClientSide PagingMethod プ ロ パテ ィ が XMLClientSide! に設定 さ れ る と 、結果集合 内のすべてのデー タ が ク ラ イ ア ン ト にプル ダ ウ ン さ れ る ため、 ページ を最初の要求で ロ ー ド す る のに若干時間が長 く かか り ま す。 し か し 、 そ れ 以 降 の ペ ー ジ ン グ 要 求 は 完 全 に ク ラ イ ア ン ト で 行 わ れ ま す。 InsertRow、 AppendRow、 お よ び DeleteRow ア ク シ ョ ンは、 サーバへのポ ス ト バ ッ ク あ る いは コ ールバ ッ ク せずに ク ラ イ ア ン ト で行われ ま す。 し か し 、 RowCount メ ソ ッ ド に 依存す る デー タ ウ ィ ン ド ウ 内 の 計算 フ ィ ール ド は、 サ ーバへ の ポ ス ト バ ッ ク を 強要す る Update ま た は Retrieve 等のア ク シ ョ ン を ユーザが行 う ま で再評価 さ れ ません。 ク ラ イ ア ン ト サ イ ド ページ ン グ は、 XML レ ン ダ リ ン グ形式お よ び Web デー タ ウ ィ ン ド ウ ク ラ イ ア ン ト コ ン ト ロ ールのボ タ ン ア ク シ ョ ン と ク ラ イ ア ン ト の JavaScript ページ ン グ関数内でのみ使用で き ます。 Web デー タ ウ ィ ン ド ウ メ ソ ッ ド への JavaScript キ ャ ッ シ ュの使い方 Web デー タ ウ ィ ン ド ウ の JavaScript ジ ェ ネ レー タ ウ ィ ザー ド を使用す る と 、ク ラ イ ア ン ト サ イ ド の JavaScript メ ソ ッ ド を含む JavaScript フ ァ イ ルを設計時に作成で き ます。Web デー タ ウ ィ ン ド ウ の JavaScript ジ ェ ネ レ ー タ ウ ィ ザ ー ド は、 デー タ ウ ィ ン ド ウ プ ロ パ テ ィ ビ ュ ー の [JavaScript 生成] プ ロ パテ ィ ページにあ る [フ ァ イ ルの生成] ボ タ ン を ク リ ッ ク す る か、 新規作成 ダ イ ア ロ グボ ッ ク ス の [ツール] タ ブか ら 開始で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 152 第6章 共有 JavaScript 生成 プ ロパテ ィ Web デー タ ウ ィ ン ド ウの使い方 JavaScript フ ァ イ ル (HTML、 XHTML) は、 Web デー タ ウ ィ ン ド ウ の すべての Web 形式 (XML、 XHTML、 HTML) で共有 し ます。 ウ ィ ザー ド を実行する たびに生成 さ れる フ ァ イ ルは 1 つで、 機能の ク ラ ス を結合、 分離で き ます。 1 つま たは複数の JavaScript フ ァ イ ルを生成す れば、 [JavaScript 生成] プ ロ パテ ィ ページの各フ ァ イ ル名の ド ロ ッ プダ ウ ン リ ス ト (共通 ク ラ ス、 Date Time 管理、 Number フ ォーマ ッ ト 、 String フ ォーマ ッ ト 、 ユーザ ク ラ ス) を使用し て、 データ ウ ィ ン ド ウ オブジ ェ ク ト に付加で き ます。 JavaScript フ ァ イ ルの生成 と デー タ ウ ィ ン ド ウ オブジ ェ ク ト と の関連 付け を行えば、JavaScript 機能がキ ャ ッ シ ュ さ れ、デー タ ウ ィ ン ド ウ オ ブジ ェ ク ト を含むページがブ ラ ウ ザに表示 さ れ る たびに再利用 さ れ ま す。 XML お よび XHTML JavaScript 生成プ ロパ ティ XML Web デー タ ウ ィ ン ド ウ お よ び XHTML Web デー タ ウ ィ ン ド ウ の みに適用 さ れ る JavaScript 生成プ ロ パテ ィ を設定す る には、XHTML を 選択 し 、 リ ソ ース ベース と 配布先を指定 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 153 第6章 サーバ サイ ド と ク ラ イ ア ン ト サイ ド での パフ ォ ーマ ン スの向上 Web デー タ ウ ィ ン ド ウの使い方 キ ャ ッ シ ュ さ れた JavaScript フ ァ イ ル を参照す る よ う にデー タ ウ ィ ン ド ウ プ ロ パテ ィ を設定す る と 、 ページ サーバ と ク ラ イ ア ン ト ブ ラ ウ ザに送信 さ れ る Web デー タ ウ ィ ン ド ウ ページにおいて、フ ァ イ ル内に 定義 さ れ た メ ソ ッ ド は、 HTML 形式では生成 さ れ ま せん。 JavaScript キ ャ ッ シ ュ を使用す る と 、 ブ ラ ウ ザで表示 さ れ る HTML ページのサ イ ズが縮小 さ れ ます。 JavaScript キ ャ ッ シ ュ を使用す る と 、 ク ラ イ ア ン ト ブ ラ ウ ザが キ ャ ッ シ ュ フ ァ イ ルを使用す る よ う に設定 さ れてい る 場合には、 ク ラ イ ア ン ト マ シ ン のパ フ ォ ーマ ン ス が向上 し ま す。 キ ャ ッ シ ュ を 有効にす る と 、 ブ ラ ウ ザは Web サーバか ら JavaScript フ ァ イ ル を キ ャ ッ シ ュ に ロ ー ド し 、アプ リ ケーシ ョ ン のすべての Web デー タ ウ ィ ン ド ウ ページ で 利 用 で き る よ う に な り ま す。 ブ ラ ウ ザ が そ の キ ャ ッ シ ュ か ら JavaScript フ ァ イ ルを検出で き ない場合には、 ブ ラ ウ ザは Web サーバ か ら フ ァ イ ルを リ ロ ー ド す る ため、 ク ラ イ ア ン ト サ イ ド でのパフ ォ ー マ ン ス の向上は得 ら れ ません。 Web デー タ ウ ィ ン ド ウの JavaScript 生成 ウ ィ ザー ド Web デー タ ウ ィ ン ド ウ の JavaScript 生成 ウ ィ ザー ド で は、 JavaScript フ ァ イ ルを一度に 1 つだけ作成で き ます。 ウ ィ ザー ド には、1 つの フ ァ イ ルにすべての Web デー タ ウ ィ ン ド ウ メ ソ ッ ド を含め る オプシ ョ ン が用意 さ れてい ますが、ウ ィ ザー ド を使用す る たびに各 JavaScript フ ァ イ ルに含め る メ ソ ッ ド の種類を指定す る こ と も で き ます。 各 メ ソ ッ ド は、 次のデー タ ウ ィ ン ド ウ HTML プ ロ パテ ィ に対応 し ます。 表 6-7: キ ャ ッ シ ュ フ ァ イルに対 し て JavaScript 生成ウ ィ ザー ド によ っ て 生成 さ れる メ ソ ッ ド HTMLGen.property キ ャ ッ シ ュ フ ァ イルの内容 CommonJSFile すべてのデー タ ウ ィ ン ド ウ で使用 さ れ る メ ソ ッ ド DateJSFile 日時の書式設定を持つ、 デー タ ウ ィ ン ド ウ で使用 さ れる メ ソ ッ ド NumberJSFile 数値の書式設定を持つ、 デー タ ウ ィ ン ド ウ で使用 さ れる メ ソ ッ ド StringJSFile 文字列の書式設定を持つ、 デー タ ウ ィ ン ド ウ で使用 される メ ソ ッ ド UserJSFile ユーザに よ り 定義 さ れ た、 ク ラ イ ア ン ト サ イ ド の JavaScript メ ソ ッ ド 。 こ れ ら は、 Web デー タ ウ ィ ン ド ウ の JavaScript ジ ェ ネ レー タ ウ ィ ザー ド では作成で き ない (156 ページの 「ユーザ定義 JavaScript メ ソ ッ ド 」 を参照) デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 154 第6章 Web デー タ ウ ィ ン ド ウの使い方 以上のプ ロ パテ ィ はすべて省略で き ま す。 デー タ ウ ィ ン ド ウ プ ロ パ テ ィ ビ ュ ーの [JavaScript 生成] ページ で各プ ロ パ テ ィ を 設定 し て、 ウ ィ ザー ド で作成す る フ ァ イ ル を 値 と し て選択す る こ と がで き ま す。 作成 さ れた フ ァ イ ルは ウ ィ ザー ド に よ っ て登録 さ れ、 デー タ ウ ィ ン ド ウ プ ロ パテ ィ ビ ュ ーの ド ロ ッ プダ ウ ン リ ス ト か ら 選択で き る よ う に な り ます。 ResourceBase プ ロパ テ ィ の使い方 Web アプ リ ケーシ ョ ンのキ ャ ッ シ ュ フ ァ イ ルはすべて、 Web サーバに 配布す る 必要が あ り ま す。 キ ャ ッ シ ュ さ れた JavaScript フ ァ イ ルの場 所を HTMLGen.ResourceBase プ ロ パテ ィ に指定す る 場合は、 その フ ァ イ ルの相対 URL かパ ス名を使用で き ます。 こ の設定は、 デー タ ウ ィ ン ド ウ ペ イ ン タ のデー タ ウ ィ ン ド ウ プ ロ パ テ ィ ビ ュ ーの [JavaScript 生成] ページで行い ます。 ま た、ResourceBase プ ロ パテ ィ は、 画像フ ァ イ ルの場所の指定に も 使用 さ れ ます。 HTMLGen.ResourceBase プ ロ パ テ ィ を 設定 し な い 場合 は、 設定す る HTMLGen プ ロ パテ ィ のすべての値に絶対 URL を指定す る 必要があ り ます。 いずれの場合に も 、 URL は、 Web デー タ ウ ィ ン ド ウ コ ン ポーネ ン ト に よ り 生成 さ れ、 ク ラ イ ア ン ト ブ ラ ウ ザに送信 さ れ る ページ の SCRIPT タ グの SRC 属性 と し て挿入 さ れ ます。 ス ク リ プ ト でのプ ロパ テ ィ の設定 データ ウ ィ ン ド ウ の HTML ジ ェ ネ レータ コ ンポーネン ト (PowerBuilder に付属する PBDWRMT.PBL の nv_remote_datawindow) を カ ス タ マイ ズ し て、Generate メ ソ ッ ド のス ク リ プト 内で HTMLGen プロ パティ を 設定 でき ま す。次の例では、イ ン ク ルード フ ァ イ ルの場所を URL で設定し 、 Web サーバに配布する Web データ ウ ィ ン ド ウ の共通のメ ソ ッ ド と 日付 書式を 持つメ ソ ッ ド のフ ァ イ ルを 指定し ま す。こ れら のメ ソ ッ ド は、ブ ラ ウ ザ ク ラ イ ア ン ト が Web サイ ト に最初に接続し たと き にダウ ン ロ ー ド さ れま す。 ids_datastore.Modify & ("DataWindow.HTMLGen.ResourceBase=" +& "'http://www.myserver.com/JavaScripts'") ids_datastore.Modify & ("DataWindow.HTMLGen.CommonJSFile=" +& "'dwcomn.js'") ids_datastore.Modify & ("DataWindow.HTMLGen.DateJSFile=" +& "'dwdate.js'") デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 155 第6章 ユーザ定義 JavaScript メソッド Web デー タ ウ ィ ン ド ウの使い方 独自の、 ク ラ イ ア ン ト サ イ ド の JavaScript メ ソ ッ ド を格納 し た フ ァ イ ルを参照す る こ と も で き ます。 こ の機能を使用す る には、 その フ ァ イ ル名をデー タ ウ ィ ン ド ウ の HTMLGen.UserJSFile プ ロ パテ ィ に指定 し 、 その フ ァ イ ルが Web サーバで使用で き る よ う に し てお く 必要が あ り ます。 ウ ィ ザー ド で作成 し た JavaScript フ ァ イ ルの場合は、 HTMLGen. ResourceBase プ ロ パ テ ィ を 使用 し て フ ァ イ ル の場所 を 設定す る か、 フ ァ イ ルへの完全パ ス を プ ロ パ テ ィ 値 と し て設定す る こ と がで き ま す。 完全パス をプ ロ パテ ィ 値 と し て設定する場合は、データ ウ ィ ン ド ウ ペイ ン タ か ス ク リ プ ト を 使用 し ま す。 次 の ス ク リ プ ト は、 ユ ー ザ 定義 JavaScript フ ァ イ ル と し て MyMethods.JS を使 う よ う 設定する も のです。 ids_datastore.Modify & ("DataWindow.HTMLGen.UserJSFile=" +& "'http://my_server.com/JavaScripts/MyMethods.JS'") こ のス ク リ プト は、 生成後の HTML ページに次のよ う に挿入さ れま す。 <SCRIPT LANGUAGE="JavaScript" SRC= "http://my_server.com/JavaScripts/MyMethods.JS"> </SCRIPT> その後、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の コ ン ト ロ ールに対応 し て挿 入 ま たは追加 さ れた HTML 構文か ら 、 MyMethods.JS フ ァ イ ル内の ク ラ イ ア ン ト サ イ ド の メ ソ ッ ド を呼び出す こ と がで き ます。 HTML 構文 の生成ま たは コ ン ト ロ ールへの追加については、 158 ページの 「HTML Web デー タ ウ ィ ン ド ウ 内の コ ン ト ロ ールに対す る HTML の レ ン ダ リ ン グ」 を参照 し て く だ さ い。 式の使い方 通常、入力条件則 と 計算フ ィ ール ド に対する式は、JavaScript に変換 さ れ て、 ク ラ イ ア ン ト ブ ラ ウ ザ内で評価 さ れま す。 デー タ 入力の検証 と し て、 新規データ に関する フ ィ ー ド バ ッ ク が直ちにユーザに返さ れます。 式の中にはサーバ上での評価が必要な も のがあ り ます。 こ れは、 評価 に現在のページのデー タ だけでな く 全体の行が必要な ためか、 ま たは 式が JavaScript に変換 さ れない こ と に よ り ます。 次の関数を含む式は、 サーバ上で評価 さ れ ます。 • Sum、 Max、 Average、 First な ど の集計関数 • Case 関数 • 外部関数 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 156 第6章 Web デー タ ウ ィ ン ド ウの使い方 計算フ ィ ール ド の中で集計関数を使用 し てい る 場合、 その値はサーバ 側で計算 さ れ、 ク ラ イ ア ン ト 上に表示 さ れ ます。 ユーザがデー タ の編 集を行っ て も 、 値は更新 さ れ ません。 ページ を リ ロ ー ド す る ア ク シ ョ ン が発生 し た場合、 変更 さ れたデー タ を基に値が再度計算 さ れ ます。 ProfileInt 関数 と ProfileString 関数はデ フ ォル ト 値を返す デー タ ウ ィ ン ド ウ の式関数 ProfileInt と ProfileString は、 ク ラ イ ア ン ト 側で式を評価す る 場合にはユーザの INI フ ァ イ ルを検査 し ません。 こ れは こ の検査を行 う と セ キ ュ リ テ ィ 違反にな る ためです。 こ れ ら の関 数は常にデフ ォ ル ト 値を返 し ます。 外国語文字セ ッ ト の使い方 Web デー タ ウ ィ ン ド ウ のデー タ ソ ー ス で ア ク セ ン ト 記号の あ る 外国 語が使用 さ れてい る 場合、 文字が適切に表示 さ れ る よ う に、 生成 さ れ る Web ページ の文字セ ッ ト を 変更 し な ければな ら な い こ と が あ り ま す。 こ れは、 外国語テ キ ス ト でデー タ を更新す る 場合に も 当ては ま り ます。 HTML エデ ィ タ で、 生成 さ れたページの <HEAD> セ ク シ ョ ンの <META> タ グ を編集で き ます。 次の例では、 デフ ォ ル ト の文字セ ッ ト iso-8859-1 ではな く 、 文字セ ッ ト utf8 を使用 し てい ます。 <META content="text/html; charset=utf-8" http-equiv="Content-Type"> EAServer での文字セ ッ ト の変更 EAServer の コ ン ポーネ ン ト で使用す る 文字セ ッ ト を変更す る 場合は、 コ ン ポ ー ネ ン ト の com.sybase.jaguar.component.code.set プ ロ パ テ ィ に よ っ て変更す る こ と も 可能です。デフ ォ ル ト では、サーバの コ ー ド セ ッ ト が使用 さ れ ます。 デー タ の リ ン クの実現 カ ラ ム、 テ キ ス ト 、 計算フ ィ ール ド 、 お よ びピ ク チ ャ コ ン ト ロ ールを ハ イ パー リ ン ク にす る た めに全 Web デー タ ウ ィ ン ド ウ 形式に適用す る プ ロ パテ ィ を 設定で き ま す。 ペ イ ン タ で、 コ ン ト ロ ール を 選択 し 、 プ ロ パテ ィ ビ ュ ーで [HTML] タ ブ を選択 し ます。 アプ リ ケーシ ョ ン を配布す る と き には、 指定 し た URL が有効でなければな り ません。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 157 第6章 Web デー タ ウ ィ ン ド ウの使い方 ペ イ ン タ で リ ン ク 情報を設定す る のではな く 、 サーバ コ ン ポーネ ン ト の メ ソ ッ ド を呼び出 し て、 カ ラ ム に HTML プ ロ パテ ィ を設定す る こ と も で き ま す。 詳細については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マ ニ ュ アルの 「SetColumnLink メ ソ ッ ド 」 を参照 し て く だ さ い。 HTML Web デー タ ウ ィ ン ド ウ内のコ ン ト ロールに対する HTML のレ ンダ リ ング HTML Web デー タ ウ ィ ン ド ウ のみ対応 こ の節の内容は、 HTML Web デー タ ウ ィ ン ド ウ にのみ適用 さ れ ま す。 XML Web デー タ ウ ィ ン ド ウ 、 XHTML Web デー タ ウ ィ ン ド ウ では コ ン ト ロ ールの HTML 表示を機能 と し て持つため、 以下の手順を実行す る 必要はあ り ません。 コ ン ト ロールに HTML を取 り 込む テ キ ス ト コ ン ト ロ ール、 カ ラ ム、 計算フ ィ ール ド な ど、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の一部の コ ン ト ロ ールに、適切な HTML を取 り 込む こ と がで き ます。 デー タ ウ ィ ン ド ウ に対応す る HTML の生成時に、 コ ン ト ロ ールの内容を HTML に変換 し て取 り 込むには、 コ ン ト ロ ールの ValueIsHTML プ ロ パテ ィ を TRUE に設定 し ます。 た と えば、 テ キ ス ト コ ン ト ロ ールのテ キ ス ト プ ロ パテ ィ が <I>Name</I> で あ る と し ます。 次の表に、 こ のテ キ ス ト が、生成 さ れ る HTML に ど の よ う に挿入 さ れ、 ブ ラ ウ ザではど の よ う に表示 さ れ る のか を それぞれ示 し ます。 表 6-8: ValueIsHTML プ ロパテ ィ の表示テキス ト への影響 ValueIsHTML 生成 さ れる HTML ソ ース ブ ラ ウザでの表示 TRUE <I>Name</I> Name FALSE <I>Name</I> <I>Name</I> 検査は行われない HTML ジ ェ ネ レー タ は、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の コ ン ト ロ ー ルに取 り 込む HTML の妥当性を検査 し ません。HTML が妥当でない場 合、 デー タ ウ ィ ン ド ウ は正 し く 表示 さ れない こ と があ り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 158 第6章 コ ン ト ロールへの HTML の追加 Web デー タ ウ ィ ン ド ウの使い方 AppendedHTML プ ロ パテ ィ を使用す る と 、 HTML ジ ェ ネ レー タ に よ り 生成 さ れ る HTML に独自の HTML を追加で き ま す。 こ の機能を使用 す る と 、 属性 と イ ベン ト ア ク シ ョ ン を指定で き ます。 AppendedHTML プ ロ パテ ィ 値に指定 し た HTML は、デー タ ウ ィ ン ド ウ コ ン ト ロ ールの レ ン ダ リ ン グ で生成 さ れた構文に追加 さ れ ま す。 追加 さ れ る 位置は、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの HTML 要素の右山カ ッ コ (>) の前 です。 検証は行われない HTML ジ ェ ネ レー タ は、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の コ ン ト ロ ー ルに追加す る HTML の妥当性を検証 し ません。HTML が妥当でない場 合、 デー タ ウ ィ ン ド ウ は正 し く 表示 さ れない こ と があ り ます。 ま た、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールに対 し てすでに生成 さ れてい る イ ベン ト ハン ド ラ 名が、 ク ラ イ ア ン ト サ イ ド の イ ベン ト ハン ド ラ と し て使用 さ れない よ う に し てお く 必要が あ り ま す。 こ れ ら は、 表 6-9 の イ ベン ト ハン ド ラ を含みます。 表 6-9: 生成済みイ ベン ト ハン ド ラ名 デー タ ウ ィ ン ド ウ コ ン ト ロール エデ ィ ッ ト 、 エデ ィ ッ ト マ ス ク 、 ド ロ ッ プダ ウ ン リ ス ト ボ ッ ク ス、 ま た は ド ロ ッ プダ ウ ン デー タ ウ ィ ン ド ウ チ ェ ッ ク ボ ッ ク ス ま たは ラ ジオ ボタン テ キ ス ト ボ ッ ク ス、 リ ン ク が指定 さ れた ピ ク チ ャ 、 ま たはボ タ ン 生成済みイ ベン ト ハン ド ラ名 onFocus、 onClick、 onChange、 お よ び onBlur onFocus、 onClick、 お よ び onBlur onClick ボ タ ン コ ン ト ロール と ピ ク チ ャ コ ン ト ロールの使い方 ボ タ ン コ ン ト ロール の使い方 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト にボ タ ン コ ン ト ロ ールが含 ま れてい る 場合、そのボ タ ンは Web デー タ ウ ィ ン ド ウ ク ラ イ ア ン ト コ ン ト ロ ー ルの Form 要素において HTML ま たは XHTML の button 要素 と な り ま す。ボ タ ン ア ク シ ョ ンは、ボ タ ンの Clicked イ ベン ト に対す る JavaScript コ ー ド と な り ます。 コ ー ド を自分で記述す る 必要はあ り ません。 次の処理に対す る ボ タ ン コ ン ト ロ ールを使用で き ます。 • ナビゲーシ ョ ン 最初のページ、 最後のページ、 次のページ、 前の ペー ジ ア ク シ ョ ン が関連付 け ら れ た ボ タ ン を 使用す る こ と で、 ユーザは結果集合においてほかの行に移動で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 159 第6章 • Web デー タ ウ ィ ン ド ウの使い方 デー タ の取得 と 編集 検索、 更新、 行の挿入、 行の削除、 お よ び行 の追加 ア ク シ ョ ン が関連付 け ら れ た ボ タ ン を 使用す る こ と で、 ユーザはデー タ を管理す る こ と がで き ます。 デー タ ウ ィ ン ド ウ オ ブジ ェ ク ト の中に更新可能な カ ラ ム が存在 し ていな ければな り ま せん。 次のボ タ ンはサポー ト さ れていないため無視 さ れ ます。 キ ャ ン セル フ ィ ルタ プレ ビ ュー プ レ ビ ュ ー ルー ラ ー 印刷 SelfLink プロ パティ を 設定し てナビ ゲーショ ン ボタ ン を 有効にする ク エ リ 消去 ク エ リ モー ド クエ リ ソー ト 名前を付けて行を保存 ソー ト ボ タ ン ア ク シ ョ ン に よ っ て情報がサーバに送 り 返 さ れ る と 、 サーバの ス ク リ プ ト がア ク シ ョ ン をデー タ ウ ィ ン ド ウ デー タ に適用 し ます。 そ の後、 Web ページが リ ロ ー ド さ れ ます。 こ のループ を完全な も のにす る ために、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト に SelfLink プ ロ パテ ィ を設 定 し て、 リ ロ ー ド す る ページ を サーバが認識で き る よ う にす る 必要が あ り ます。 こ の設定は、 デー タ ウ ィ ン ド ウ ペ イ ン タ のデー タ ウ ィ ン ド ウ プ ロ パ テ ィ ビ ュ ーの [Web 生成] タ ブで行 う か、 ス ク リ プ ト で行 う こ と がで き ます。 指定す る 値は、 リ ロ ー ド さ れ る アプ リ ケーシ ョ ン サーバのテ ン プ レー ト ま たは フ ァ イ ルの名前 (一般には、 現行の ド キ ュ メ ン ト の 名前) にな り ます。 デー タ ウ ィ ン ド ウ で検索引数を使用す る 場合、 そ の検索引数は SelfLinkArgs プ ロ パテ ィ の中で指定 さ れていな ければな り ません。 詳細については、 201 ページの 「 リ ロ ー ド さ れたページにページ固有 のデー タ を渡す」 お よ び 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス 』 マニ ュ ア ルの 「SetSelfLink メ ソ ッ ド 」 を参照 し て く だ さ い。 ボ タ ン用の GIF およ び JPEG 画像 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のボ タ ン に使用す る 画像は、 Web ブ ラ ウ ザには JPEG、 GIF、 ま たは BMP 画像 と し て取 り 込ま れ ます。 JPEG ま たは GIF 画像を使用すれば、 画像はすべてのブ ラ ウ ザで表示 さ れ ま す。 PowerBuilder には、 Retrieve、 Update、 PageNext な ど一般的に使用 す る ボ タ ン 用 に GIF 画 像 が 用 意 さ れ て い ま す。 こ れ ら の 画 像 は、 Sybase¥Shared¥PowerBuilder デ ィ レ ク ト リ の DWACTION.JAR フ ァ イ ル内にあ り ます。 Web ブ ラ ウ ザの Web ページで画像を使用で き る よ う にす る には、 JAR フ ァ イ ル を 解凍 し 、 そ の画像 フ ァ イ ル を ペー ジ サーバに配置 し て、 フ ァ イ ルが格納 さ れ る デ ィ レ ク ト リ を HTMLGen.ResourceBase プ ロ パ テ ィ に設定 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 160 第6章 ボタ ン の代替方法: ク ラ イ アン ト コ ン ト ロ ー ルのメ ソ ッ ド の使用 Web デー タ ウ ィ ン ド ウの使い方 ボ タ ン コ ン ト ロ ールがない既存のデー タ ウ ィ ン ド ウ オブジ ェ ク ト を 使用す る 場合は、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を編集 し 、 ボ タ ン コ ン ト ロ ールが あ る 新 し いデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を 保存す る こ と がで き ます。 ただ し 、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を既存のア プ リ ケーシ ョ ン と 共有 し 、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を編集す る こ と が現実的でない場合には、Web デー タ ウ ィ ン ド ウ ク ラ イ ア ン ト コ ン ト ロ ールの メ ソ ッ ド を呼び出すための HTML ま たは XHTML ボ タ ン を Web ページに含め る こ と がで き ます。 サポー ト さ れてい る 各ボ タ ン ア ク シ ョ ン に対応す る ク ラ イ ア ン ト コ ン ト ロ ールの メ ソ ッ ド があ り ます。 詳細については、 170 ページの 「 ク ラ イ ア ン ト サ イ ド ス ク リ プ ト の記述」 を参照 し て く だ さ い。 ピ ク チ ャ コ ン ト ロー ルの使い方 ブ ラ ウ ザがサポー ト す る 画像形成を使用で き ます。 も っ と も 一般的な も のは JPEG や GIF です。 相対パ ス を使用す る と 、 画像の配布が簡単 に行え ます。 Web ブ ラ ウ ザの Web ページで画像を使用で き る よ う にす る には、 その 画像フ ァ イ ルを Web サーバ上のデ ィ レ ク ト リ に配置 し 、 そのデ ィ レ ク ト リ を HTMLGen.ResourceBase プ ロ パテ ィ に設定 し ます。 こ の設定は、 デー タ ウ ィ ン ド ウ ペ イ ン タ のデー タ ウ ィ ン ド ウ プ ロ パテ ィ ビ ュ ーの [JavaScript 生成] ページで行 う か、 次の よ う に ス ク リ プ ト を使用 し て 行 う こ と がで き ます。 dwMine.Modify("DataWindow.HTMLGen.ResourceBase= 'C:\Sybase\MyApp\Images'") ま た、 ResourceBase プ ロ パテ ィ には、 JavaScript イ ン ク ルー ド フ ァ イ ル の場所 も 指定 し ます。 152 ページの 「Web デー タ ウ ィ ン ド ウ メ ソ ッ ド への JavaScript キ ャ ッ シ ュ の使い方」 を参照 し て く だ さ い。 画像フ ァ イルの配布場所 画像フ ァ イ ルは、 コ ン ポーネ ン ト サーバではな く 、 Web サーバに配布 す る 必要があ り ます。 こ れ ら のサーバが別々の コ ン ピ ュ ー タ に イ ン ス ト ール さ れてい る 場合は、 画像フ ァ イ ルはデー タ ウ ィ ン ド ウ オブジ ェ ク ト を含む PBL ではな く 、 ア プ リ ケーシ ョ ン の テ ン プ レ ー ト と Web フ ァ イ ルに属 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 161 第6章 Web デー タ ウ ィ ン ド ウの使い方 特定のブ ラ ウザ用の Web 生成の指定 ブ ラ ウザ と HTML バージ ョ ンについて Web デー タ ウ ィ ン ド ウ では、 各種ブ ラ ウ ザに対 し て最適な HTML お よ び XHTML を生成で き ま す。 デー タ ウ ィ ン ド ウ プ ロ パテ ィ シー ト の [Web 生成] タ ブに あ る XHTML お よ び HTML 形式用の [ブ ラ ウ ザ] オプシ ョ ン を使用すれば、 デー タ ウ ィ ン ド ウ が各種ブ ラ ウ ザで ど の よ う に表示 さ れ る か を プ レ ビ ュ ーで き ます。 ブ ラ ウ ザが認識 さ れない場 合は、 Web 生成で使用す る HTML バージ ョ ン を指定す る こ と も で き ま す。 実行時に、サーバ サ イ ド ス ク リ プ ト は現在 ク ラ イ ア ン ト が使用 し てい る ブ ラ ウ ザを特定 し 、 それに関す る 情報を サーバ コ ン ポーネ ン ト に渡 す必要があ り ます。 詳細については、 200 ページの 「SetBrowser」 お よ び 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マ ニ ュ ア ルの 「SetBrowser メ ソ ッ ド 」 ま たはオ ン ラ イ ン ヘルプ を参照 し て く だ さ い。 Netscape の絶対位置 の使い方 Netscape は、 Internet Explorer と は異な り 、 絶対位置を実装 し てい ます。 Netscape ブ ラ ウ ザの絶対位置を使用 し てデー タ ウ ィ ン ド ウ の書式設定 をす る には、デー タ ウ ィ ン ド ウ HTMLGen.NetscapeLayers プ ロ パテ ィ を true に設定す る 必要が あ り ま す。 こ の設定を行 う には、 デー タ ウ ィ ン ド ウ ペ イ ン タ で、 デー タ ウ ィ ン ド ウ プ ロ パテ ィ ビ ュ ーの [Web 生成] ページにあ る [Netscape 用の レ イ ヤ を使用] チ ェ ッ ク ボ ッ ク ス を選択 し ます。 ま た、 ス ク リ プ ト で、 HTML ジ ェ ネ レー タ (PowerBuilder に 付属す る PBDWRMT.PBL の nv_remote_datawindow) の Generate メ ソ ッ ド を呼び出す前にデー タ ウ ィ ン ド ウ Modify メ ソ ッ ド を呼び出 し 設定 す る こ と も で き ます。 デフ ォ ル ト のデー タ ウ ィ ン ド ウ HTML ジ ェ ネ レー タ は、 ク ラ イ ア ン ト ブ ラ ウ ザの種類 と バージ ョ ン を 判断す る コ ー ド を 生成 し ま す。 バー ジ ョ ン 4.0 よ り 前の Netscape ブ ラ ウ ザでは、NetscapeLayers プ ロ パテ ィ の設定の有無にかかわ ら ず、 デー タ ウ ィ ン ド ウ は HTML テーブル と し て設定 さ れ ます。 Netscape での制約 絶 対 位 置 を 使 用 す る Netscape ブ ラ ウ ザ の 一 部 の 機 能 は、 Internet Explorer で使用で き る 機能 と 一致 し な い場合が あ り ま す。 た と えば、 NT マシ ン上で動作す る Netscape ブ ラ ウ ザでは、 デー タ ウ ィ ン ド ウ カ ラ ム間を 〔Tab〕 で移動す る こ と はで き ませんが、 Solaris マシ ン上で動 作す る Netscape ブ ラ ウ ザでは 〔Tab〕 で移動で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 162 第6章 Web デー タ ウ ィ ン ド ウの使い方 デー タ ウ ィ ン ド ウのプ レ ビ ュ ー Web デー タ ウ ィ ン ド ウ ア プ リ ケーシ ョ ン でデー タ ウ ィ ン ド ウ が ど の よ う に表示 さ れ る か を確認す る には、HTML プ レ ビ ュ ーを使用 し ます。 v Web デー タ ウ ィ ン ド ウの HTML プ レ ビ ュ ーを取得するには 1 デー タ ウ ィ ン ド ウ プ ロ パテ ィ シー ト の [全般] プ ロ パテ ィ ページ で、[HTML デー タ ウ ィ ン ド ウ ]チ ェ ッ ク ボ ッ ク ス を オ ンに し ます。 [HTML デー タ ウ ィ ン ド ウ ] チ ェ ッ ク ボ ッ ク ス を オ ン に し ていない 場合、 プ レ ビ ュ ーでは、 ボ タ ンや入力条件則、 ま たはそのほかの ス ク リ プ ト を持たない HTML テーブル と し てデー タ が表示 さ れま す。 2 [Web 生成] ページで、 [ページ あ た り の行数] の値を指定 し ます。 こ れに よ っ て、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の PageSize プ ロ パ テ ィ が設定 さ れ ます。 デー タ を 1 行のみ表示す る 場合は、 1 を指定 し ます。 3 特定の ク ラ イ ア ン ト 構成に応 じ てデー タ ウ ィ ン ド ウ を プ レ ビ ュ ー す る 場合は、 [ブ ラ ウ ザ] に値を指定 し 、 [HTML バージ ョ ン] に 1 を指定 し ます。 4 メ ニ ュ ー バーか ら 、 [デザ イ ン| HTML のプ レ ビ ュ ー] を選択 し ます。 メ ニ ュ ー項目が無効にな っ てい る 場合は、 プ レ ビ ュ ー ビ ュ ーを開 く と その メ ニ ュ ー項目が有効にな り ます。 5 デー タ を入力 し て、 入力条件則が期待どお り に機能す る か ど う か を確認 し ます。 6 ボ タ ン を使用 し て別のページに移動 し ます。 デー タ ベース接続の設定 Web デー タ ウ ィ ン ド ウ を使用す る 場合、 Web デー タ ウ ィ ン ド ウ サーバ コ ン ポーネ ン ト がデー タ ベース と 通信 し ます。そのため、その コ ン ポー ネ ン ト が動作す る サーバ上でデー タ ベー ス接続を設定す る 必要があ り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 163 第6章 Web デー タ ウ ィ ン ド ウの使い方 EAServer を コ ン ポーネ ン ト サーバ と し て使用す る 場合、 ODBC、 Open Client、 JDBC、 OCI な ど の接続 ソ フ ト ウ ェ ア を使 う こ と がで き ます。 そ の場合、 使用す る デー タ ソ ース に対 し て接続キ ャ ッ シ ュ を設定す る 必 要が あ り ま す。 次の 「EAServer 5.x での接続キ ャ ッ シ ュ の作成」 を参 照 し て く だ さ い。 使用するデー タ ベース 接続ソ フ ト ウ ェ ア COM+ を コ ン ポーネ ン ト サーバ と し て使用す る 場合は、 ODBC を使用 し て接続プール機能 と ト ラ ンザ ク シ ョ ン管理機能を利用 し なければな り ません。 その場合、 COM+ はサービ ス と し て動作す る ので、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のデー タ ソ ース は、 COM+ のシ ス テ ム DSN と し て構成 し なければな り ません。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を定義す る 際には、 『デー タ ベー ス と の接続』 マニ ュ アルに記載 さ れてい る タ イ プのデー タ ベース 接続 ソ フ ト ウ ェ ア を使用で き ます。 サーバ上でのデー タ ベース 接続の設定を簡 単にす る には、 デー タ ウ ィ ン ド ウ ペ イ ン タ で、 デー タ ウ ィ ン ド ウ の配 布時 と 同 じ 種類の接続を使用 し ます。 た と えば、 Open Client 接続を使 用 し て EAServer でデー タ ウ ィ ン ド ウ を使用す る 場合 も 、デー タ ウ ィ ン ド ウ ペ イ ン タ で Open Client を使用す る と 便利です。 Adaptive Server Enterprise の使い方 PowerBuilder と EAServer では、 Open Client を使用 し て Adaptive Server Enterprise に接続す る 際の CT-Lib ソ フ ト ウ ェ アの使い方が少 し 異な り ます。 PowerBuilder 開発環境では、 SYC ネ イ テ ィ ブ デー タ ベース イ ン タ フ ェ ー ス を 使用 し て デー タ ベー ス に 接続 し ま す が、 EAServer で Adaptive Server Enterprise デー タ ベース に接続す る 場合は、 SYJ デー タ ベース イ ン タ フ ェ ース を使用 し なければな り ません。 HTMLGenerator115 コ ン ポーネ ン ト ま たはカ ス タ ム コ ン ポーネ ン ト を EAServer で使用す る には、 コ ン ポーネ ン ト が使用す る デー タ ベース の 接 続 キ ャ ッ シ ュ (EAServer 5.x) ま た は デ ー タ ソ ー ス キ ャ ッ シ ュ (EAServer 6.x) を設定す る 必要があ り ます。 EAServer 5.x での接 続キ ャ ッ シ ュの作成 v EAServer 5.x で接続キ ャ ッ シ ュ を作成するには 1 適切なデー タ ベー ス 環境設定 ソ フ ト ウ ェ ア を使用 し て、 接続の種 類を定義 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 164 第6章 Web デー タ ウ ィ ン ド ウの使い方 Windows 環境での ODBC 接続の場合、 ODBC コ ン ト ロ ール パネル を開 き 、 デー タ ベー ス に対 し てデー タ ソ ー ス 名 (DSN) を定義 し ます。 SQL Anywhere 11 を イ ン ス ト ール し てい る 場合は、 定義済み のユーザ DSN を使用 し て SQL Anywhere のサン プル デー タ ベース に接続 し 、 テ ス ト す る こ と がで き ます。 EAServer がサービ ス と し て動作 し てい る 場合は、 ユーザ DSN ではな く 、 シ ス テ ム DSN を 使用 し なければな り ません。 UNIX 環境での操作については、 ド ラ イ バのマニ ュ アルを参照 し て く だ さ い。 2 EAServer お よ び EAServer Manager を起動 し ます。 ご使用のプ ラ ッ ト フ ォ ーム用の 『EAServer ク ッ ク ブ ッ ク 』 マニ ュ アルで説明 さ れ る 手順に従っ て く だ さ い。 3 EAServer Manager の左側のペイ ンで、サーバ名の下にあ る [Connection Cache] ノ ー ド を右 ク リ ッ ク し 、 [New Connection Cache...] を選択 し ます。 4 Create Connection Cache ダ イ ア ロ グ ボ ッ ク ス が表示 さ れます。 5 キ ャ ッ シ ュ の名前を入力 し 、 [OK] を ク リ ッ ク し ま す。 こ の名前 を変更す る こ と はで き ません。 6 接続キ ャ ッ シ ュ のプ ロ パテ ィ ダ イ ア ロ グボ ッ ク ス の [General] タ ブで、 デー タ ベー ス 接続情報を指定 し 、 [Driver] タ ブで、 使用す る ド ラ イ バを指定 し ます。 Windows 環 境 で の ODBC 接 続 の 場 合 : [General] タ ブ に あ る [Database Connection] の [Server Name] に対 し て、 手順 1 で定義 し た DSN を指定 し ます。 ユーザ名ま たはパ ス ワ ー ド が DSN で指 定 さ れてい る 場合は、 あ ら ためて指定す る 必要はあ り ません。 [Driver] タ ブで、 [ODBC] ラ ジ オ ボ タ ン を ク リ ッ ク し 、 [DLL or Class Name] に対 し て 「ODBC32.dll」 を指定 し ます。 それ以外の接続の場合 : ご使用のプ ラ ッ ト フ ォ ーム用の 『EAServer ク ッ ク ブ ッ ク 』 マニ ュ アルを参照 し て く だ さ い。 7 [Caching] タ ブの [Enable Cache-by-Name Access] チ ェ ッ ク ボ ッ ク ス を選択 し ます。 8 [General] タ ブの [Refresh] を ク リ ッ ク し ます。 [Refresh] ボ タ ン は、 サーバ ノ ー ド か ら ア ク セ スす る 接続キ ャ ッ シ ュ のプ ロ パテ ィ ダ イ ア ロ グ ボ ッ ク ス でのみ使用で き ます。 9 接続を テ ス ト す る には、 [Ping] を ク リ ッ ク し ます。 接続キ ャ ッ シ ュ の設定についての詳細は、 EAServer 5.x のマ ニ ュ アル を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 165 第6章 Web デー タ ウ ィ ン ド ウの使い方 EAServer 6.x では、 接続キ ャ ッ シ ュ では な く 、 デー タ ソ ー ス キ ャ ッ シ ュ を定義 し ます。 キ ャ ッ シ ュ は、 Web Administration Console (Sybase Management Console) で定義 し ます。 EAServer 6.x での デー タ ソ ース キ ャ ッ シ ュの作成 v EAServer 6.x でデー タ ソ ース キ ャ ッ シ ュ を作成するには 1 適切なデー タ ベー ス 環境設定 ソ フ ト ウ ェ ア を使用 し て、 接続の種 類を定義 し ます。 Windows 環境での ODBC 接続の場合、 ODBC コ ン ト ロ ール パネル を開 き 、 デー タ ベー ス に対 し てデー タ ソ ー ス 名 (DSN) を定義 し ます。 SQL Anywhere 11 を イ ン ス ト ール し てい る 場合は、 定義済み のユーザ DSN を使用 し て SQL Anywhere のサン プルデー タ ベース に接続 し 、 テ ス ト す る こ と がで き ます。 EAServer がサービ ス と し て動作 し てい る 場合は、 ユーザ DSN ではな く 、 シ ス テ ム DSN を 使用 し なければな り ません。 UNIX 環境での操作については、 ド ラ イ バのマニ ュ アルを参照 し て く だ さ い。 2 EAServer お よ び Web Administration Console を起動 し ます。 ご 使用の プ ラ ッ ト フ ォ ー ム 用の 『EAServer System Administration Guide』 マニ ュ アルで説明 さ れ る 手順に従っ て く だ さ い。 3 コ ン ソ ールの左側のペ イ ン で、EAServer [Manager | Local Server | Resources | Data Sources] ノ ー ド を右 ク リ ッ ク し 、 [Add] を 選択 し ます。 コ ン ソ ールの右側のペ イ ンに、 New Data Source ウ ィ ザー ド が表示 さ れ ます。 4 ウ ィ ザー ド の 2 ページ目でキ ャ ッ シ ュ のデー タ ソ ース名を入力 し 、 [Next] を ク リ ッ ク し ます。 こ の名前は、 コ ン ソ ールでは変更で き ま せん。 ただ し 、 削除 し て ウ ィ ザー ド をや り 直す こ と はで き ます。 5 ウ ィ ザー ド の残 り のページで、 DBMS のデー タ ベース の種類を選 択 し 、 デフ ォ ル ト 設定を使用 し ていない他の ウ ィ ザー ド フ ィ ール ド でデフ ォ ル ト エ ン ト リ を変更 し ます。 [Finish] を ク リ ッ ク し ま す。 ウ ィ ザー ド で入力 し た設定の変更は、 [Finish] の ク リ ッ ク 後に コ ン ソ ールの右側のペ イ ン に表示 さ れ る デー タ ソ ー ス プ ロ パテ ィ シー ト の タ ブで行え ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 166 第6章 Web デー タ ウ ィ ン ド ウの使い方 Windows 環境での ODBC 接続の場合 : ウ ィ ザー ド ま た はデー タ ソ ース プ ロ パテ ィ シー ト の [General] タ ブにあ る [Server Name] に対 し て、 手順 1 で定義 し た DSN を指定 し ます。 ユーザ名ま たは パ ス ワ ー ド が DSN で指定 さ れてい る 場合は、 あ ら ためて指定す る 必要はあ り ません。 それ以外の場合 : ご使用のプ ラ ッ ト フ ォ ーム用の 『EAServer ク ッ ク ブ ッ ク 』 マニ ュ アルを参照 し て く だ さ い。 6 デー タ ソ ース プ ロ パテ ィ シー ト の タ ブで変更を行っ た場合は、 [Apply] を ク リ ッ ク し ます。 7 接続を テ ス ト す る には、 コ ン ソ ールの左側ペ イ ン の Data Sources ノ ー ド の下に あ る 、 作成 し た デー タ ソ ー ス を 右 ク リ ッ ク し て、 [Ping] を選択 し ます。 ping が成功 し なか っ た場合は、 EAServer の再起動が必要にな る 場 合があ り ます。 デー タ ソ ース の設定についての詳細は、 EAServer 6.x のマニ ュ アルを 参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の コ ンポーネ ン ト サーバ への配布 Web デー タ ウ ィ ン ド ウ ア プ リ ケーシ ョ ン を 実行す る 場合、 使用す る デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の定義が コ ン ポーネ ン ト サーバ上で 使用で き なければな り ません。 そのためには、 オブジ ェ ク ト の定義を 含む PBL ま たは PBD フ ァ イ ルをサーバに コ ピー し ます。 EAServer を 使用す る 場合は、 フ ァ イ ルはサーバのパ ス に存在 し なければな り ませ ん。 サーバ コ ン ポーネ ン ト がサービ ス と し て動作す る 場合は、 シ ス テ ム パ ス に存在 し なければな り ません。 COM+ は常にサービ ス と し て動 作 し ます。 し たがっ て、 フ ァ イ ルは COM+ サーバのシ ス テ ム パ ス に存 在 し なければな り ません。 開発環境の設定についての詳細は、 193 ページの 「サーバ構成の要件」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 167 第6章 Web デー タ ウ ィ ン ド ウの使い方 Web デー タ ウ ィ ン ド ウ コ ン テナ プ ロ ジ ェ ク ト ウ ィ ザー ド PowerBuilder では、Web デー タ ウ ィ ン ド ウ コ ン テナ プ ロ ジ ェ ク ト ウ ィ ザー ド を使用す る こ と で、 ラ イ ブ ラ リ リ ス ト 内のデー タ ウ ィ ン ド ウ オ ブジ ェ ク ト をすべて配布 PBL に組み込んで、 カ ス タ ム バージ ョ ン の Web デー タ ウ ィ ン ド ウ サーバ コ ン ポーネ ン ト (HTMLGenerator115) を EAServer に配布で き ます。 プ リ イ ン ス ト ール さ れてい る HTMLGenerator115 コ ン ポーネ ン ト では な く 、 カ ス タ ム コ ン ポーネ ン ト を使用す る ので、 EAServer Manager で コ ン ポーネ ン ト のプ ロ パテ ィ を設定で き ます。 プ ロ パテ ィ を設定す る と 、 コ ン ポーネ ン ト の構成に必要な メ ソ ッ ド 呼び出 し の回数を減 ら す こ と がで き る ので、パフ ォ ーマ ン ス、管理性、お よ びス ケー ラ ビ リ テ ィ が向上 し ます。 ウ ィ ザー ド の使い方 必要なデー タ ウ ィ ン ド ウ オブジ ェ ク ト を定義 し た ら 、新規作成 ダ イ ア ロ グ ボ ッ ク ス の [プ ロ ジ ェ ク ト ] ページか ら Web DW コ ン テナ ウ ィ ザー ド を起動 し て、 ウ ィ ザー ド の指示に従っ て操作 し ます。 ウ ィ ザー ド で選択す る 項目は、ほかの EAServer コ ン ポーネ ン ト に対 し て選択す る 項目 と 類似 し てい ます。 た と えば、 イ ン ス タ ン ス のプー リ ン グ機能を サポー ト す る か ど う か、 ま たは、 ラ イ ブ編集機能を サポー ト す る か ど う か を選択 し ます。 パ ッ ケージ と コ ン ポーネ ン ト には自由 に名前を付け る こ と がで き ますが、 パ ッ ケージ DataWindow (プ リ イ ン ス ト ール さ れた HTMLGenerator115 コ ン ポーネ ン ト を含むパ ッ ケージ の名前) に名前を指定す る こ と はで き ません。 コ ン ポーネ ン ト の種類 ま たは ト ラ ンザ ク シ ョ ン サポー ト プ ロ パテ ィ は設定で き ません。 Web デー タ ウ ィ ン ド ウ コ ン テナ プ ロ ジ ェ ク ト の作成では、コ ン ポーネ ン ト のい く つかのプ ロ パテ ィ が事前に設定 さ れ ます。 こ れ ら の設定は、 ス ク リ プ ト か EAServer Manager を使用 し て行 う こ と も で き ます。 ウ ィ ザー ド ま たはプ ロ ジ ェ ク ト ペ イ ン タ でデー タ ベー ス プ ロ フ ァ イ ル を 指定 し て、com.sybase.datawindow.trans.dbms やそのほかのデー タ ベース ト ラ ンザ ク シ ョ ン プ ロ パテ ィ を設定で き ます。 コ ン ポーネ ン ト メ ソ ッ ド の呼び出 し を サーバ ロ グに記述す る 場合は、 [ ト レ ー ス を有効にす る ] を選択 し て com.sybase.datawindow.trace プ ロ パテ ィ を設定 し ます。 接続キ ャ ッ シ ュ またはデー タ ソ ース キ ャ ッ シ ュ プ ロ フ ァ イ ルを指定す る と 、 コ ン ポーネ ン ト に対 し てデー タ ベース ト ラ ンザ ク シ ョ ン プ ロ パテ ィ が設定 さ れ ますが、 その コ ン ポーネ ン ト が ア ク セ ス す る デ ー タ ベ ー ス に 対 し て は、 EAServer Manager で 接 続 キ ャ ッ シ ュ (EAServer 5.x) ま たはデー タ ソ ース キ ャ ッ シ ュ (EAServer 6.x) を作成す る 必要があ り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 168 第6章 サービ ス ク ラ ス Web デー タ ウ ィ ン ド ウの使い方 カ ス タ ム ク ラ ス ユーザ オブジ ェ ク ト を プ ロ ジ ェ ク ト に追加 し て、 必 要 と さ れ る 特殊な処理を実行で き ます。 こ のオブジ ェ ク ト は、 サービ ス ク ラ ス と し て機能 し ます。カ ス タ ム ク ラ ス ユーザ オブジ ェ ク ト は、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト と 同 じ ラ イ ブ ラ リ か、 対象の ラ イ ブ ラ リ リ ス ト に存在 し なければな り ません。Web デー タ ウ ィ ン ド ウ コ ン テ ナ プ ロ ジ ェ ク ト を作成す る と き は、プ ロ ジ ェ ク ト ペ イ ン タ の オブジ ェ ク ト の選択 ダ イ ア ロ グ ボ ッ ク ス で ク ラ ス を選択 し ます。 詳細については、 217 ページの 「サービ ス ク ラ ス の使い方」 を参照 し て く だ さ い。 コ ン テナ コ ンポーネ ン ト のイ ン ス タ ン ス化 コ ン テナ コ ンポーネン ト の イ ン ス タ ン ス を作成する場合は、コ ンポーネ ン ト 用の Java プ ロ キ シ を 提供す る か、 DataWindow/HTMLGenerator115 を最後の引数 と し て CreateComponent メ ソ ッ ド に渡 さ なければな り ませ ん。 こ れに よ り 、 その コ ンポーネン ト では提供 さ れたプ ロ キシが汎用コ ンポーネン ト に対し て使用 さ れる よ う にな り ます。 次に例を示し ます。 dwObj = java.CreateComponent ("ContainerPkg/ContComponent", "iiop://testMachine:2000", "Jagadmin", "mypass", "DataWindow/HTMLGenerator115" ); 以上の方法は、 カ ス タ ム コ ン ポーネ ン ト を イ ン ス タ ン ス化す る 方法 と 同 じ です。 カ ス タ ム コ ン ポーネ ン ト についての詳細は、 213 ページの 「カ ス タ ム コ ン ポーネ ン ト の イ ン ス タ ン ス化」 を参照 し て く だ さ い。 コ ン テナ コ ンポーネ ン ト から のデー タ ウ ィ ン ド ウの選択 コ ン テ ナ コ ン ポ ー ネ ン ト か ら デー タ ウ ィ ン ド ウ を 選択す る に は、 SetDWObject メ ソ ッ ド ではな く SetDWObjectEx メ ソ ッ ド を使用 し なけ ればな り ません。 // デー タ ウ ィ ン ド ウのみ必要です。 パ ッ ケージは接続時に // すでに指定 さ れています。 retVal = dwObj.SetDWObjectEx("d_mydw"); document. write("SetDwObject = " + retVal); SetDWObject メ ソ ッ ド についての詳細は、 197 ページの 「デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の ロ ー ド 」 お よ び 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 169 第6章 Web デー タ ウ ィ ン ド ウの使い方 ク ラ イ ア ン ト サイ ド ス ク リ プ ト の記述 イ ベン ト への応答 新たに入力 さ れたデー タ の追加処理を行 う 場合や、 ユーザのデー タ と の対話の制御を強化す る 場合は、 Web デー タ ウ ィ ン ド ウ ク ラ イ ア ン ト コ ン ト ロ ール内の イ ベン ト を有効に し ます。そのためには、デー タ ウ ィ ン ド ウ ペ イ ン タ の [Web 生成] ページ で ク ラ イ ア ン ト での イ ベ ン ト (ClientEvents プ ロ パテ ィ ) を設定す る か、 サーバ サ イ ド ス ク リ プ ト で SetWeight メ ソ ッ ド を呼び出 し ます。 ク ラ イ ア ン ト コ ン ト ロ ールは、 複数の イ ベ ン ト を サ ポー ト し て い ま す。 ButtonClicking ButtonClicked Clicked ItemError ItemFocusChanged OnSubmit ItemChanged RowFocusChanged RowFocusChanging UpdateStart 上記の イ ベン ト には、 PowerBuilder デー タ ウ ィ ン ド ウ コ ン ト ロ ールの イ ベン ト と 類似 し た引数 と 、 同一の リ タ ーン コ ー ド があ り ます。 詳細 については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アル ま たはオ ン ラ イ ン ヘルプ を参照 し て く だ さ い。 イ ベン ト の実装 ク ラ イ ア ン ト コ ン ト ロ ールの イ ベ ン ト 用の ス ク リ プ ト を 記述す る に は、 関数を定義 し ま す。 関数名は、 コ ン ト ロ ール名 と イ ベン ト 名を ア ン ダース コ アで区切っ て指定 し ます。 HTMLGenObjectName_eventname ( arguments ) コ ン ト ロ ール名は、 SetHTMLObjectName メ ソ ッ ド を使用する か、 データ ウ ィ ン ド ウ ペ イ ン タ の [Web 生 成] ペー ジ で オ ブ ジ ェ ク ト 名 (ObjectName プ ロ パテ ィ ) を使用し て指定し た名前です。 ス ク リ プ ト は、 SCRIPT タ グで囲ま なければな り ません。 ク ラ イ ア ン ト ス ク リ プ ト が有 効にな っ てい る場合、ス ク リ プ ト に ク ラ イ ア ン ト メ ソ ッ ド を含め る こ と がで き ます (後述)。 次の例では、 ユーザが前の行に戻ろ う と し た場合に、 フ ォ ーカ ス が変 更 さ れ な い よ う に し ま す。 こ こ で は、 デー タ ウ ィ ン ド ウ の 名前 は dwMine です。 <SCRIPT Language=JavaScript> function dwMine_RowFocusChanging(curRow, newRow) { if (newRow < curRow) { return 1; } } </SCRIPT> デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 170 第6章 Web デー タ ウ ィ ン ド ウの使い方 ス ク リ プ ト は、 Web ページ テ ン プ レー ト 内の、 ど の位置にで も 配置で き ます。 ク ラ イアン ト メ ソ ッ ド の呼び出 し ク ラ イ ア ン ト コ ン ト ロ ールの メ ソ ッ ド を 呼び出すための ス ク リ プ ト を記述す る には、 ク ラ イ ア ン ト の ス ク リ プ ト 機能を有効にす る 必要が あ り ます。 そのためには、 デー タ ウ ィ ン ド ウ ペ イ ン タ で ク ラ イ ア ン ト での ス ク リ プ ト 利用可能 (ClientScriptable プ ロ パテ ィ ) を設定す る か、 サーバ サ イ ド ス ク リ プ ト で SetWeight メ ソ ッ ド を呼び出 し ます。 一部の ク ラ イ ア ン ト メ ソ ッ ド は、ボ タ ン コ ン ト ロ ールのア ク シ ョ ン と 同 じ 機能を実行 し ます。デー タ ウ ィ ン ド ウ オブジ ェ ク ト がボ タ ン コ ン ト ロ ールを使用 し て、 ス ク ロ ール と 更新を実現す る 場合は、 ク ラ イ ア ン ト ス ク リ プ ト を記述す る 必要がない こ と も あ り ます。 ク ラ イ ア ン ト 側では次の メ ソ ッ ド を使用で き ます。 ア ス タ リ ス ク が付 いた メ ソ ッ ド は、 Web ページ を強制的に リ ロ ー ド し ます。 AcceptText DeletedCount DeleteRow * GetClickedColumn GetClickedRow GetColumn GetFullContext GetNextModified GetRow GetItem GetItemStatus InsertRow * IsRowSelected ModifiedCount Retrieve * RowCount ScrollFirstPage * ScrollLastPage * ScrollNextPage * ScrollPriorPage * SelectRow SetItem SetColumn SetRow SetSort Sort * Update * GetNextModified GetNextModified メ ソ ッ ド は、 現在のページで変更 さ れた行のみを検索 し ます。 以上の メ ソ ッ ド についての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス 』 マニ ュ アル ま たはオ ン ラ イ ン ヘルプ を参照 し て く だ さ い。 次の例では、 ボ タ ン を持つフ ォ ーム を示 し てい ます。 こ のボ タ ン を ク リ ッ ク す る と 、 サーバ上でデー タ が更新 さ れます。 <FORM NAME="update"> <INPUT type="button" value="Update" onClick="{dwMine. Update();}"> こ れに よ り 、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のボ タ ン コ ン ト ロ ール に、 更新ア ク シ ョ ン と 同 じ 機能が得 ら れます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 171 第6章 1 ページに複数の デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト がある場合 Web デー タ ウ ィ ン ド ウの使い方 同 じ Web ページ上に、 更新可能な複数の Web デー タ ウ ィ ン ド ウ が あ る 場合、 ク ラ イ ア ン ト サ イ ド イ ベン ト OnSubmit の ス ク リ プ ト を記述 し て、 ページ上での変更を送信す る 前に Web デー タ ウ ィ ン ド ウ を同期 さ せ る こ と がで き ます。 GetFullContext メ ソ ッ ド を呼び出す こ と で、 送 信時に渡 さ れ る ク ラ イ ア ン ト サ イ ド コ ン ト ロ ールの コ ン テ キ ス ト を 表す文字列を取得 し て、 その コ ン テ キ ス ト を別のデー タ ウ ィ ン ド ウ コ ン ト ロ ールに送 り ます。 2 つ目 の デー タ ウ ィ ン ド ウ を 有効 に し て、 送信 フ ォ ー ム に 必要 な フ ィ ール ド を作成す る には、 各デー タ ウ ィ ン ド ウ で 2 つの引数を自己 の リ ン ク の引数 と し て定義 し なければな り ません。 dw_1.SetSelfLink(document.name, "dw_2_context=''|dw_2_action=''") dw_2.SetSelfLink(document.name, "dw_1_context=''|dw_1_action=''") 次の ク ラ イ ア ン ト サ イ ド ス ク リ プ ト は、 dw_1 の送信時に dw_2 か ら dw_1 に、 dw_2 の送信時に dw_1 か ら dw_2 に、 コ ン テ キ ス ト と ア ク シ ョ ン を送信 し ます。 <SCRIPT> function dw_1_OnSubmit() { dw_1.submitForm.dw_2_context.value = dw_2.GetFullContext(); dw_1.submitForm.dw_2_action.value = ""; } function dw_2_OnSubmit() { dw_2.submitForm.dw_1_context.value = dw_1.GetFullContext(); dw_2.submitForm.dw_1_action.value = ""; } </SCRIPT> 生成 さ れる Web デー タ ウ ィ ン ド ウのカ ス タ マ イ ズ デー タ ウ ィ ン ド ウ ペ イ ン タ の XHTML エ ク ス ポ ー ト テ ン プ レ ー ト ビ ュ ーにあ る XHTML エ ク ス ポー ト テ ン プ レー ト を使用すれば、XML Web デー タ ウ ィ ン ド ウ お よ び XHTML Web デー タ ウ ィ ン ド ウ に よ っ て 実行時に生成 さ れ る XHTML を カ ス タ マ イ ズで き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 172 第6章 Web デー タ ウ ィ ン ド ウの使い方 XML および XHTML Web デー タ ウ ィ ン ド ウによ る カ ス タ マ イ ズ こ の節では、 XML Web デー タ ウ ィ ン ド ウ に よ っ て生成 さ れ る XHTML のカ ス タ マ イ ズ を中心に説明 し ます。 XHTML エ ク スポー ト テ ン プ レー ト ビ ュ ー 作成 し た各デー タ ウ ィ ン ド ウ オブジ ェ ク ト には、 オブジ ェ ク ト に関連 付け ら れたデフ ォ ル ト の XHTML エ ク ス ポー ト テ ン プ レー ト があ り ま す。 デ フ ォ ル ト の テ ン プ レ ー ト は デ ー タ ウ ィ ン ド ウ ペ イ ン タ の XHTML エ ク ス ポー ト テ ン プ レー ト ビ ュ ーで確認で き ます。 XHTML エ ク スポー ト テ ン プ レー ト の表示 XHTML エ ク ス ポー ト テ ンプレー ト ビ ューは XML エ ク ス ポー ト テ ンプ レー ト ビ ュー と 共存し 、それぞれの タ ブ ページでは、デフ ォル ト で XML が一番上にあ り ます。 XHTML のビ ューを表示する には、 [XHTML] タ ブを ク リ ッ ク し ます。 ビ ューの表示に問題があ る場合は、 メ ニ ュー バー か ら [表示|エ ク ス ポー ト / イ ンポー ト テ ンプレー ト | XHTML] を選 択す る か、 [表示|レ イ ア ウ ト |デフ ォ ル ト ] を選択 し て、 [XHTML] タ ブを ク リ ッ ク し ます。 XHTML エ ク ス ポー ト テ ン プ レー ト は、<Form> 要素の イ ン ス タ ン ス を 1 つだけ記述 し た XHTML ド キ ュ メ ン ト です。 テ ン プ レー ト には、 構 造レ イ ア ウ ト 、 お よ び、 要素、 属性、 ス タ イ ル宣言に加え た変更のみ が保存 さ れ ます。 要素、 属性、 ス タ イ ル宣言をデフ ォ ル ト 値か ら 変更 し ていれば、 XHTML や XSLT を生成 し た と き 、 デー タ ウ ィ ン ド ウ を ブ ラ ウ ザに表示す る ための <Form> 要素や CSS ス タ イ ルシー ト に反映 さ れ ます。 1 つのデー タ ウ ィ ン ド ウ に対 し て複数のエ ク ス ポー ト テ ン プ レー ト を作成で き ます。 デフ ォ ル ト の ス タ イ ル規則、 お よ び、 ほ と ん ど のデフ ォ ル ト 属性はテ ン プ レー ト に保存 さ れ ません。 ス タ イ ル宣言に対す る 変更はすべて テ ン プ レー ト に保存 さ れ ますが、 実行時には削除 さ れ、 別に生成 さ れた CSS ス タ イ ルシー ト に適用 さ れ ます。 XHTML エ ク ス ポー ト テ ン プ レー ト ビ ュ ーでは、 デー タ ウ ィ ン ド ウ の カ ラ ム、 計算 フ ィ ール ド 、 テ キ ス ト コ ン ト ロ ール、 お よ び、 XHTML の各行のデー タ ウ ィ ン ド ウ 式な ど、 文字デー タ が許可 さ れた部分をす べて参照で き ます。 実行時に こ う し た部分はテ キ ス ト で置 き 換え ら れ ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 173 第6章 Web デー タ ウ ィ ン ド ウの使い方 カ ス タ マ イ ズで き る部分 XML Web デー タ ウ ィ ン ド ウ は、 デー タ ウ ィ ン ド ウ の内容、 レ イ ア ウ ト 、 ス タ イ ルを実行時に個別に生成 し て XHTML に変換 し 、 必要な機 能を備え たデー タ ウ ィ ン ド ウ と し てブ ラ ウ ザに表示 し ます。 設計時に以下の XML Web デー タ ウ ィ ン ド ウ コ ン ポーネ ン ト を カ ス タ マ イ ズで き ます。 カ ス タ マ イ ズの例 • <Form> 要素の要素、 ま たは内容 • CSS ス タ イ ルシー ト 宣言 • デー タ ウ ィ ン ド ウ フ ォーム のそのほかの XHTML 要素特定の属性 (ス タ イ ル属性な ど) • JavaScript イ ベン ト ハン ド ラ 以下の よ う な種類の変更を行っ て カ ス タ マ イ ズで き ます。 カス タ マイズ 構造レ イ ア ウ ト 例 ヘ ッ ダ区域、 詳細区域、 サマ リ ー区域、 フ ッ タ 区 域 か ら の 要 素 お よ び 内 容 (XHTML <Form> 要素の入力 フ ィ ール ド ) の追加、 ま たは削除 <Form> 要 素 の デ ー タ 入力 デ フ ォ ル ト の CSS ス タ イ ル シ ー ト プ ロ パ フ ィ ール ド 要素の ス タ イ ル テ ィ 値の修正、お よ び CSS ス タ イ ルシー ト 宣 規則 言の追加、 削除 デー タ ウ ィ ン ド ウ 要素の そ 属性値の上書 き 、 お よ び こ れ ら の要素固有の の他属性 属性削除、 追加 JavaScript イ ベン ト ハン ド ラ JavaScript イ ベン ト ハン ド ラ の上書 き 、 リ ダ イ レ ク ト 、 追加、 削除 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 174 第6章 Web デー タ ウ ィ ン ド ウの使い方 デ フ ォル ト の XHTML エ ク スポー ト テ ン プ レー ト デフ ォ ル ト の XHTML エ ク ス ポー ト テ ン プ レー ト では、 エ ク ス ポー ト XHTML エ ン テ ィ テ ィ (マー ク ア ッ プ、 文字デー タ ) が、 エ ン テ ィ テ ィ の種類を表す単一の ツ リ ービ ュ ー項目 と し て表示 さ れ ます。 デフ ォ ル ト のテ ン プ レー ト では、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の各カ ラ ムに 対 し て 1 つの要素があ り ます。 複数のテ ン プ レー ト を作成 し 、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト に名前 を付けて保存で き ます。各テ ン プ レー ト は、ペ イ ン タ で開いてい る デー タ ウ ィ ン ド ウ オブジ ェ ク ト に一意的に対応付け ら れ ます。 詳細につい ては、 176 ページの 「テ ン プ レー ト の管理」 を参照 し て く だ さ い。 ツ リ ービ ュ ー項目の表 示 XHTML エ ク ス ポー ト テ ン プ レー ト の各項目は単一ツ リ ービ ュ ー項目 と し て、 型に対応 し た ア イ コ ン を添え、 それぞれ異な る 色で表示 さ れ ます。 要素は荷札の形を し た黄色のア イ コ ン で表示 さ れます。 XHTML ド キ ュ メ ン ト で使用 さ れ る 要素の終了 タ グ と マー ク ア ッ プ区切 り 記号 (不等号カ ッ コ ) は表示 さ れません。 表 6-10 に、XHTML エ ク ス ポー ト テ ン プ レー ト ビ ュ ーで使用 さ れ る ア イ コ ン を示 し ます。 表 6-10: XHTML エ ク スポー ト テ ン プ レー ト ビ ュ ーで使用 さ れる ア イ コ ン アイ コン 説明 ルー ト 要素ま たは子要素 グループ ヘ ッ ダ要素 デー タ ウ ィ ン ド ウ カ ラ ム参照 静的テ キ ス ト コ ン ト ロ ール参照 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 175 第6章 アイ コン Web デー タ ウ ィ ン ド ウの使い方 説明 計算フ ィ ール ド 参照ま たはデー タ ウ ィ ン ド ウ式参照 リ テ ラル テキ ス ト CDATA セ ク シ ョ ン ネ ス テ ィ ッ ド レ ポー ト テ ン プ レー ト の管理 項目 を 選択 し な い状態でデ フ ォ ル ト の XHTML エ ク ス ポー ト テ ン プ レー ト のポ ッ プア ッ プ メ ニ ュ ーを表示 さ せ、 複数のテ ン プ レー ト を作 成 し て、 ペ イ ン タ で開いてい る デー タ ウ ィ ン ド ウ オブジ ェ ク ト に保存 で き ます。 ま た、 現在開いてい る デー タ ウ ィ ン ド ウ オブジ ェ ク ト に関 連付け ら れた既存のテ ン プ レー ト を開いて編集で き ます。 複数のテ ン プ レー ト がデー タ ウ ィ ン ド ウ に関連づけ ら れてい る 場合は、 現在開い てい る テ ン プ レー ト を削除で き ます。 ポ ッ プア ッ プ メ ニ ュ ーには、 テ ン プ レー ト を管理す る 以下のオプシ ョ ン があ り ます。 メ ニ ュ ー項目 新規デフ ォ ル ト 開く デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 説明 現在のデー タ ウ ィ ン ド ウ レ イ ア ウ ト に基づ く 新規のデ フ ォ ル ト XHTML エ ク ス ポー ト テ ンプ レー ト を定義 保存 し た テ ンプ レー ト を開 く 176 第6章 メ ニ ュ ー項目 保存 名前 を 付け て 保存 削除 Web デー タ ウ ィ ン ド ウの使い方 説明 現在開いてい る テ ンプ レー ト を保存。テ ンプ レー ト に名前 がない場合は名前を付け る 現在開いてい る テ ンプ レー ト を新 し い名前で保存 現在開いてい る テ ンプ レー ト を削除。現在のデー タ ウ ィ ン ド ウ オブジ ェ ク ト に複数のテ ン プ レ ー ト が存在す る 場合 のみ有効 テ ン プ レー ト の作成 と 保存 新規のデ フ ォル ト テ ン プ レー ト の作成 新規のデ フ ォ ル ト XHTML エ ク ス ポー ト テ ン プ レ ー ト を 作成す る に は、 XHTML エ ク ス ポ ー ト テ ン プ レ ー ト ビ ュ ーの ポ ッ プ ア ッ プ メ ニ ュ ーか ら [新規デフ ォ ル ト ] を選択 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 177 第6章 Web デー タ ウ ィ ン ド ウの使い方 新規のデフ ォ ル ト XHTML エ ク ス ポー ト テ ン プ レー ト には以下の要素 があ り ます。 要素 ルー ト <form> ヘ ッ ダ <div> 詳細 <div> サマ リ ー <div> フ ッ タ <div> ヘ ッ ダ、 詳細、 サマ リ ー、 フ ッ タ 要素の 子要素 テ ン プ レー ト の保存 デ フ ォル ト 名 デー タ ウ ィ ン ド ウ名 _dataForm デー タ ウ ィ ン ド ウ名 _band1 デー タ ウ ィ ン ド ウ名 _bandn デー タ ウ ィ ン ド ウ名 _bandn デー タ ウ ィ ン ド ウ名 _bandn 各デー タ ウ ィ ン ド ウ コ ン ト ロ ールの名前 新規のデフ ォル ト テ ンプレー ト を保存する には、 XHTML エ ク ス ポー ト テ ンプレー ト ビ ューのポ ッ プア ッ プ メ ニ ューか ら [保存] を選択し 、 テ ンプレー ト に名前を付けて、 用途を識別する コ メ ン ト を加え ます。 テ ン プ レ ー ト は PBL のデー タ ウ ィ ン ド ウ オブジ ェ ク ト 内部に保存 さ れ ます。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト にテ ンプ レー ト を保存 し た後 は、デー タ ウ ィ ン ド ウ オブジ ェ ク ト の ソ ース エデ ィ タ で定義を確認で き ます。 た と えば、 以下は 2 つのテ ン プ レー ト を持つデー タ ウ ィ ン ド ウ の ソ ース の一部です。 テ ン プ レー ト には必須の要素のみが含ま れて い ます。 export.xhtml(usetemplate = "t_phone" template = (name = "t_address" comment = " 社員の住所録 " xhtml = "<...>") template = (name = "t_phone" comment = " 社員の電話帳 " xhtml = "<...>") ) デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 178 第6章 Web デー タ ウ ィ ン ド ウの使い方 複数のテ ン プ レー ト の定義 1 つのデー タ ウ ィ ン ド ウ オブジ ェ ク ト に複数のテ ン プ レー ト を定義で き ます。 複数のテ ン プ レー ト を定義す る と 、 同一のデー タ ウ ィ ン ド ウ エデ ィ ッ ト コ ン ト ロ ール用に生成 さ れ る 編集様式が多様にな り ます。 使用する テ ン プ レー ト の選択 Export.XHTML. UseTemplate プ ロパ テ ィ の使用 プ ロ パテ ィ ビ ュ ーの [エ ク ス ポー ト ] ページで、 XHTML でのデー タ エ ク ス ポー ト のプ ロ パテ ィ を設定で き ます。 現在選択 し てい る デー タ ウ ィ ン ド ウ オブジ ェ ク ト 用に作成、 保存 し た全テ ン プ レー ト の名前が [テ ン プ レー ト ] ド ロ ッ プダ ウ ン リ ス ト に表示 さ れます。 こ のページで設定で き る プ ロ パテ ィ のほかに、 Export.XHTML.TemplateCount お よ び Export.XHTML.Template[ ].Name プ ロ パテ ィ を使用す る と 、 アプ リ ケーシ ョ ン のユーザは実行時にエ ク ス ポ ー ト テ ン プ レ ー ト を 選択 で き ま す。 190 ペー ジ の 「実行時 の XHTML エ ク ス ポー ト テ ン プ レー ト 選択」 を参照 し て く だ さ い。 Export.XHTML.UseTemplate プ ロ パテ ィ を設定す る と 、 実行時にデフ ォ ル ト の XML Web デー タ ウ ィ ン ド ウ 、 ま たは XHTML Web デー タ ウ ィ ン ド ウ 生成に適用す る テ ン プ レー ト を指定で き ます。 デー タ ウ ィ ン ド ウ ペ イ ン タ のプ ロ パテ ィ ビ ュ ーの [エ ク ス ポー ト ] タ ブで XHTML を 形式 と し て選択 し 、 XHTML エ ク ス ポー ト テ ンプ レー ト の名前を [テ ン プ レ ー ト ] ド ロ ッ プ ダ ウ ン リ ス ト ボ ッ ク ス か ら 選択 し て、 プ ロ パ テ ィ を設定 し ます。 ま た、 ス ク リ プ ト で Export.XHTML.UseTemplate デー タ ウ ィ ン ド ウ プ ロ パテ ィ を設定で き ま す。 詳細については、 190 ページの 「実行時の XHTML エ ク ス ポー ト テ ン プ レー ト 選択」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 179 第6章 Web デー タ ウ ィ ン ド ウの使い方 UseTemplate プ ロパテ ィ の不正な設定 実行時に Export.XHTML.UseTemplate プ ロ パテ ィ を 存在 し な い テ ン プ レー ト 名に設定す る と 、 エ ク ス ポー ト には組み込みのデフ ォ ル ト テ ン プ レー ト が使用 さ れ ます。 XHTML エ ク スポー ト テ ン プ レー ト に関連す る プ ロパテ ィ 表 6-11 に、 XHTML エ ク ス ポー ト テ ン プ レー ト に関連す る プ ロ パテ ィ を示 し ます。 表 6-11: XHTML エ ク スポー ト テ ン プ レー ト 用のプ ロパテ ィ プ ロパテ ィ Export.XHTML. TemplateCount ユーザ イ ン タ フ ェ ー ス フ ィ ール ド 読み出 し 専用。 ユー ザ イ ン タ フ ェ ース フ ィ ール ド な し Export.XHTML. Template[num]. Name 読み出 し 専用。 ユー ザ イ ン タ フ ェ ース フ ィ ール ド な し Export.XHTML. UseTemplate デー タ ウ ィ ン ド ウ ペ イ ン タ のプ ロ パテ ィ ビ ュ ーにあ る [エ ク ス ポー ト ] タ ブの [テ ンプ レー ト ] ド ロ ッ プダ ウ ン リ ス ト ボ ッ ク ス か ら テ ンプ レー ト を選択 説明 デー タ ウ ィ ン ド ウ オブジ ェ ク ト に 関連付け ら れた XHTML エ ク ス ポー ト テ ンプ レー ト の数 デー タ ウ ィ ン ド ウ オブジ ェ ク ト に 関連付け ら れた XHTML エ ク ス ポー ト テ ンプ レー ト 名の配列。 イ ンデ ッ ク ス番号は 1 か ら Export. XHTML.TemplateCount プ ロ パテ ィ の値ま での範囲 デー タ ウ ィ ン ド ウ ペ イ ン タ で保存 し た XHTML エ ク ス ポー ト テ ンプ レー ト の名前。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト に よ っ て生成 さ れた XHTML の論理構造を制御可能 デー タ ウ ィ ン ド ウ プ ロ パテ ィ についての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 180 第6章 Web デー タ ウ ィ ン ド ウの使い方 テ ン プ レー ト 構造 XHTML エ ク ス ポー ト テ ン プ レー ト には、 ヘ ッ ダ セ ク シ ョ ン と 詳細セ ク シ ョ ン があ り 、 ツ リ ービ ュ ーでは横線で分割 さ れてい ます。 そのほ かのデー タ ウ ィ ン ド ウ 区域は こ の 2 つのセ ク シ ョ ン に組み込まれてい ます。 詳細開始要素 エ ク ス ポー ト / イ ン ポー ト テ ン プ レー ト ビ ュ ーの横線はヘ ッ ダ セ ク シ ョ ン と 詳細セ ク シ ョ ン の区切 り を示 し てい ます。 こ の線の下にあ る 最初の要素 (上の図の d_dept_list_row) は詳細開始要素 と 呼ばれ ます。 詳細開始要素は 2 つ以上は存在で き ず、 ド キ ュ メ ン ト のルー ト 要素内 部に存在 し な ければな り ま せん。 デー タ ウ ィ ン ド ウ の各区域は <div> 要素で囲まれてい ます。 デー タ ウ ィ ン ド ウ が XHTML でエ ク ス ポー ト さ れた場合、 こ の要素 と 後に続 く すべての子要素、 兄弟要素は、 行ご と に繰 り 返 し 生成 さ れます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 181 第6章 Web デー タ ウ ィ ン ド ウの使い方 ヘッダ セクシ ョ ン ヘ ッ ダ セ ク シ ョ ン には、 表 6-12 で示す項目を入れ ら れ ます。 必須なの は、 ルー ト 要素であ る XHTML <form> 要素のみです。 表 6-12: XHTML ド キ ュ メ ン ト のヘ ッ ダ セ ク シ ョ ンに入れられる項目 項目 ルー ト <form> 要素 (開始 タ グ) XHTML 要素 デー タ ウ ィ ン ド ウ コ ン ト ロ ール参照 デー タ ウ ィ ン ド ウ式 リ テ ラル テキ ス ト 属性 CDATA セ ク シ ョ ン 子要素 詳細 XHTML の <form> 要素は XHTML テン プレ ート のルー ト 要素です。 184 ページの 「ルー ト 要素」 を 参照 ルー ト 要素の下の追加要素 テ キ ス ト 。 185 ページの 「デー タ ウ ィ ン ド ウ コ ン ト ロ ール」 を参照 テ キ ス ト 。 186 ページの 「デー タ ウ ィ ン ド ウ式」 を 参照 DW の コ ン ト ロ ールに対応 し ないテ キ ス ト すべての要素に割 り 当て可能。 187 ページの 「要素 の属性」 を参照 189 ページの 「CDATA セ ク シ ョ ン」 を参照 ヘ ッ ダ セ ク シ ョ ンの子要素は、 グループ デー タ ウ ィ ン ド ウ の場合を除いて繰 り 返 さ れない ルー ト 要素の詳細セ ク シ ョ ン ルー ト 要素はヘ ッ ダ セ ク シ ョ ンに表示 さ れ ますが、 詳細セ ク シ ョ ンの 全内容はルー ト 要素に含まれます。 ヘ ッ ダ セ ク シ ョ ン の項目は、デー タ ウ ィ ン ド ウ がグループ デー タ ウ ィ ン ド ウ でなければ、 デー タ ウ ィ ン ド ウ が XHTML にエ ク ス ポー ト さ れ る と き に一度だ け生成 さ れ ま す。 グ ループ デー タ ウ ィ ン ド ウ の場合 は、対応す る ヘ ッ ダ セ ク シ ョ ン の XHTML フ ラ グ メ ン ト が繰 り 返 さ れ、 各グループの詳細の前、 つ ま り 、 デー タ ウ ィ ン ド ウ で指定 し た グルー プに対応す る XHTML 行グループの前にそれぞれつけ ら れ ます。 ヘ ッ ダ セ ク シ ョ ン にはデー タ ウ ィ ン ド ウ のヘ ッ ダ区域お よ びすべて のヘ ッ ダ区域の レ ン ダ リ ン グが含 ま れ ます。 各区域は <div> 要素内に 生成 さ れ ます。計算 タ イ ト ルやテ キ ス ト コ ン ト ロ ール カ ラ ムの見出 し な ど、 ヘ ッ ダ セ ク シ ョ ンにあ る コ ン ト ロ ール も 、 通常、 参照内容 と 共 に <div> 要素内に生成 さ れ ます。 こ れ ら のエ ン テ ィ テ ィ は一度だけ生成 さ れ、 行ご と に繰 り 返 さ れ ませ ん。 し か し 、 グループ ヘ ッ ダ を持つデー タ ウ ィ ン ド ウ では、 対応す る ヘ ッ ダの XHTML フ ラ グ メ ン ト が繰 り 返 さ れ、 デー タ ウ ィ ン ド ウ で指 定 さ れた グループに対応す る XHTML 行グループの前に繰 り 返 し てつ け ら れます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 182 第6章 Web デー タ ウ ィ ン ド ウの使い方 詳細セ ク シ ョ ン 詳細セ ク シ ョ ン には、 デー タ ウ ィ ン ド ウ の詳細区域の レ ン ダ リ ン グが 含まれ、 最初の <div> 要素で分割 さ れ ます。 <div> 要素の内容は、 繰 り 返 し 生成 さ れ る 単一行 イ ン ス タ ン ス を表 し ます。 全グループの ト レー ラ 、 サマ リ ー区域、 フ ッ タ 区域 も 追加 さ れ、 <div> 要素で区切 ら れ ま す。 カ ラ ム、 計算フ ィ ール ド 、 ド ロ ッ プダ ウ ン デー タ ウ ィ ン ド ウ 、 ド ロ ッ プダ ウ ン リ ス ト ボ ッ ク ス、 チ ェ ッ ク ボ ッ ク ス、 ボ タ ン コ ン ト ロ ー ルな ど、 詳細セ ク シ ョ ン に挿入 さ れ る コ ン ト ロ ール も 、 通常、 参照内 容 と 共に <div> 、 <input> 、 ま たは <select> 要素内に生成 さ れ ます。 詳細セ ク シ ョ ン には、 表 6-13 で示す項目を入れ ら れ ます。 表 6-13: XHTML ド キ ュ メ ン ト の詳細セ ク シ ョ ンに入れられる項目 項目 最初の <div> 要素 XHTML 要素 デー タ ウ ィ ン ド ウ コ ン ト ロ ール参照 デー タ ウ ィ ン ド ウ式 リ テ ラル テキ ス ト 属性 CDATA セ ク シ ョ ン 子要素 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 詳細 <div> 要素の内容は、 繰 り 返 し 生成 さ れ る 単一行 イ ン ス タ ン ス を表 し ます。 ルー ト 要素の下の追加要素 テ キ ス ト 。 185 ページの 「デー タ ウ ィ ン ド ウ コ ン ト ロ ール」 を参照 テ キ ス ト 。186 ページの 「デー タ ウ ィ ン ド ウ式」 を参照 DW の コ ン ト ロ ールに対応 し ないテ キ ス ト すべての要素に割 り 当て可能。 187 ページの 「要素の 属性」 を参照 189 ページの 「CDATA セ ク シ ョ ン」 を参照 ヘ ッ ダ セ ク シ ョ ンの子要素は、 グループ デー タ ウ ィ ン ド ウ の場合を除いて繰 り 返 さ れない 183 第6章 Web デー タ ウ ィ ン ド ウの使い方 XHTML エ ク スポー ト テ ン プ レー ト の編集 XHTML エ ク ス ポー ト テ ン プ レー ト ビ ュ ーのすべての項目には、 実行 時に生成 さ れ る XHTML ド キ ュ メ ン ト の構造レ イ ア ウ ト を修正す る た めのポ ッ プア ッ プ メ ニ ュ ーがあ り ます。 ポ ッ プア ッ プ メ ニ ュ ーか ら 、 項目の編集 と 削除、 属性の編集 と 削除、 子要素 ま たは他項目の追加、 要素や CDATA セ ク シ ョ ン な ど を現項目の前に挿入す る な ど、 その項 目に合っ た操作を実行で き ます。 要素に属性が な い場合、 要素 を 選択 し て タ グ を 左 ク リ ッ ク 、 ま た は 〔F2〕 を押す と 、 XHTML エ ク ス ポー ト テ ン プ レー ト ビ ュ ーの要素の タ グ を編集で き ま す。 リ テ ラ ル テ キ ス ト ノ ー ド も 同様に編集で き ま す。 〔Delete〕 を押す と 、 項目 と 子要素を削除で き ます。 ルー ト 要素 XHTML エ ク ス ポー ト テ ン プ レー ト のルー ト 要素は、 XHTML <form> 要素です。 ルー ト 要素は、 名前の変更、 属性の追加、 子要素の追加が で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 184 第6章 Web デー タ ウ ィ ン ド ウの使い方 ルー ト 要素の名前を変更す る と 、 開始 タ グ、 終了 タ グの名前 も 変更 さ れ ま す。 [属性の編集] メ ニ ュ ー項目か ら 、 各要素の属性 ダ イ ア ロ グ ボ ッ ク ス を表示すれば名前 を変更で き ま す。 属性の編集につい ては、 187 ページの 「要素の属性」 を参照 し て く だ さ い。 ルー ト 要素には以下の種類の子要素を追加で き ます。 • 要素 • テキ ス ト • デー タ ウ ィ ン ド ウ コ ン ト ロ ールの参照 • デー タ ウ ィ ン ド ウ の式 (カ ラ ム参照を含む) • CDATA セ ク シ ョ ン デー タ ウ ィ ン ド ウ コ ン ト ロール デー タ ウ ィ ン ド ウ コ ン ト ロ ールの参照を追加す る と 、 ド キ ュ メ ン ト の カ ラ ム、 計算 フ ィ ール ド 、 レ ポー ト コ ン ト ロ ール、 テ キ ス ト コ ン ト ロ ールの リ ス ト を含むダ イ ア ロ グボ ッ ク ス が開 き ます。 ま た、 コ ン ト ロ ール リ ス ト ビ ュ ーか ら ド ラ ッ グ ア ン ド ド ロ ッ プで、 空の属性値、 ま たは要素内容に コ ン ト ロ ール参照を追加で き ます。 カ ラ ム参照 も カ ラ ム の仕様 ビ ュ ーか ら ド ラ ッ グ ア ン ド ド ロ ッ プで追加 で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 185 第6章 Web デー タ ウ ィ ン ド ウの使い方 ド ラ ッ グ ア ン ド ド ロ ッ プ では置き換えで き ない 項目を他項目に ド ラ ッ グ ア ン ド ド ロ ッ プ し て も 置 き 換えはで き ま せ ん。 た と えば、 コ ン ト ロ ールの参照を別の コ ン ト ロ ール参照、 ま たは デー タ ウ ィ ン ド ウ 式で置 き 換え る 場合、 まず最初に置 き 換え る コ ン ト ロ ールの参照を削除す る 必要があ り ます。 デー タ ウ ィ ン ド ウ式 [子の追加|デー タ ウ ィ ン ド ウ コ ン ト ロ ールの参照] メ ニ ュ ー項目で デー タ ウ ィ ン ド ウ 式を追加す る と 、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの 参照 ダ イ ア ロ グ ボ ッ ク ス が開 き ます。 こ れで、 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト のデー タ ソ ース か ら のカ ラ ム参照を作成で き ます。 ま た、 グ ロ ーバル関数 も 呼び出せ る よ う に な り ま す。 こ の機能は、 埋め込む XHTML フ ラ グ メ ン ト を返す場合に利用で き 、一歩進んだ動的 XHTML を生成で き ます。 Date や DateTime を 別の文字列 と 連結 し て 使用 Date や DateTime を表示す る ための文字列を テ ン プ レ ー ト 中に含めず に コ ン ト ロ ール参照 ま たはデー タ ウ ィ ン ド ウ 式を使用す る 場合、 ISO 8601 に準拠 し た日付お よ び時間の書式で XHTML が出力 さ れます。 た と え ば、 表 示 書 式 mm/dd/yyyy を 使 用 し て、 デ ー タ ウ ィ ン ド ウ に 12/27/2002 を表示す る と し ます。 エ ク ス ポー ト テ ン プ レー ト で文字 列を連結 し た式を使用 し ていない場合、 日付は 2002-12-27 の よ う に XHTML にエ ク ス ポー ト さ れ ます。 一方、 デー タ 型 Date ま たは DateTime と 文字列を連結 し た式 と し て指 定 し た場合、 こ の式全体が文字列の形でエ ク ス ポー ト さ れ る ので、 最 終的な日付や時刻の表示は、 Windows レ ジ ス ト リ の地域設定にそ っ た 書式にな り ます。 た と えばレ ジ ス ト リ に設定 さ れた短い日付書式が 「mm/dd/yy」 で、デー タ ウ ィ ン ド ウ 式が 「" 開始日は " + start_date + " です "」 な ら ば、 最 終的な出力は 「開始日は 12/27/02 です」 と な り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 186 第6章 Web デー タ ウ ィ ン ド ウの使い方 要素の属性 既存の属性を編集、 ま たは新規に属性を追加す る には、 [要素] のポ ッ プア ッ プ メ ニ ュ ーか ら [属性の編集] を選択 し ます。 画面には、 要素 のデフ ォ ル ト 属性がすべて、 テ ン プ レー ト に指定 さ れた変更を施 し た 形で列挙 さ れてい ます。要素の識別に使用 さ れ る 名前属性(場合に よ っ ては ク ラ ス属性) は省略 さ れ、 変更で き ません。 デフ ォ ル ト の属性値を削除、 ま たは新 し い属性値を追加で き ます。 コ ン ト ロ ール ま たは式で、 要素の属性値の参照 も で き ます。 各属性について、 ド ロ ッ プダ ウ ン リ ス ト か ら コ ン ト ロ ール参照を選択 す る か、 ま たは リ テ ラ ル テ キ ス ト を直接入力す る かの、 ど ち ら か一方 で設定で き ます。 リ テ ラ ル テ キ ス ト の値は コ ン ト ロ ール参照 よ り も 優 先 さ れ ます。 [文字列] ボ ッ ク ス の右にあ る [式] ボ タ ン を押す と 、 式 を入力で き ます。 [式] ボ タ ンお よ び入力は、 プ ロ パテ ィ ビ ュ ーのデー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト プ ロ パテ ィ と 同様に動作 し ま す。 式が入力 さ れた場合に は、 ボ タ ンは緑色の等号を表示 し 、 そ う でない場合は赤の等号否定を 表示 し ます。 式のほかに コ ン ト ロ ール参照ま たは リ テ ラ ル テ キ ス ト も 指定 し た場合は、 デフ ォ ル ト 値 と し て扱われ ます。 テ ン プ レー ト には こ の組み合わせが、 コ ン ト ロ ール参照ま たはテ キ ス ト 値、 次に タ ブが 続 き 、 最後に式 と い う 順番で保存 さ れます。 次に例を示 し ます。 attribute_name=~"text_val~~tdw_expression~" 要素の属性の修正が終了 し た ら 、 [OK] を ク リ ッ ク し ま す。 変更だけ がテ ン プ レー ト に保存 さ れ ます。 デフ ォ ル ト 属性を削除 し た場合、 テ ン プ レー ト には値を空に し た形で追加 さ れ、 その旨が示 さ れ ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 187 第6章 Web デー タ ウ ィ ン ド ウの使い方 ス タ イル宣言 要素を右 ク リ ッ ク し 、 ポ ッ プア ッ プ メ ニ ュ ーか ら [ス タ イ ルの編集] を選択す る と 、 ス タ イ ル宣言 ダ イ ア ロ グ ボ ッ ク ス が開 き 、 左に読み出 し 専用の要素のデフ ォ ル ト ス タ イ ル宣言が表示 さ れ ます。 分か り やす さ を優先 し て、 ス タ イ ル宣言は XHTML エ ク ス ポー ト テ ン プ レー ト では省略 さ れてい ます。 右側で ス タ イ ルを宣言すれば、 新規 の ス タ イ ル宣言を追加、 ま たは既存 ス タ イ ルに上書 き で き 、 空白値で ス タ イ ルを追加すれば削除で き ます。 JavaScript イ ベン ト ハン ド ラ 要素を右 ク リ ッ ク し 、 ポ ッ プア ッ プ メ ニ ュ ーか ら [ イ ベン ト の編集] を選択す る と 、 JavaScript イ ベン ト ハン ド ラ ダ イ ア ロ グ ボ ッ ク ス が開 き 、 左に読み出 し 専用の要素の イ ベン ト ハン ド ラ が表示 さ れ ます。 JavaScript イ ベン ト ハ ン ド ラ が存在す る 場合は、 ダ イ ア ロ グ に現在の JavaScript イ ベン ト ハン ド ラ が表示 さ れます。 右側で イ ベン ト ハン ド ラ を宣言すれば、 新規の イ ベン ト ハン ド ラ 宣言を追加、 ま たは既存 イ ベン ト ハン ド ラ に上書 き で き 、空白値で イ ベン ト ハン ド ラ を追加すれ ば削除で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 188 第6章 Web デー タ ウ ィ ン ド ウの使い方 CDATA セ ク シ ョ ン CDATA セ ク シ ョ ン内はパーサに よ る 解析の対象にな り ま せん。 パー サに と っ て意味のあ る 不等号カ ッ コ (< ま たは >)、 ア ンパサン ド (&) な ど が テ キ ス ト に含 ま れて い る 場合は、 CDATA セ ク シ ョ ン と し て定 義す る 必要が あ り ま す。 CDATA セ ク シ ョ ン は <![CDATA[ で始 ま り 、 ]]> で終わ り ます。 CDATA セ ク シ ョ ンは入れ子にで き ず、 ]]> 区切 り 記号の間に空白文字が あ っ てはいけ ま せん。 た と えば、 2 つの カ ッ コ の間に スペース は挿入で き ません。 例 <![CDATA[ 解析禁止 ]]> 要素の コ ン テキス ト メ ニ ュ ー XHTML エ ク ス ポー ト テ ンプ レー ト ビ ュ ーの ツ リ ービ ュ ーは リ アル タ イ ムの DOM ツ リ ーを表示 し てい ます。 ヘ ッ ダ セ ク シ ョ ン、 詳細セ ク シ ョ ン の ツ リ ーの各 XHTML 要素にはポ ッ プア ッ プ メ ニ ュ ーがあ り ま す。 ポ ッ プア ッ プ メ ニ ュ ーの項目は、 生成 さ れ る XHTML ド キ ュ メ ン ト の構造レ イ ア ウ ト を修正す る DOM ベー ス の操作を実行 し ます。 メ ニ ュ ー項目を次の表に示 し ます。 メ ニ ュ ー項目 編集 子の追加 前に挿入 削除 DOM ベース操作 DOM ベース操作 DOMNode::SetNodeName DOMNode::AppendChild DOMNode::InsertBefore DOMNode::RemoveChild [編集] では、 XHTML 要素名を表すツ リ ービ ュ ー項目の ラ ベルを変更 で き ます。属性が表示 さ れていない要素項目のすべて と 、ツ リ ービ ュ ー で選択 さ れてい る リ テ ラ ル テ キ ス ト ノ ー ド はマ ウ ス ク リ ッ ク 1 回、ま たはシ ョ ー ト カ ッ ト キー 〔F2〕 で編集で き ます。 [子の追加] では、 最 後の子 と し てエ ン テ ィ テ ィ を追加で き ます。 サブ メ ニ ュ ー オプシ ョ ン の [デー タ ウ ィ ン ド ウ コ ン ト ロ ールの参照] を選択す る と 、 ユーザが 選択で き る カ ラ ム、 計算フ ィ ール ド 、 テ キ ス ト コ ン ト ロ ールを ま と め た リ ス ト ボ ッ ク ス のあ る ダ イ ア ロ グ を表示 し ます。 ま た、 既存の コ ン ト ロ ール リ ス ト ビ ュ ーか ら ド ラ ッ グ ア ン ド ド ロ ッ プで、 コ ン ト ロ ー ル参照を空の属性値、 ま たは要素内容に追加で き ます。 デー タ ウ ィ ン ド ウ 式 も 既存のダ イ ア ロ グ を使用 し て追加で き ます。 デー タ ウ ィ ン ド ウ カ ラ ム参照 も 、 式の形式で、 カ ラ ム仕様 ビ ュ ーか ら ド ラ ッ グ ア ン ド ド ロ ッ プで追加で き ま す。 <form> 要素を除 く ツ リ ービ ュ ー項目は 〔Delete〕 で削除で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 189 第6章 表示 と 機能 Web デー タ ウ ィ ン ド ウの使い方 上記以外の コ ン テ キ ス ト メ ニ ュ ー項目は、 各要素の表示仕様や機能仕 様を変更す る ために使い ます。 起動す る と ダ イ ア ロ グ ボ ッ ク ス が開 き ます。 こ れ ら には次の も のがあ り ます。 • ス タ イ ル宣言 • 要素の属性 • JavaScript イ ベン ト ハン ド ラ ダ イ ア ロ グには最初、 実行時にデフ ォ ル ト で生成 さ れ る 仕様が表示 さ れてい ます。ペ イ ン タ は DWE の XML Web ジ ェ ネ レー タ か ら リ アル タ イ ム で仕様を取得 し 、ダ イ ア ロ グの半分に読み出 し 専用で表示 し ます。 ダ イ ア ロ グの も う 半分にあ る 入力フ ィ ール ド では、 開発時に atomic 宣 言ま たは属性レベルで こ の仕様を変更で き ます。 こ こ では、 含ま れ る 宣言お よ び属性の リ セ ッ ト 、 宣言お よ び属性を含 ま ない設定、 ま たは 宣言お よ び属性の削除 も 可能です。 仕様の変更は XHTML エ ク ス ポー ト テ ン プ レー ト に も 残 り 、 実行時に XML Web ジ ェ ネ レー タ に よ っ て 生成 さ れ る デフ ォ ル ト の表示に適用 さ れ ます。 実行時の XHTML エ ク スポー ト テ ン プ レー ト 選択 2 つのデー タ ウ ィ ン ド ウ プ ロ パテ ィ 、 Export.XHTML.TemplateCount お よ び Export.XHTML.Template[ ].Name を使用す る と 、テ ン プ レー ト の リ ス ト を作成 し 、 アプ リ ケーシ ョ ン ユーザが実行時に選択で き る よ う に す る こ と がで き ます。 TemplateCount プ ロ パテ ィ は、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト に関連 す る テ ン プ レー ト の数を表 し ます。 テ ン プ レー ト 名を ド ロ ッ プダ ウ ン リ ス ト に列挙す る FOR ループの上限値 と し て、 こ の数 を 利用で き ま す。 FOR ループは Template[ ].Name プ ロ パテ ィ を使用 し ます。 string ls_template_count, ls_template_name long i ls_template_count=dw_1.Describe ("DataWindow.Export.XHTML.TemplateCount") for i=1 to Long(ls_template_count) ls_template_name= dw_1.Object.DataWindow.Export.XHTML.Template[i].Name ddlb_1.AddItem(ls_template_name) next デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 190 第6章 Web デー タ ウ ィ ン ド ウの使い方 XHTML の生成前に、 ド ロ ッ プダ ウ ン リ ス ト ボ ッ ク ス のテ キ ス ト を使 用 し て、 エ ク ス ポー ト テ ン プ レー ト を設定す る には次の よ う に記述 し ます。 dw_1.Object.DataWindow.Export.XHTML.UseTemplate= ddlb_1.text XML および XSLT、 ま たは XHTML でのデー タ ウ ィ ン ド ウ Web フ ォ ームのエ ク スポー ト XML お よび XSLT で のエ ク スポー ト PowerScript ド ッ ト (.) 表記、 ま たは Describe メ ソ ッ ド を使用すれば、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト ま たはデー タ ス ト ア オブジ ェ ク ト を、 XML お よ び XSLT でエ ク ス ポー ト で き ます。 ls_xmlstring = dw_1.Object.DataWindow.Data.XMLWeb ls_xmlstring = dw_1.Describe("DataWindow.Data.XMLWeb") デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト ま たはデー タ ス ト ア オブジ ェ ク ト を エ ク ス ポー ト す る 場合、 PowerBuilder は生成 さ れ る XSLT お よ び CSS ス タ イ ル シー ト の内容の指定にエ ク ス ポー ト テ ン プ レ ー ト を使用 し ます。 デ フ ォル ト のエ ク スポー ト 形式 エ ク ス ポー ト テ ン プ レ ー ト を作成、 ま たは割 り 当て し ていない場合、 PowerBuilder はデフ ォ ル ト の XSLT エ ク ス ポー ト 形式を使用 し ます。新 規のデ フ ォ ル ト エ ク ス ポー ト テ ン プ レ ー ト を作成 し た場合 と 同 じ 形 式です。 177 ページの 「テ ン プ レ ー ト の作成 と 保存」 を参照 し て く だ さ い。 XHTML での エ ク スポー ト PowerScript ド ッ ト (.) 表記、 ま たは Describe メ ソ ッ ド を使用すれば、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト ま たはデー タ ス ト ア オブジ ェ ク ト を、 XHTML でエ ク ス ポー ト で き ます。 ls_xmlstring = dw_1.Object.DataWindow.Data.XHTML ls_xmlstring = dw_1.Describe("DataWindow.Data.XHTML") デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト ま たはデー タ ス ト ア オブジ ェ ク ト を エ ク ス ポー ト す る 場合、PowerBuilder は生成 さ れ る XHTML お よ び CSS ス タ イ ル シー ト の内容の指定にエ ク ス ポー ト テ ン プ レ ー ト を使用 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 191 第6章 Web デー タ ウ ィ ン ド ウの使い方 デ フ ォル ト のエ ク スポー ト 形式 エ ク ス ポー ト テ ン プ レ ー ト を作成、 ま たは割 り 当て し ていない場合、 PowerBuilder はデ フ ォ ル ト の XHTML エ ク ス ポ ー ト 形式 を 使用 し ま す。新規のデフ ォ ル ト エ ク ス ポー ト テ ン プ レー ト を作成 し た場合 と 同 じ 形式です。 177 ページの 「テ ン プ レ ー ト の作成 と 保存」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 192 第 7 章 Web デー タ ウ ィ ン ド ウのサーバ サ イ ド プ ロ セス こ の章について こ の章では、 サーバ サ イ ド の Web デー タ ウ ィ ン ド ウ コ ン ポーネ ン ト の設定要件、 設計、 お よ びプ ロ グ ラ ミ ン グ テ ク ニ ッ ク につい て説明 し ます。 内容 項目 サーバ構成の要件 サーバ コ ン ポーネ ン ト の イ ン ス タ ン ス化 と 設定 カ ス タ ム サーバ コ ン ポーネ ン ト の使い方 サービ ス ク ラ ス の使い方 ページ 193 195 206 217 サーバ構成の要件 Web デー タ ウ ィ ン ド ウ で使用す る サーバ と ク ラ イ ア ン ト は、 同 じ マシ ン上で も 異な る マシ ン上で も 動作 し ます。次の図に、Web サー バ と ページ サーバが同 じ マシ ン上にあ り 、 コ ン ポーネ ン ト サーバ と デー タ ベー ス が別のマ シ ン 上に あ る 一般的な構成 を 示 し ま す。 同 じ コ ン ピ ュ ー タ 上で複数 ま たはすべてのサーバが動作す る こ と も 可能です。 開発環境では、 ク ラ イ ア ン ト ブ ラ ウ ザ も 同 じ コ ン ピ ュ ー タ 上に置 く こ と がで き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 193 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス 図 7-1: ク ラ イ ア ン ト と サーバの一般的な構成 Web サーバは EAServer に組み込まれる 1 番目の構成例では、EAServer に Web サーバが組み込まれてい る ため、 EAServer の機能を最大限に活用す る こ と がで き ます。 EAServer での Web デー タ ウ ィ ン ド ウの 使い方 Web サーバ を サービ ス と し て実行 し ない場合に、 ユーザ CLASSPATH 環境変数が存在す る と き は、 こ の変数には、 Web サーバ と EAServer と の通信に必要なすべての ク ラ ス へのパ ス を指定 し てお く 必要があ り ま す。 こ の変数には、Sybase\EAServer\html\classes デ ィ レ ク ト リ と 、Web ページ (別のデ ィ レ ク ト リ にあ る 場合) で使用す る ために生成 し た コ ン ポーネ ン ト ス タ ブへのパ ス を指定 し ます。EAServer を イ ン ス ト ール す る と 、 サ ー バ の パ ス 情 報 は、 ユ ー ザ 変 数 に で は な く 、 シ ス テ ム CLASSPATH 変数にのみ格納 さ れます。 ト ラ ンザク シ ョ ン サーバの設定作業 EAServer の ト ラ ンザ ク シ ョ ン サーバで、以下の設定作業を実行す る 必 要があ り ます。 • サーバ コ ン ポーネ ン ト がサービ ス を提供で き る 状態にあ る 場合、 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の定義 を 含む PBL、 PBD、 SRD、 ま たは PSR を、EAServer サーバのパ ス ま たはシ ス テ ム パ ス のデ ィ レ ク ト リ に コ ピーす る 。 • デー タ ソ ース に対 し て DSN と 接続キ ャ ッ シ ュ を設定す る 。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 194 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス サーバ コ ンポーネ ン ト のイ ン ス タ ン ス化 と 設定 Web デー タ ウ ィ ン ド ウ サーバ コ ン ポーネ ン ト の イ ン ス タ ン ス を作成 す る コ ー ド を記述 し 、 そのサーバ コ ン ポーネ ン ト の メ ソ ッ ド を呼び出 し て Web デー タ ウ ィ ン ド ウ アプ リ ケーシ ョ ン を作成で き ます。 Web デー タ ウ ィ ン ド ウ サーバ コ ン ポーネ ン ト の種類についての詳細 は、 129 ページの 「Web デー タ ウ ィ ン ド ウ のサーバ コ ン ポーネ ン ト と ク ラ イ ア ン ト コ ン ト ロ ール」 を参照 し て く だ さ い。 2 つのメ ソ ッ ド セッ ト デー タ ウ ィ ン ド ウ コ ン ト ロールの メ ソ ッ ド 汎用 Web デー タ ウ ィ ン ド ウ サーバ コ ン ポーネ ン ト では、2 つの メ ソ ッ ド セ ッ ト が使用で き ます。 • ほかのデータ ウ ィ ン ド ウ コ ン ト ロ ールに対し て使用可能なメ ソ ッ ド • コ ン ポーネ ン ト の設定 と HTML の生成に使用す る メ ソ ッ ド 汎用サーバ コ ン ポーネ ン ト でサポー ト さ れ る デー タ ウ ィ ン ド ウ コ ン ト ロ ールの メ ソ ッ ド には、 ソ ー ト 機能、 フ ィ ル タ 機能、 検証機能、 取 得、 お よ び設定用の各 メ ソ ッ ド があ り ます。 こ れ ら の メ ソ ッ ド のいず れか を サーバ コ ン ポーネ ン ト 上で呼び出す と 、 サーバはブ ラ ウ ザ内の ページ を リ ロ ー ド し ます。 複数の構文を持つ メ ソ ッ ド には、 多重定義の制限を避け る ために、 構 文ご と に異な る フ ォ ーム があ り ます。 た と えば、 ClearValues メ ソ ッ ド は引数 と し て文字列を取 り 、 ClearValuesByColNum メ ソ ッ ド は数値 を 取 り ます。 サポー ト さ れて い る デー タ ウ ィ ン ド ウ コ ン ト ロ ールの メ ソ ッ ド の リ ス ト については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アル ま た はオ ン ラ イ ン ヘルプ を参照 し て く だ さ い。 サーバ コ ンポーネ ン ト の メ ソ ッ ド を調べる シ ス テ ム ツ リ ーの [コ ン ポーネ ン ト ] ページ ま たは EAServer Manager で、 汎用 EAServer コ ンポーネン ト メ ソ ッ ド を表示で き ます。 設定および生成 メソッド ほかに も 、 コ ン ポーネ ン ト の設定、 デー タ の検索、 Web ページで必要 な固定値の設定、 お よ び HTML の生成用の メ ソ ッ ド があ り ます。 カ ス タ ム サーバ コ ン ポーネ ン ト を使用す る 場合は、設定作業を追加 し て行 う 必要があ り ます。詳細については、206 ページの 「カ ス タ ム サー バ コ ン ポーネ ン ト の使い方」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 195 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス 大文字 と 小文字を使用 し た メ ソ ッ ド 名 汎用 EAServer サーバ コ ン ポーネ ン ト の メ ソ ッ ド 名には、 大文字 と 小 文字の ど ち ら で も 使用で き ます。 こ の節で示す例で も 、 大文字 と 小文 字か ら な る 名前を使用 し ます。 独自のサーバ コ ン ポーネ ン ト を記述す る 場合は、 生成す る コ ン ポーネ ン ト の メ ソ ッ ド 名はすべて小文字に し ま す。 こ こ で 説 明 す る メ ソ ッ ド が 必 要 な 場 合 は、 サ ン プ ル の PBDWRMT.PBL を開始点 と し て使用で き ます。 ス ク リ プ ト を記述する 手順 サーバ サ イ ド ス ク リ プ ト では、 次の タ ス ク を コ ー ド 化 し ます。 1 コ ン ポーネ ン ト を イ ン ス タ ン ス化 し ます。 2 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を ロ ー ド し ます。 3 生成す る 内容を制御 し ま す。 た と えば、 組み込む機能 と 対象のブ ラ ウ ザを指定 し ます。 4 デー タ ベース接続を指定 し て、 デー タ を検索 し ます。 5 リ ロ ー ド さ れたページにページ固有のデー タ を渡 し ます。 6 サーバ コ ン ポーネ ン ト にユーザ ア ク シ ョ ン情報を渡 し ます。 7 生成 さ れた HTML をページ テ ン プ レー ト に挿入 し ます。 以下の節では、 こ れ ら の タ ス ク に対応す る サン プル コ ー ド を い く つか 示 し ます。 こ れ ら の例で使用す る メ ソ ッ ド についての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アル ま たはオ ン ラ イ ン ヘルプ を参照 し て く だ さ い。 コ ンポーネ ン ト のイ ン ス タ ン ス化 Web デー タ ウ ィ ン ド ウ コ ン ポーネ ン ト を 以下の方法で イ ン ス タ ン ス 化で き ます。 <%@ <%@ <%@ <%@ page page page page contentType="text/html; charset=UTF-8" %> import="org.omg.CORBA.ORB" %> import="org.omg.CosNaming.NamingContext" %> import= "org.omg.CosNaming.NamingContextHelper" %> <%@ page import="org.omg.CosNaming.NameComponent" %> <%@ page import="DataWindow.*" %> String dwGenerator = "DataWindow/HTMLGenerator115"; HTMLGenerator115 dwGen = null; デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 196 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス java.util.Properties props =new java.util.Properties(); props.put("org.omg.CORBA.ORBClass", "com.sybase.CORBA.ORB"); props.put("com.sybase.CORBA.NameServiceURL", "iiop://testmachine:2000"); ORB orb = ORB.init((String[])null, props); try { NamingContext cntx = NamingContextHelper.narrow (orb.resolve_initial_references("NameService")); NameComponent[] name = {new NameComponent(dwGenerator,"")}; SessionManager.Factory factory = SessionManager.FactoryHelper.narrow (cntx.resolve(name)); dwGen = HTMLGenerator115Helper. narrow(factory.create ("jagadmin","")); } catch(org.omg.CORBA.ORBPackage.InvalidName ie) { out.print("エ ラ ー メ ッ セージ :" + ie.getMessage()); } catch (org.omg.CosNaming.NamingContextPackage. NotFound ne) { out.print("エ ラ ー メ ッ セージ :" + ne.getMessage()); } catch (org.omg.CosNaming.NamingContextPackage.CannotProceed ce) { out.print("エ ラ ー メ ッ セージ :" + ce.getMessage()); } catch (org.omg.CosNaming.NamingContextPackage.InvalidName ie1) { out.print(" エ ラ ー メ ッ セージ :" + ie1. getMessage()); } デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト のロー ド 次の手順では、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト と デー タ ウ ィ ン ド ウ オブジ ェ ク ト の名前を含む PBD ま たは PBL フ ァ イ ルを 指定 し ます。フ ァ イ ルの場所を指定す る 必要はあ り ませんが、コ ン ポー ネ ン ト サーバではサーバのパ ス上のデ ィ レ ク ト リ 内で、 その フ ァ イ ル が使用可能でなければな り ません。 ま た、 EAServer コ ン ポーネ ン ト が サービ ス を提供で き る 状態にあ る 場合、 あ る いは COM+ を使用 し てい る 場合は、 シ ス テ ム パ ス上のデ ィ レ ク ト リ 内で使用可能でなければな り ません。 SetDWObject retVal = dwGen.SetDWObject ("htgenex.pbl", デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 197 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス "d_tabular_dept"); 次の フ ァ イ ルを指定す る こ と も で き ます。 • ソ ー ス 定義 (SRD) フ ァ イ ル。 こ の フ ァ イ ルには、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の ソ ース が含ま れ る 。 ラ イ ブ ラ リ ペ イ ン タ かシ ス テ ム ツ リ ーで、デー タ ウ ィ ン ド ウ 定義を SRD フ ァ イ ルにエ ク ス ポー ト で き る • Powersoft レ ポー ト (PSR) フ ァ イ ル。 こ の フ ァ イ ルには、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト と デー タ が含 ま れ る 。 PSR フ ァ イ ルは、 デー タ ウ ィ ン ド ウ ペ イ ン タ か ら 保存で き る • 複数のデー タ ウ ィ ン ド ウ オブジ ェ ク ト 定義を含む、 EAServer の デー タ ウ ィ ン ド ウ コ ン テナ コ ン ポーネ ン ト SRD フ ァ イ ル と PSR フ ァ イ ルには、デー タ ウ ィ ン ド ウ 名 と し て空の文 字列を指定 し ます。 dwServer.SetDWObject("myreport.psr", "" ); デー タ ウ ィ ン ド ウ コ ン テナ コ ン ポーネ ン ト の場合、SetDWObjectEx メ ソ ッ ド を使用 し ます。 dwServer.SetDWObjectEx ("d_emp"); 生成内容の制御 ク ラ イアン ト コ ン ト ロールの機能の無効化 サーバ コ ン ポーネン ト は、Web データ ウ ィ ン ド ウ ク ラ イ ア ン ト オブジェ ク ト に対応する HTML (XHTML) と JavaScript を 大量に 生成し ま す。 た だし 、 ク ラ イ ア ン ト 側でコ ン ト ロ ールのサイ ズ を 小さ く する た めに、 不要な 機能のコ ード を 省略する よ う にコ ン ポーネン ト に指示でき ま す。 たと えば、 以下の機能のコ ード は省略でき ま す。 SetWeight • デー タ の更新 • 新たに入力 さ れたデー タ の検証 • ク ラ イ ア ン ト サ イ ド イ ベン ト • ク ラ イ ア ン ト サ イ ド ス ク リ プ ト での ク ラ イ ア ン ト コ ン ト ロ ール の メ ソ ッ ド の呼び出 し 許可 • 新たに入力 さ れたデー タ への表示書式の適用 こ れ ら の機能を無効にす る には、 デー タ ウ ィ ン ド ウ ペ イ ン タ の [Web 生成] プ ロ パテ ィ ページ か、 SetWeight メ ソ ッ ド を使用 し ま す。 特定 の引数を False にす る と 、 その機能に対応す る コ ー ド は生成 さ れ ま せ ん。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 198 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス 次の ス テー ト メ ン ト を実行す る と 、 すべての機能が有効にな り ます。 dwGen.SetWeight(true, true, true, true, true); デー タ の更新を False にす る と 、検証 コ ー ド と 表示書式 コ ー ド はいずれ も 作成 さ れ ません。 次の ス テー ト メ ン ト では、 デー タ 更新に関す る 最 初の引数が False なので、 2 番目 と 5 番目の引数に ど の よ う な値が指定 さ れていて も 関係あ り ません。 dwGen.SetWeight(false, false, true, true, false); 次のス テート メ ン ト では、 ク ラ イ アン ト サイ ド でのス ク リ プト 記述を オ フ にし ま す。 dwGen.SetWeight(true, true, true, false, true); デー タ 更新 と 表示書式を設定す る と 、 大量の コ ー ド が ク ラ イ ア ン ト サ イ ド コ ン ト ロ ールに追加 さ れます。 ま た、 日付処理の場合 も 追加 コ ー ド が生成 さ れます。 ク ラ イ ア ン ト コ ン ト ロ ールのサ イ ズ を最小限に抑 え る には、 必要な機能のみを オ ン に し 、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト で日付カ ラ ム を使用 し ない よ う に し ておいて く だ さ い。 ク ラ イアン ト コ ン ト ロール名の指定 SetHTMLObjectName Web デー タ ウ ィ ン ド ウ ク ラ イ ア ン ト コ ン ト ロ ールに名前を付け る 必要があ り ます。 こ の名前は、 ページ パ ラ メ ー タ と ク ラ イ ア ン ト サ イ ド イ ベン ト に使用 さ れます。Web ページに複数 の Web デー タ ウ ィ ン ド ウ ク ラ イ ア ン ト コ ン ト ロ ールが存在す る 場合、 各 コ ン ト ロ ールの名前は一意でなければな り ません。 次の コ ー ド では、 サーバ コ ン ポーネ ン ト 変数 と ク ラ イ ア ン ト コ ン ト ロ ールに同 じ 名前を使用 し ます。 dwGen.SetHTMLObjectName ("dw_1"); XML Web デー タ ウ ィ ン ド ウ XML Web デー タ ウ ィ ン ド ウ で カ ス タ ム XHTML テ ン プ レ ー ト を使用 し てい る 場合は、 テ ン プ レー ト のオブジ ェ ク ト 名 と ク ラ イ ア ン ト コ ン ト ロ ール名 (上の例では、 dw_1) を一致 さ せ る 必要があ り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 199 第7章 ブ ラ ウザに対する HTML の最適化 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス SetBrowser Web デー タ ウ ィ ン ド ウ は、 特定のブ ラ ウ ザ と バージ ョ ン に最適化 さ れた HTML を生成 し ます。 特に、 Microsoft お よ び Netscape のブ ラ ウ ザ用の コ ー ド を生成で き ます。 異な る ク ラ イ ア ン ト に よ っ て サーバ コ ン ポーネ ン ト が イ ン ス タ ン ス化 さ れ る たびに、 ブ ラ ウ ザが異 な る 場合があ り ます。 そのため、 ブ ラ ウ ザに関す る 情報をデー タ ウ ィ ン ド ウ ペ イ ン タ にプ リ セ ッ ト し てお く こ と はで き ません。サーバ サ イ ド ス ク リ プ ト で対象 と す る ブ ラ ウ ザ と バージ ョ ン を、 そのつど指定で き ます。 ブ ラ ウ ザが認識 さ れない場合、 ペ イ ン タ で [HTML バージ ョ ン] プ ロ パテ ィ を設定す る こ と で、 ど の レベルの HTML を生成す る か を指定で き ます。 各種ブ ラ ウ ザに対 し てデー タ ウ ィ ン ド ウ が使用す る HTML 機能につ いては、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マ ニ ュ アル ま たはオ ン ラ イ ン ヘルプの 「HTMLGen. property」 を参照 し て く だ さ い。 実行時、 ク ラ イ ア ン ト ブ ラ ウ ザか ら Web サーバに送信 さ れ る HTTP ヘ ッ ダには User-Agent ま たは HTTP_USER_AGENT 値が含まれてい ま す。 サーバ コ ン ポーネ ン ト は、 こ の値を使用 し て ク ラ イ ア ン ト ブ ラ ウ ザを識別 し ます。 デー タ ベース接続の指定 と デー タ 検索 接続情報の指定 SetTrans SetTrans メ ソ ッ ド を使用 し て、 サーバ コ ン ポーネ ン ト に関 す る 接続情報を指定 し ます。 接続の種類に よ っ て、 指定す る 引数が異 な り ます。 SQL Anywhere への ODBC 接続の場合、 dbParm 引数にすべ ての接続情報を指定 し ます。 EAServer では、 コ ン ポーネ ン ト に対 し て接続キ ャ ッ シ ュ を設定す る 必 要 も あ り ます。 詳細については、 164 ページの 「EAServer 5.x での接続 キ ャ ッ シ ュ の作成」 を参照 し て く だ さ い。 デー タ ソ ー ス は、 サーバ マ シ ン上で定義 さ れていな ければな り ま せ ん。 コ ン ポーネ ン ト がサービ ス を提供で き る 状態にあ る 場合、 デー タ ソ ース は EAServer ではシ ス テ ム DSN でなければな り ません。 次の ス テー ト メ ン ト では、 サ ンプル デー タ ベース EAS Demo DB に接続 し ま す。 dwGen.SetTrans("ODBC","ConnectString='DSN=EAS Demo DB V115;UID=dba;PWD=sql'","", "", "", "", ""); XML Web デー タ ウ ィ ン ド ウ を使用 し てい る 場合は、SetPageSize メ ソ ッ ド を呼び出 し て、 各ページに含め る 行の数を制限 し ます。 dwGen.SetPageSize(2); デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 200 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス Adaptive Server Enterprise の使い方 PowerBuilder と EAServer では、 Open Client を使用 し て Adaptive Server Enterprise に接続す る 際の CT-Lib ソ フ ト ウ ェ アの使い方が少 し 異な り ます。 PowerBuilder の開発環境では、 SYC ネ イ テ ィ ブ デー タ ベース イ ン タ フ ェ ー ス を 使用 し てデー タ ベー ス に接続 し ま すが、 EAServer で ASE に接続す る 場合は、 SYJ を SetTrans への第 1 引数 と し て使用 し な ければな り ません。 デー タ の検索 Retrieve デー タ ウ ィ ン ド ウ オブジ ェ ク ト で検索引数が使用 さ れない 場合、 サーバ コ ン ポーネ ン ト にデー タ の検索を指示す る には、 Retrieve メ ソ ッ ド を呼び出 し ます。 retVal = dwGen.Retrieve(); 検索引数の指定 RetrieveEx デー タ ウ ィ ン ド ウ オブジ ェ ク ト で検索引数が使用 さ れて い る 場合は、 RetrieveEx メ ソ ッ ド を呼び出 し ます。 dwGen.RetrieveEx("60000"); 通常、 検索引数は定数では あ り ま せん。 こ れ ら の引数は、 ユーザが フ ォ ーム を入力 し たページやハ イ パー リ ン ク を ク リ ッ ク し たページか ら 別のページに渡 さ れ る ページ パ ラ メ ー タ です。 デー タ ウ ィ ン ド ウ で 複数の検索引数が使用 さ れ る 場合は、 引数は単一の文字列で渡 さ れな ければな り ません。 その文字列内の引数は、 改行文字 (\n) で区切 ら な ければな り ません。 ま た、 それぞれの値の一部に改行文字を使用す る こ と はで き ま せん。 配列の値は、 タ ブ文字 (\t) で区切 ら な ければ な り ません。 別のページか ら の検索引数の取得は、 そのページが初めて リ ロ ー ド さ れ る 際に有効にな り ます。 ページが リ ロ ー ド さ れ る たびに、 検索引数 はページ パ ラ メ ー タ に な る 必要が あ り ま す。 リ ロ ー ド す る ページ の ページ パ ラ メ ー タ を指定す る には、SetSelfLink メ ソ ッ ド を使用 し ます。 詳細については、 次の節を参照 し て く だ さ い。 リ ロー ド さ れたページにページ固有のデー タ を渡す 自己の リ ン ク 情報の 使い方 ク ラ イ ア ン ト ブ ラ ウ ザがページ テ ン プ レ ー ト を初めて要求す る と き は、 GET ま たは POST を使用 し てページ固有の情報を渡す こ と が可能 で、そのページはそれ ら の値を サーバ サ イ ド ス ク リ プ ト 内で使用で き ます。 ただ し 、 ユーザ と Web デー タ ウ ィ ン ド ウ と の対話に よ り ページ が リ ロ ー ド さ れ る 場合、 ページ固有の情報は該当す る ページに自動的 には渡 さ れ ません。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 201 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス 情報を使用可能な状態にす る には、 selflinkargs 文字列 と 、 リ ロ ー ド さ れ る ページのページ パ ラ メ ー タ と な る 値を指定 し ます。 通常は、 自己 の リ ン ク パ ラ メ ー タ を使用 し て、 次の情報を使用可能な状態に保持 し ます。 • 別のページか ら の ロ グ イ ン情報 • デー タ ウ ィ ン ド ウ オブジ ェ ク ト 名 • デー タ ウ ィ ン ド ウ オブジ ェ ク ト の検索引数 ページの リ ロ ー ド の際に、以上の値を提供す る には、SetSelfLink メ ソ ッ ド を使用 し ます。 こ の メ ソ ッ ド は、 引数 と し てページ テ ン プ レー ト の URL と selflinkargs 文字列を取 り ます。 ユーザ ア ク シ ョ ン に応 じ てページ を正 し く リ ロ ー ド す る ために、 サー バ コ ン ポーネ ン ト はページ テ ン プ レー ト の URL を認識す る 必要があ り ます。 URL は、 document オブジ ェ ク ト ヘ ッ ダの name プ ロ パテ ィ ま たはサーバ変数 SCRIPT_NAME か ら 取得で き ます。 自己の リ ン ク 引数文字 列の作成 自己の リ ン ク 引数は、 リ ロ ー ド さ れ る ページのページ パ ラ メ ー タ と な り ます。 ス ク リ プ ト は、 一般には既存のページ パ ラ メ ー タ を確認 し て か ら 、 自己の リ ン ク 引数 を 使用 し てページ パ ラ メ ー タ を 再作成 し ま す。 自己の リ ン ク 引数を指定す る ための構文は、 次の と お り です。 pageparam1="expr1"|pageparam2="expr2"...|pageparamn="exprn" こ の文字列には、 1 組ま たは複数組のページ パ ラ メ ー タ と 式を、 パ イ プ (|) で区切っ て指定で き ます。 それぞれの式は、 評価結果が文字 列 と な る デー タ ウ ィ ン ド ウ 式です。 通常は、 式ではな く 、 すでにペー ジ パ ラ メ ー タ 値にな っ てい る 一定の文字列値を指定 し ます。 式は引用符で囲みます。 値が定数で あ る 場合は、 その値 も 引用符で囲 ま なければな り ません。 た と えば、 ページ パ ラ メ ー タ に Johnson と い う 値が含ま れ る 場合、 式の値は次の よ う に二重引用符で囲む必要があ り ます。 '"Johnson"' 現行の Logname パ ラ メ ー タ か ら 、 ページに対 し てすでに定義 さ れてい る 値を取得す る には、ページ パ ラ メ ー タ Logname を使用 し て式を作成 し ま す。 式 に は、 単引用符 と そ の内側に二重引用符 を 使用 し ま す。 Longname の現在の値は、 引用符の間に挿入 さ れ ます。 String logname = (String) request.getParameter("Logname"); String linkargs = "logname='\"" + logname + "\"'"; 式には、 内側の引用符は必要あ り ません。 String linkargs = "date='String(Today())'"; デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 202 第7章 URL と 引数文字列を SetSelfLink に渡す Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス SetSelfLink SetSelfLink メ ソ ッ ド への引数には、 URL と リ ン ク 引数文 字列を使用 し ます。 dwGen.SetSelfLink(pageName, linkargs); 自己の リ ン ク 値 と し て 使用 さ れる検索引数 ページが最初に ロ ー ド さ れ る と き 、検索引数は次の可能性があ り ます。 • 別のページか ら 渡 さ れたページ パ ラ メ ー タ 。 ユーザが、 該当す る 値を含む URL を ク リ ッ ク し たか、 該当す る 値を ポ ス ト す る フ ォ ー ム に入力 し た場合 • 現在の ス ク リ プ ト で計算 さ れた新 し い値 値がページ パ ラ メ ー タ であ る 場合は、SetSelfLink を使用 し てページ パ ラ メ ー タ を再作成で き ます。 値がほかのいずれかの ソ ー ス の値で あ る 場合、 ページ が初め て ロ ー ド さ れた と き は ソ ー ス ま たはページ パ ラ メ ー タ か ら 、 ページが リ ロ ー ド さ れた と き はページ パ ラ メ ー タ か ら 、 それぞれ値を取得す る ための コ ー ド を作成す る 必要があ り ます。 例 次の例では、 前述 し た種類の値を操作 し ます。 それぞれの種類の値を 取得 し 、 RetrieveEX お よ び SetSelfLink メ ソ ッ ド の両方の呼び出 し で使 用 し ます。 ユーザが製品の詳細情報 を 取得す る た めに フ ォ ー ム に製品 ID を入力す る と 、 製品 ID はページ パ ラ メ ー タ と し て製品 レ ポー ト テ ン プ レー ト に渡 さ れ ます。 ページ パ ラ メ ー タ は、 呼び出 し 元 ページか ら 取得 さ れ る ので通常は常に存在 し ますが、 こ の コ ー ド では デフ ォ ル ト 値を提供 し ます。 別のページの値 String prod_id; prod_id=(String) request.getParameter("ProdID"); if (prod_id == null){ prod_id = "1"; } dwGen.RetrieveEx(prod_id); dwGen.SetSelfLink("ProdID=" + "'\"" + prod_id + "\"'"); 複数の値 こ の例では、 フ ォ ーム を持つ Web ページか ら 、 ユーザ名、 製 品 カ テ ゴ リ 、 お よ びユーザが表示 し た い詳細 レ ベルの入力 を 求め る メ ッ セージ を 表示 し ま す。 コ ー ド では、 製品カ テ ゴ リ を Web デー タ ウ ィ ン ド ウ の検索引数 と し て使用 し ます。 ス ク リ プ ト では、 詳細レベ ルに応 じ て、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト を選択 し ます。 ページが リ ロ ー ド さ れ る たびに、 3 つの値はすべて繰 り 越 さ れます。 // 製品カ テ ゴ リ を検索引数 と し て取得 String retrievearg, username, rptlevel, dw; retrievearg = (String)request.getParameter("category"); if (retrievearg == null) { デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 203 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス retrievearg = "all"; } int rtn = dwGen.RetrieveEx(retrievearg); if (rtn < 0) { ... // エ ラ ーを チ ェ ッ ク } // ユーザ名を取得 username =(String)request.getParameter("username"); if (username != null){ out.print("<P> お客様名 " + username + "</P>"); } out.print("<P> お客様が要求 さ れた レポー ト はこ ち ら です。 </P>"); // 詳細レ ベルに応 じ てデー タ ウ ィ ン ド ウを選択 rptlevel=(String)request.getParameter("reportlevel"); if (rptlevel == "detail"){ dw = "d_product_detail"; } else if (rptlevel == "summary"){ dw = "d_product_summary"; } else { dw = (String) request.getParameter("dw"); if (dw == null} { out.print ("<P> レポー ト 選択にエ ラ ー "); //handle error or halt processing ... } dwGen.SetDWObject("productrpt.pbd", dw); // ブ ラ ウザ用に生成 さ れた HTML で // ページ パラ メ ータ を 再作成する よ う に、サーバ コ ン ポーネン ト に指示 String linkargs = "username='\"" + username + "\"'" + "|category= '\"" + retrievearg + "\"'" + "|dw= '\"" + dw + "\"'"; dwGen.SetSelfLink(pageName, linkargs); デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 204 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス サーバ コ ンポーネ ン ト にユーザ ア ク シ ョ ン を渡す ユーザがデー タ ウ ィ ン ド ウ のボ タ ン を ク リ ッ ク す る と 、 ア ク シ ョ ン情報が、 コ ン テ キ ス ト と ア ク シ ョ ン ページ パ ラ メ ー タ と し て ページ サーバに返 さ れ ま す。 サーバ サ イ ド ス ク リ プ ト で、 こ れ ら の ページ パ ラ メ ー タ に ア ク セ ス し て SetAction を 呼び出す こ と に よ り 、 サーバ コ ン ポーネ ン ト は、生成 さ れた HTML にア ク シ ョ ン を適用で き ます。 SetAction パ ラ メ ー タ の名前には、 dw_1_action、 dw_1_context の よ う に、 SetHTMLObjectName メ ソ ッ ド に指定 さ れた オブ ジ ェ ク ト 名 を 使用 し ま す。 オブジ ェ ク ト 名は、 デー タ ウ ィ ン ド ウ ペ イ ン タ の [Web 生成] タ ブ ページで指定す る こ と も で き ます。 別のデー タ ページへの ス ク ロ ール用ボ タ ン、 デー タ の検索お よ び更新 用ボ タ ン、 行の挿入お よ び削除用ボ タ ン な ど を組み込む こ と がで き ま す。 こ れ ら のボ タ ン ア ク シ ョ ン が発生す る と 、 変更内容がサーバ コ ン ポーネ ン ト に送信 さ れ、 デー タ ウ ィ ン ド ウ バ ッ フ ァ 内で変更が行われ ます。 ユーザが更新ボ タ ン を ク リ ッ ク す る と 、 ほかに ス ク リ プ ト を記 述 し な く て も 、 コ ン ポーネ ン ト で更新 メ ソ ッ ド が呼び出 さ れ ます。 メ ソ ッ ド を呼び出す必要はない デー タ の検索、 更新、 行の挿入お よ び削除な ど を行 う 場合に、 直接呼 び出す こ と がで き る サーバ コ ン ポーネ ン ト メ ソ ッ ド があ り ます。ただ し 、ボ タ ン を ク リ ッ ク し ない と ア ク シ ョ ンは呼び出 さ れ ません。メ ソ ッ ド を呼び出す必要 も あ り ません。 次の コ ー ド では、 パ ラ メ ー タ が定義 さ れてい る か ど う か、 つま り ペー ジが リ ロ ー ド さ れた も のであ る か ど う か を確認 し 、 パ ラ メ ー タ が定義 さ れてい る 場合は、 SetAction を呼び出 し て、 ア ク シ ョ ン情報をサーバ コ ン ポーネ ン ト に送信 し ます。 int retVal; String dw_1_action =(String)request.GetParameter ("dw_1_action"); String dw_1_context = (String)request.GetParameter ("dw_1_context"); if (dw_1_context == null){ dw_1_context = " "; } // ア ク シ ョ ン を実行する必要があるかど う かを調べる if (dw_1_action!=null){ retVal = dwGen.SetAction(dw_1_action, dw_1_context); if (retVal < 0 ) { out.print("SetAction: エ ラ ー :"+ retVal + "<BR>"); デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 205 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス out.print(dwGen.GetLastErrorString()+ "<BR>"); } } ページへの生成 さ れた HTML または XHTML の挿入 Generate サーバ ス ク リ プ ト はすべての設定が終了 し た後、 Generate 関数を呼び出 し ます。 こ の関数は、 生成 さ れた HTML を文字列 と し て 返 し ます。 out.print を使用 し て、 ページ テ ン プ レー ト に コ ー ド を挿入 し ます。 out.print( dwGen.Generate() ); GenerateXHTML および GenerateXMLWeb GenerateXHTML コ マン ド を 使用し て、 Web データ ウ ィ ン ド ウ に XHTML を 返し ま す。 out.print( dwGen.GenerateXHTML() ); GenerateXMLWeb メ ソ ッ ド では、 内容、 レ イ ア ウ ト 、 表示書式、 デー タ ウ ィ ン ド ウ の ク ラ イ ア ン ト サ イ ド の機能が、 XML、 XSLT、 CSS、 JS フ ァ イ ルで個別に生成 さ れ ます。 ま た、 ブ ラ ウ ザ固有の XSLT 変換 ス ク リ プ ト を返 し ます。 こ の ス ク リ プ ト では、 生成フ ァ イ ルを使用 し て、 ク ラ イ ア ン ト サ イ ド でデー タ ウ ィ ン ド ウ 対応の XHTML への変換が行 われ ます。 out.print( dwGen.GenerateXMLWeb() ); カ ス タ ム サーバ コ ンポーネ ン ト の使い方 EAServer を コ ン ポーネ ン ト サーバ と し て使用す る 場合、汎用サーバ コ ン ポー ネ ン ト イ ン タ フ ェ ー ス の メ ソ ッ ド を 使用す る カ ス タ ム コ ン ポーネ ン ト を配布で き ます。 ま た、 EAServer ま たは COM+ で使用で き る よ う に、 サーバ コ ン ポーネ ン ト を その独自のデー タ ウ ィ ン ド ウ メ ソ ッ ド で記述す る こ と も で き ます。 カ ス タ ム コ ンポーネ ン ト の利点 カ ス タ ム コ ン ポーネ ン ト を使用す る と 、 以下の点で メ リ ッ ト があ り ま す。 • ト ラ ンザ ク シ ョ ン プ ロ パテ ィ に値を指定す る こ と で、サー バ上で接続情報を保持 し ます。 保守性 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 206 第7章 • Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス コ ン ポ ー ネ ン ト の イ ン ス タ ン ス 作成時にデー タ ウ ィ ン ド ウ オブジ ェ ク ト が ロ ー ド さ れ る よ う に、 サーバ上の ソ ー ス フ ァ イ ル と デー タ ウ ィ ン ド ウ オブジ ェ ク ト を指定 し ます。 こ れ に よ っ て、 Web ページ内のサーバ サ イ ド ス ク リ プ ト か ら の メ ソ ッ ド 呼び出 し がほ と ん ど な く な り ます。 カ ス タ ム コ ン ポーネ ン ト で その状態を保持す る こ と で も 、 パフ ォ ーマ ン ス が向上 し ます。 パフ ォ ーマ ン ス カ ス タ ム コ ン ポーネ ン ト の状態プ ロ パテ ィ の変更については、215 ページの 「サーバ上での状態の保持」 を参照 し て く だ さ い。 • ソ ー ス フ ァ イ ル と デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を指定 し 、 EAServer イ ン ス タ ン ス のプール機能を使用す る こ と で、 コ ン ポーネ ン ト を再利用 し てデー タ ウ ィ ン ド ウ オブジ ェ ク ト の ロ ー ド が一度だけで済む よ う にな り ます。 スケー ラ ビ リ テ ィ デー タ ウ ィ ン ド ウ ペ イ ン タ と EAServer 間の競合 デー タ ウ ィ ン ド ウ ペ イ ン タ での作業中に、 EAServer で同 じ PBL を テ ス ト す る と 、 EAServer コ ン ポーネ ン ト がデー タ ウ ィ ン ド ウ を ロ ー ド し た 際 に PBL が ロ ッ ク さ れ る こ と が あ り ま す。 こ れ を 避 け る に は、 EAServer Manager で コ ン ポーネ ン ト の イ ン ス タ ン ス のプール機能を無 効に し ます。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のテ ス ト と 編集が終了 し た ら 、 イ ン ス タ ン ス のプール機能を有効に し ます。 複数の ク ラ イ ア ン ト に対 し て コ ン ポーネ ン ト イ ン ス タ ン ス の再初期 化 と 再利用が可能な場合は、 イ ン ス タ ン ス のプール機能を使用す る と 実働環境のパフ ォ ーマ ン ス が向上 し ます。 Web デー タ ウ ィ ン ド ウ イ ン タ フ ェ ー ス を使用す る カ ス タ ム コ ン ポー ネ ン ト の作成については、 209 ページの 「EAServer でのカ ス タ ム サー バ コ ン ポーネ ン ト の作成」 ま たは 167 ページの 「デー タ ウ ィ ン ド ウ オ ブジ ェ ク ト の コ ン ポーネ ン ト サーバへの配布」 を参照 し て く だ さ い。 独自のカ ス タ ム コ ン ポーネ ン ト の記述 データ ウ ィ ン ド ウ 定義お よ びデータ を保持する デー タ ス ト ア オブジ ェ ク ト の状態 と Web 生成を フル コ ン ト ロ ールする ために、PowerBuilder の 独自のカ ス タ ム ク ラ ス ユーザ オブジ ェ ク ト を記述し て、 EAServer ま た は COM コ ンポーネン ト と し て配布で き ます。 必要な処理のみを含むカ ス タ ム コ ン ポーネ ン ト を使用すれば、 Web ク ラ イ ア ン ト に返 さ れ る ク ラ イ ア ン ト コ ン ト ロ ールのサ イ ズ を小 さ く で き ます。 汎用 コ ン ポーネ ン ト の ソ ース コ ー ド は、PowerBuilder の Code Examples デ ィ レ ク ト リ 内の PBDWRMT.PBL にあ り 、 こ の ソ ー ス コ ー ド を調べ た り 再利用 し た り で き ます。 こ の PBL 内の コ ー ド は修正 し た り 追加 し た り す る こ と がで き ます。 ま た、 独自の コ ン ポーネ ン ト を作成す る 際 のベース と し てサ ンプル PBL を使用す る こ と も で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 207 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス 大文字 と 小文字 と 使用 し た メ ソ ッ ド 名 汎用 EAServer コ ン ポーネ ン ト の メ ソ ッ ド の名前には、大文字 と 小文字 の ど ち ら で も 使用で き ます。 こ の節で示す例で も 、 大文字 と 小文字か ら 成 る 名前を使用 し ます。 独自のサーバ コ ン ポーネ ン ト を記述す る 場 合は、生成す る EAServer コ ン ポーネ ン ト の メ ソ ッ ド 名はすべて小文字 に し ます。 ただ し 、 EAServer への コ ン ポーネ ン ト の配布後は、 その コ ン ポーネ ン ト の IDL フ ァ イ ル内の メ ソ ッ ド 名の大文字 と 小文字を変更 で き ます。 独自の コ ン ポーネ ン ト を使用す る 場合は、 コ ン ポーネ ン ト の ス タ ブ を生成 し て コ ンパ イ ル し な ければな ら ないので、 IDL に変更 を加え た後でない と 、 メ ソ ッ ド 名の大文字 と 小文字は変更で き ません。 サーバ コ ン ポーネ ン ト は、デー タ ス ト ア オブジ ェ ク ト で メ ソ ッ ド を使 用 し てデー タ を検索 し 、 そのデー タ と 状態を HTML と し て ク ラ イ ア ン ト に返 し ます。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の状態、 デー タ 、 お よ び表示形式を表す HTML と JavaScript を取得す る には、Describe メ ソ ッ ド を使用 し ます。 ls_html = ds_1.Describe("DataWindow.Data.HTML"); ユーザ ア ク シ ョ ン に応 じ て HTML を更新す る には、SetHTMLAction メ ソ ッ ド を使用 し ます。 li_rtn = ds_1.SetHTMLAction(arg_action, arg_context); SetHTMLAction は、 引数 と し て渡 さ れた コ ン テ キ ス ト に基づいてデー タ ス ト アの状態を リ ス ト ア し 、 渡 さ れた ア ク シ ョ ン に基づいて状態を 変更 し ます。 SetHTMLAction メ ソ ッ ド につい て の詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス 』 マ ニ ュ アル ま たはオ ン ラ イ ン ヘルプ を 参照 し て く だ さ い。 デー タ ス ト ア オブジ ェ ク ト の操作については、 第 4 章の 「デー タ ス ト ア オブジ ェ ク ト の使い方」 を参照 し て く だ さ い。 独自のサーバ コ ン ポーネ ン ト を作成 し て EAServer に配布す る 場合は、 ス タ ブ を生成 し て コ ンパ イ ルす る 必要 も あ り ます。 ス タ ブの生成 と コ ンパ イ ルについては、 EAServer マニ ュ アルを参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 208 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス EAServer でのカ ス タ ム サーバ コ ンポーネ ン ト の作成 EAServer Manager で、カ ス タ ム Web デー タ ウ ィ ン ド ウ サーバ コ ン ポー ネ ン ト を イ ン ス ト ール し て 設定で き ま す。 次の手順で は、 EAServer Manager で前 も っ て セ ッ ト さ れ て い る カ ス タ ム プ ロ パ テ ィ を 使用 し て、 カ ス タ ム バージ ョ ンの EAServer サーバ コ ン ポーネ ン ト を作成 し ます。 Web デー タ ウ ィ ン ド ウ コ ン テナ プ ロ ジ ェ ク ト ウ ィ ザー ド の使い方 こ の節に示す手順では、 汎用 DataWindow::HTMLGenerator115 イ ン タ フ ェ ー ス を使用す る カ ス タ ム コ ン ポーネ ン ト を EAServer Manager で 作成す る 方法について説明 し ます。 カ ス タ ム コ ン ポーネ ン ト は、 Web デー タ ウ ィ ン ド ウ コ ン テナ プ ロ ジ ェ ク ト で も 作成で き ます。詳細につ いては、 168 ページの 「Web デー タ ウ ィ ン ド ウ コ ン テナ プ ロ ジ ェ ク ト ウ ィ ザー ド 」 を参照 し て く だ さ い。 カ ス タ ム コ ン ポーネ ン ト 作成の手順は、使用 し てい る EAServer のバー ジ ョ ン に よ っ て異な り ます。 v EAServer 5.x で Web データ ウィ ン ド ウ カ スタ ム コ ン ポーネン ト を 作成する には 1 EAServer Manager の左側のペ イ ン で、 サーバ名の下の [Package] を 右 ク リ ッ ク し 、 表示 さ れ た ポ ッ プ ア ッ プ メ ニ ュ ーか ら [New Package...] を選択 し ます。 2 New Package ダ イ ア ロ グボ ッ ク ス で、パ ッ ケージ名を入力し 、[Create New Package] を ク リ ッ ク し ます。 こ こ で入力し たパ ッ ケージ名は後 で変更で き ません。 た と え ば、 EmpList ア プ リ ケ ー シ ョ ン の パ ッ ケ ー ジ 名 と し て 「EmpListPkg」 と 入力 し ます。 3 パ ッ ケージのプ ロ パテ ィ ダ イ ア ロ グ ボ ッ ク ス の [General] タ ブに、 パ ッ ケージの説明を入力 し 、 [OK] を ク リ ッ ク し ます。 た と えば、 EmpListPkg の説明 と し て 「EmpList ア プ リ ケーシ ョ ン 用のデー タ ウ ィ ン ド ウ コ ン ポーネ ン ト 」 と 入力 し て、 そのアプ リ ケーシ ョ ン に対 し て カ ス タ マ イ ズす る パ ッ ケージで あ る こ と を示 し ます。 4 EAServer Manager の左側のペ イ ン で、 サーバ名の下の新 し いパ ッ ケ ージ を 右 ク リ ッ ク し 、 表示 さ れ た ポ ッ プ ア ッ プ メ ニ ュ ーか ら [New Component...] を選択 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 209 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス 5 ウ ィ ザー ド で、 [Define New Component] ラ ジオ ボ タ ン を選択 し 、 [次へ] を ク リ ッ ク し ます。 6 カ ス タ ム コ ン ポーネ ン ト の名前を指定 し 、 [終了] を ク リ ッ ク し ま す。 こ こ で指定 し た名前は後で変更で き ません。 たと えば、 EmpListDW は、 データ ウ ィ ン ド ウ オブジェ ク ト d_emplist を 使用する コ ン ポーネン ト を 表し ま す。 7 コ ン ポーネ ン ト のプ ロ パテ ィ ダ イ ア ロ グボ ッ ク ス の [General] タ ブで、 次の よ う に指定 し ます。 Description Component Type PowerBuilder Class PowerBuilder Library List PowerBuilder Application 8 v DataWindow::HTMLGenerator115 PowerBuilder NVO nv_remote_datawindow pbdwr115.pbd remote_datawindow_appl [Advanced] タ ブで、 プ リ セ ッ ト 値が必要なプ ロ パテ ィ を追加 し ま す。 EAServer 6.x で Web データ ウィ ン ド ウ カ スタ ム コ ン ポーネン ト を 作成する には 1 Sybase Management Console の左側ペ イ ン で、 [EAServer Manager | Local Server] の下の [CORBA Packages ] を右 ク リ ッ ク し 、 表示 さ れたポ ッ プア ッ プ メ ニ ュ ーか ら [Add] を選択 し ます。 2 [New Package] ウ ィ ザー ド の 2 ページ目で、 パ ッ ケージ名を入力 し 、 [Finish] を ク リ ッ ク し ます。 こ こ で指定 し た名前は後で変更 で き ません。 入力 し たパ ッ ケージ名が、 コ ン ソ ールの左側ペ イ ン の [CORBA Packages] ノ ー ド の下に表示 さ れます。 3 コ ン ソ ー ル の 左 側 ペ イ ン で、 新 規 パ ッ ケ ー ジ 名 の 下 の [Component] を右 ク リ ッ ク し 、表示 さ れたポ ッ プア ッ プ メ ニ ュ ー か ら [Add] を選択 し ます。 4 ウ ィ ザー ド の 2 ページ目で、 カ ス タ ム コ ン ポーネ ン ト の名前を入 力 し 、 [Finish] を ク リ ッ ク し ま す。 こ こ で指定 し た名前は後で変 更で き ません。 5 コ ン ソ ールの右側のペ イ ンに表示 さ れた コ ン ポーネ ン ト テ ィ シー ト の [General] タ ブで、 以下を指定 し ます。 Component Type PowerBuilder NVO Class デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド プロパ PowerBuilder NVO nv_remote_datawindow 210 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス PowerBuilder Library List PowerBuilder Version IDL Remote Interface 6 pbdwr115.pbd 11.5 DataWindow::HTMLGenerator115 コ ン ポーネ ン ト プ ロ パテ ィ シー ト の [Advanced] タ ブで、 値を 事前設定す る プ ロ パテ ィ を追加 し ます。 EAServer でのカ ス タ ム コ ンポーネ ン ト のプ ロパテ ィ の設定 カ ス タ ム コ ン ポーネ ン ト に必要な数だけ、 次のプ ロ パテ ィ を追加 し ま す。プ ロ パテ ィ は、汎用的なプ ロ パテ ィ と デー タ ベース接続プ ロ パテ ィ の 2 つのグループに分類 さ れます。 ブール プ ロ パテ ィ の場合、 値は True か False、 ま たは Yes か No です。 こ れ ら のプ ロ パテ ィ は、 コ ン ポーネ ン ト の イ ン ス タ ン ス化に影響す る 設定値を指定 し ます。 汎用的な プ ロパテ ィ 表 7-1: カ ス タ ム コ ンポーネ ン ト に追加する一般的な プ ロパテ ィ 汎用的な プ ロパテ ィ com.sybase.datawindow. sourceFileName com.sybase.datawindow. dwObjectName com.sybase.datawindow. fixed 説明 PBL、 コ ン ポーネ ン ト に対す る デー タ ウ ィ ン ド ウ オブジ ェ ク ト を含む PBD、ま たはデー タ ウ ィ ン ド ウ オブジ ェ ク ト であ る SRD フ ァ イ ルや PSR フ ァ イ ルを指定す る オ ン ラ イ ン ヘルプ ま たは 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルの 「SetDWObject メ ソ ッ ド 」 も 参照 sourceFileName に指定 さ れた PBL ま たは PBD に 含まれ る デー タ ウ ィ ン ド ウ オブジ ェ ク ト の名前 「setDWObject メ ソ ッ ド 」 も 参照 コ ン ポーネ ン ト を イ ン ス タ ン ス 化す る サーバ サ イ ド ス ク リ プ ト (SetDWObject、 Create、 Modify、 お よ び SetTrans メ ソ ッ ド )か ら コ ン ポーネ ン ト プ ロ パテ ィ を変更で き る か ど う か。 使用可能な値は 次の と お り • Yes ─ プ ロ パテ ィ は固定 さ れ る ため変更で き ない • No ― プ ロ パテ ィ は変更可能 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 211 第7章 汎用的な プ ロパテ ィ com.sybase.datawindow. serverServiceClasses com.sybase.datawindow. serverSideState Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス 説明 sourceFileName に指定 さ れた PBL ま たは PBD に 含まれ る PowerBuilder ユーザ オブジ ェ ク ト 。ク ラ ス名はセ ミ コ ロ ン (;) で区切 る 。ユーザ オブジ ェ ク ト は、デー タ 検証のためのカ ス タ ム イ ベン ト を 実装す る カ ス タ ム イ ベン ト については、 オ ン ラ イ ン ヘル プ ま たは 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マ ニ ュ アルの 「SetServerServiceClasses メ ソ ッ ド 」 を 参照 次の メ ソ ッ ド が呼び出 さ れ る ま で、 サーバがサー バ状態を保持す る か ど う かを指定す る 。 使用可能 な値は次の と お り • Yes ─ サーバ コ ン ポーネン ト は結果集合を 保持 し 、 でき る 限り ト ラ ン ザク ショ ン を 開いておく • No ─ (デフ ォ ル ト ) 結果集合は保存 さ れない。 ま た、 サーバ コ ン ポーネ ン ト は ク ラ イ ア ン ト か ら 返 さ れた情報を使用 し て、再度結果集合を 検索 し 、コ ミ ッ ト さ れていない変更内容を元に 戻す com.sybase.datawindow. trace コ ン ポーネン ト メ ソ ッ ド の呼び出し を EAServer ロ グに含める かど う か。 使用可能な値は次のと おり • Yes ─ コ ン ポーネ ン ト メ ソ ッ ド の呼び出 し が ロ グに一覧表示 さ れ る com.sybase.datawindow. HTMLObjectName • No ─ コ ン ポーネ ン ト メ ソ ッ ド の呼び出 し は ロ グに一覧表示 さ れない 生成 さ れた コ ー ド 内で、Web デー タ ウ ィ ン ド ウ ク ラ イ ア ン ト コ ン ト ロ ールに対 し て使用 さ れ る 名 前。 こ の名前 を 使用 し て、 ク ラ イ ア ン ト サ イ ド イ ベン ト を実装 し 、 ク ラ イ ア ン ト 側での ス ク リ プ ト を許可す る Web ページ上に複数の Web デー タ ウ ィ ン ド ウ が 存在す る 場合、 それ ら が衝突 し ない よ う にする た めに、 こ のプ ロ パテ ィ を設定す る com.sybase.datawindow. modifyString 「SetHTMLObjectName メ ソ ッ ド 」 も 参照 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト のプ ロ パテ ィ を 設定す る Modify メ ソ ッ ド への引数 と し て使用 さ れ る 文字列。 コ ン ポーネ ン ト は、 イ ン ス タ ン ス化 さ れ る と き に Modify メ ソ ッ ド を呼び出す 構文については、 「Modify メ ソ ッ ド 」 を参照 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 212 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス デー タ ベース接続プ ロパテ ィ デー タ ベー ス 接続プ ロ パ テ ィ では、 com. sybase.datawindow.trans.dbms を追加 し なければな り ません。こ のプ ロ パ テ ィ は、ほかの trans プ ロ パテ ィ のいずれか を認識す る 場合に設定 し な ければな り ません。 trans.dbms を設定す る と 、 指定 さ れていない接続プ ロ パテ ィ は、 デフ ォ ル ト では空の文字列 と な り ます。 デー タ ベー ス 接続についての詳細は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルの 「SetTrans メ ソ ッ ド 」 を参照 し て く だ さ い。 表 7-2: カ ス タ ム コ ンポーネ ン ト に追加するデー タ ベース接続プ ロパテ ィ デー タ ベ ー ス 接続 プ ロパテ ィ com.sybase.datawindow. trans.dbms com.sybase.datawindow. trans.dbparm com.sybase.datawindow. trans.lock com.sybase.datawindow. trans.logid com.sybase.datawindow. trans.logpass com.sybase.datawindow. trans.database com.sybase.datawindow. trans.servername 説明 データ ベース ベン ダの識別子。 PowerBuilder の接 続プロ フ ァ イ ル ダイ アロ グボッ ク ス に表示さ れる DBMS 固有の接続パ ラ メ ー タ 分離レ ベル。 デー タ ベー ス 環境設定については、 オン ラ イ ン ヘルプ を参照 コ ン ポーネン ト がデータ ベース サーバにロ グオン する と き に使用する アカウ ン ト の名前ま たは ID デー タ ベー ス サーバへの ロ グ オ ン に使用す る パ ス ワー ド コ ン ポ ー ネ ン ト の接続先デー タ ベー ス の名前。 ODBC の場合は無視 さ れ る デー タ ベース があ る サーバの名前 カ ス タ ム コ ンポーネ ン ト のイ ン ス タ ン ス化 カ ス タ ム コ ン ポーネ ン ト をサーバ サ イ ド ス ク リ プ ト で使用す る には、 YourPackage/YourComponent の形式でパ ッ ケージ名 と コ ン ポーネ ン ト 名を指定 し ます。 EAServer と と も に イ ン ス ト ール さ れ る 汎用 コ ン ポー ネ ン ト の メ ソ ッ ド を使用す る 場合、 汎用 コ ン ポーネ ン ト のヘルパ ク ラ ス 上の narrow メ ソ ッ ド を使用 し て DataWindow/HTMLGenerator115 イ ン タ フ ェース を参照 し なければな り ません。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 213 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス 次の コ ー ド は、HTMLGenerator115 汎用 コ ン ポーネ ン ト の イ ン タ フ ェ ー ス を使用す る EmpListDW と い う 名前のカ ス タ ム コ ン ポーネ ン ト を イ ン ス タ ン ス化 し ます。 EmpListDW は EmpListPkg パ ッ ケージに実装 さ れてい ま す。 こ の コ ー ド は、 196 ページの 「 コ ン ポーネ ン ト の イ ン ス タ ン ス 化」 の例の よ う に、 汎用 コ ン ポーネ ン ト を イ ン ス タ ン ス 化す る 行で置 き 換え る こ と も で き ますが、 汎用 コ ン ポーネ ン ト のヘルパ ク ラ ス で呼び出 さ れ る narrow メ ソ ッ ド を変更す る こ と はで き ません。 String dwGenerator = "EmpListPkg/EmpListDW"; EmpListDW dwGen = null; ... dwGen = HTMLGenerator115Helper.narrow(factory.create ("jagadmin","")); OneTrip メ ソ ッ ド の使用によ る、 コ ンポーネ ン ト の設定 と 生成 さ れた HTML の取得 195 ページの 「サーバ コ ン ポーネ ン ト の イ ン ス タ ン ス 化 と 設 定」 では、 Web デー タ ウ ィ ン ド ウ を正 し く 設定す る ために、 サーバ ス ク リ プ ト に含め る 必要が あ る い く つかの項目につい て説明 し ま し た。 こ れ ら の項目を別々に コ ー ド 化す る のではな く 、 EAServer コ ン ポーネ ン ト がデー タ ウ ィ ン ド ウ 定義 と ト ラ ン ザ ク シ ョ ン情報に よ っ て設定 さ れた と き に、 1 つの メ ソ ッ ド を使用 し てすべての設定を行い、 生成 さ れた HTML を取得 し ます。 次の 方法は、 サーバ コ ン ポ ー ネ ン ト で 状態 を 保持す る こ と な く パ フ ォ ーマ ン ス を向上 さ せ る 場合には、 特に便利です。 String browser=(String)request.getHeader("UserAgent"); dwGen.SetBrowser(browser); String URI = request.getRequestURI(); String [] myArray = URI.split ("/"); String selfLink = myArray [myArray.length-1]; int retVal; String dw_1_action =(String)request.GetParameter ("dw_1_action"); String dw_1_context = (String)request.GetParameter ("dw_1_context"); if (dw_1_action == null){ dw_1_action = ""; } if (dw_1_context == null){ dw_1_context = ""; } // サーバに設定情報を渡す String dwHTML = dwGen.OneTrip("dw_1", browser, selfLink, "", dw_1_action, dw_1_context); // OneTrip から返 さ れた HTML を文書に挿入 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 214 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス out.print (dwHTML); デー タ ウ ィ ン ド ウ が検索引数を必要 と す る 場合は、 OneTrip ではな く OneTripEx を使用 し ま す。 コ ー ド で は、 検索引数値を持つページ パ ラ メ ー タ が存在す る か ど う か をチ ェ ッ ク し ま す。 ま た、 selflinkargs 式を使用 し て、 リ ロ ー ド さ れたページ内 で値が ま だ有効であ る か ど う かについて も 確認 し ます。 検索引数での OneTripEx の使い方 String retrievearg = (String) request.getParameter ("RetArg"): if (retrievearg == null) { // 適当なデ フ ォル ト 値を設定 retrievearg = "default"; } String selflinkarg = "RetArg='\"" + retrievearg + "\"'"; String dwHTML = dwGen.OneTripEx("dw_1", retrievearg, browser, selfLink, selflinkarg, action, context); out.print (dwHTML); サーバ上での状態の保持 ス テー ト レ ス コ ン ポーネ ン ト の使い方 Web デー タ ウ ィ ン ド ウ は、 ス テー ト レ ス (状態を持た ない) サーバ環 境で動作で き ます。 Web ページ内の変数は、 表示 さ れ る 行お よ びユー ザが加え た変更に関す る 情報を保持 し ます。 こ の情報は、 必要で あれ ば、 サーバ コ ン ポーネ ン ト に送 ら れ る ので、 コ ン ポーネ ン ト は呼び出 さ れ る たびに、 その状態 を リ ス ト ア で き ま す。 状態の リ ス ト ア では、 ユーザが別のページに移動す る な ど し てページが リ ロ ー ド さ れ る たび に、 デー タ ベース のデー タ 検索な ど が行われ ます。 ス テー ト レ ス モー ド での運用は、サーバ リ ソ ース の使用を最低限に抑 え ますが、 パフ ォ ーマ ン ス は低下 し ます。 ク ラ イ ア ン ト はサーバ コ ン ポーネ ン ト の状態を文字列形式で保持 し 、 要求があ る ご と に情報が受 け渡 さ れ ます。 ま た、 サーバ上で状態が保持 さ れていない場合、 コ ン ポーネ ン ト は呼び出 さ れ る たびにデー タ ベー ス と 接続 し てデー タ を検 索 し なければな り ません。 コ ン ポーネ ン ト サーバが接続キ ャ ッ シ ュ を 行わない場合は、 ク ラ イ ア ン ト の応答時間は非常に長 く な り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 215 第7章 ス テー ト フ ル コ ン ポーネ ン ト の使い方 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス サーバ上で状態を保持す る こ と で、 パ フ ォ ーマ ン ス を向上 さ せ る こ と がで き ます。 状態を保持す る ために、 ページ サーバのセ ッ シ ョ ン オブ ジ ェ ク ト はサーバ コ ン ポーネ ン ト への参照を保持 し ます。サーバ コ ン ポーネ ン ト が EAServer で動作 し てい る 場合、 その コ ン ポーネ ン ト を ス テー ト フ ル (状態を持つ) オブジ ェ ク ト と し てマー ク し 、 タ イ ム ア ウ ト 値を設定 し なければな り ません。 ス テー ト フル オブジ ェ ク ト と し て コ ン ポーネ ン ト を使用 し てい る 場合に、 タ イ ム ア ウ ト 値の設定に失敗 す る と 、 サーバ上の コ ン ポーネ ン ト は孤立 イ ン ス タ ン ス にな り ます。 サーバ上で状態を保持す る こ と で、 同 じ コ ン ポーネ ン ト が再度ア ク セ ス さ れた際の応答時間を短縮で き ます。 ただ し 、 ク ラ イ ア ン ト 接続の たびに使用 さ れ る サーバ リ ソ ース は増大 し ます。 サーバ リ ソ ース に与え る 影響を最小限にす る ために、 セ ッ シ ョ ン時の タ イ ム ア ウ ト を短 く 設定 し て、 再要求 さ れ る 可能性の低い コ ン ポーネ ン ト を サーバか ら 取 り 除 き ます。 こ の コ ン ポーネ ン ト が再度呼び出 さ れた場合、 その状態は ク ラ イ ア ン ト 状態情報か ら リ ス ト ア で き ま す。 ページの ヒ ッ ト 数が多い と 予想 さ れ る 場合は、 タ イ ム ア ウ ト 値を短 く 設定す る こ と で、 同時に保持す る 必要があ る イ ン ス タ ン ス数を減 ら し ます。 ステート フ ル オブジェ ク ト と し てのマーク ス テ ート フ ル オ ブ ジ ェ ク ト と し て コ ン ポ ーネ ン ト を マ ーク する に は、 EAServer Manager で コ ン ポ ーネ ン ト の com.sybase.datawindow. serverSideState プロ パテ ィ を 設定する か、 サーバ サイ ド ス ク リ プト で SetServerSideState メ ソ ッ ド を 呼び出し ま す。 dwGen.SetServerSideState( true ); EAServer Manager で、 com.sybase.jaguar.component.stateless プ ロ パテ ィ を HTMLGenerator115 コ ン ポーネン ト に対し て設定し ないでく ださ い。 タ イムアウ ト 値の設定 HTMLGenerator115 コ ン ポーネ ン ト に タ イ ム ア ウ ト 値を設定す る には、 EAServer Manager で コ ン ポーネ ン ト のプ ロ パテ ィ ダ イ ア ロ グボ ッ ク ス を 開い て、 com.sybase.jaguar.component.timeout プ ロ パ テ ィ を 設定 し ま す。 タ イ ム ア ウ ト 値は秒単位で指定 し ます。 0 を指定す る と 、 コ ン ポー ネ ン ト は タ イ ム ア ウ ト し ません。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 216 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス サービ ス ク ラ スの使い方 サーバ コ ン ポーネ ン ト で使用可能な メ ソ ッ ド を使用 し て、 検証ルーチ ンやエ ラ ー処理な ど、ほ と ん ど のサーバ サ イ ド プ ロ セ ス を実行で き ま す。 ま た、 Web デー タ ウ ィ ン ド ウ では、 ほかの方法を使用 し て、 特殊 プ ロ セ ス を追加す る こ と も で き ます。 サーバ コ ン ポーネ ン ト で使用で き ないサーバ サ イ ド プ ロ セ ス を組み 込むために、1 つま たは複数の PowerBuilder カ ス タ ム ク ラ ス ユーザ オ ブジ ェ ク ト を定義で き ます。 こ れはサービ ス ク ラ ス と 呼ばれます。 こ れ ら のサービ ス ク ラ ス は、サーバ コ ン ポーネ ン ト 用のデー タ ウ ィ ン ド ウ オブジ ェ ク ト と し て同 じ PBL ま たは PBD に格納 さ れ ます。 サービ ス ク ラ ス は、 サーバ上で追加プ ロ セ ス を組み込む場合にはいつで も 使 用で き ま す。 た と えば、 こ の方法で SQLPreview イ ベン ト に ア ク セ ス し て、 SQL 構文を調べた後でデー タ ベース に コ ミ ッ ト で き ます。 コ ー ド の実装場所 サービ ス ク ラ ス は、 規定の署名を使用 し てユーザ定義の イ ベン ト を実 装 し ます。 こ れ ら の イ ベン ト は標準的なデー タ ウ ィ ン ド ウ イ ベン ト に 対応 し ます。 ユーザ定義の イ ベン ト では、 プ ロ セ ス を実行 し て、 該当 す る デー タ ウ ィ ン ド ウ イ ベ ン ト を キ ャ ン セルす る か ど う か を サーバ コ ン ポーネ ン ト に知 ら せ る リ タ ーン コ ー ド を指定 し ます。 サーバ コ ン ポーネ ン ト では、 プ ロ パテ ィ を設定す る か、 こ れ ら のユー ザ オブジ ェ ク ト を サーバ コ ン ポーネ ン ト 用のサービ ス ク ラ ス と し て 識別す る メ ソ ッ ド を呼び出 し ます。 コ ー ド の呼び出 し 方法 サービ ス ク ラ ス は次の よ う に処理 さ れ ます。 1 サービ ス ク ラ ス がイ ン ス タ ン ス 化さ れる のは、 (サービ ス ク ラ ス が EAServer プロ パテ ィ で指定さ れて いる 場合は) コ ン ポ ーネ ン ト が イ ン ス タ ン ス 化 さ れ る と き で す。 そ う で な い 場 合 は、 SetServerServiceClasses メ ソ ッ ド に よ っ て 最初に 登録さ れる と き で す。 2 データ ス ト アのサーバ コ ン ポーネン ト 内でイ ベン ト が発生し ま す。 3 サーバ コ ン ポーネ ン ト が、 登録 さ れてい る 各サービ ス ク ラ ス内で 同 じ 名前の イ ベン ト を呼び出 し ます。 4 サービ ス ク ラ ス がイ ベン ト を 実装する と 、 イ ベン ト ス ク リ プト が実 行さ れ、 リ タ ーン コ ード がサーバ コ ン ポーネン ト に返さ れま す。 5 リ タ ーン コ ー ド を介 し て イ ベン ト を キ ャ ン セルで き る 場合、 サー ビ ス ク ラ ス のいずれか で そ の コ ー ド が返 さ れ る と 、 イ ベ ン ト は サーバ コ ン ポーネ ン ト の中でキ ャ ン セル さ れ ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 217 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス 図 7-2: サービ ス ク ラ スの動作 PowerBuilder コ ンポーネ ン ト に対するサービ ス ク ラ スの定義 v PowerBuilder コ ンポーネ ン ト に対 し てサービ ス ク ラ ス を作成 し て登録する には 1 サーバ コ ン ポーネ ン ト 用のデー タ ウ ィ ン ド ウ オブジ ェ ク ト が含 ま れ る PBL で、 1 つ ま たは複数の PowerBuilder カ ス タ ム ク ラ ス ユーザ オブジ ェ ク ト を定義 し ます。 2 各カ ス タ ム ク ラ ス ユーザ オブジ ェ ク ト で、 1 つま たは複数のユー ザ定義の イ ベン ト を定義 し ま す。 イ ベン ト のシ グ ネチ ャ 名は、 以 下のいずれか と 一致 し な ければな り ま せん。 こ れ ら の イ ベン ト は すべて Long 型の値を返 し ます。 • DBError (long sqldbcode, string sqlerrtext, string sqlsyntax, DWBuffer buffer, long row, DataStore ds) • HTMLContextApplied (string action, DataStore ds) • RetrieveEnd (long rowcount, DataStore ds) • RetrieveStart (DataStore ds) デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 218 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス • SQLPreview (SQLPreviewFunction request, SQLPreviewType sqltype, string sqlsyntax, DWBuffer buffer, long row, DataStore ds) • UpdateEnd (long rowsinserted, long rowsupdated, long rowsdeleted, DataStore ds) • UpdateStart (DataStore ds) 引数は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルに掲載 さ れ てい る 、 同様の名前を持つデー タ ウ ィ ン ド ウ イ ベン ト に定義 さ れ る 引数 と 同 じ です。 ただ し 、 追加の DataStore 型引数は除 き ま す。 こ の引数は、 ユーザ オブジ ェ ク ト に Web デー タ ウ ィ ン ド ウ デー タ へのア ク セ ス を提供 し ます。 3 イ ベン ト ス ク リ プ ト で、 リ タ ーン コ ー ド を使用 し て、 サーバ コ ン ポーネ ン ト が イ ベン ト を キ ャ ン セルす る 必要が あ る か ど う か を指 定 し ます。 リ タ ーン コ ー ド も 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス 』 マニ ュ アル に記載 さ れてい る も の と 同 じ です。 イ ベン ト を実装す る サービ ス ク ラ ス は、 イ ベン ト のキ ャ ン セルを指定で き ます。 4 コ ン ポーネ ン ト に対す る サービ ス ク ラ ス を登録 し ます。 ユーザ オブ ジ ェ ク ト を サー ビ ス ク ラ ス と し て使用で き る よ う に す る には、 2 通 り の方法があ り ます。 • EAServer の コ ン ポーネ ン ト の場合、 Web ページ テ ンプ レー ト のサーバ サ イ ド ス ク リ プ ト で SetServerServiceClasses メ ソ ッ ド を呼び出す dwGen.SetServerServiceClasses ("uo_update_validate;uo_retrieve_process"); • EAServer のカ ス タ ム コ ン ポーネ ン ト の場合、EAServer Manager で次のプ ロ パテ ィ を追加す る com.sybase.datawindow.serverServiceClasses プ ロ パ テ ィ 値 を ユーザ オ ブ ジ ェ ク ト 名の リ ス ト に設定 し ま す。 名前は次の よ う にセ ミ コ ロ ン (;) で区切 り ま す。 次に例 を示 し ます。 uo_update_validate;uo_retrieve_process 例 デー タ ベー ス を更新す る 前に、 デー タ が予算総額を超え ていない こ と をチ ェ ッ ク す る と し ます。 UpdateStart イ ベン ト を実装 し たサービ ス ク ラ ス を設定で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 219 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス PowerBuilder のカ ス タ ム ク ラ ス ユーザ オブジ ェ ク ト で、 [挿入| イ ベ ン ト ] を選択 し 、新 し い イ ベン ト UpdateStart を宣言 し ます。UpdateStart イ ベン ト は Long 型の値を返 し 、 DataStore 型引数 ds を 1 つ持ち ます。 UpdateStart (DataStore ds) returns long 次の UpdateStart イ ベン ト の ス ク リ プ ト には、 予算表か ら デー タ を検索 し 、 そのデー タ を コ ン ポーネ ン ト のデー タ と 比較す る ためのデー タ ス ト アがあ り ます。 DataStore ds_budget double darray[], total long ll_upper integer i ds_budget = CREATE datastore ds_budget.DataObject = "d_budget" ds_budget.SetTransObject(...) ds_budget.Retrieve( ) // 検証するデー タ を取得 darray[] = ds.Object.expenses.Primary // darray の値を合計 ll_upper = UpperBound(darray) FOR i = 1 to ll_upper total = total + darray[i] NEXT IF ds_budget.Object.cf_expense_total < total THEN RETURN 1 END IF Java コ ンポーネ ン ト に対するサービ ス ク ラ スの定義 v Java コ ンポーネ ン ト に対 し てサービ ス ク ラ ス を作成 し て登録するには 1 Java サービ ス ク ラ ス がシ ス テ ム ク ラ ス パ ス にあ る こ と を確認 し ま す。 2 Java サービ ス ク ラ ス で、 1 つま たは複数の メ ソ ッ ド を定義 し ます。 メ ソ ッ ド のプ ロ ト タ イ プは、 以下のいずれか と 一致 し な ければな り ません。イ ベン ト のデー タ 型はすべて powersoft.datawindow.event package に定義 さ れてい ます。 • DBError (DatabaseEvent event, DataStore ds) デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 220 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス • RetrieveEnd (RetrieveEvent event, DataStore ds) • RetrieveStart (RetrieveEvent event, DataStore ds) • SQLPreview (DatabaseEvent event, DataStore ds) • UpdateEnd (UpdateEvent event, DataStore ds) • UpdateStart (UpdateEvent event, DataStore ds) 引数は、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルに掲載 さ れ てい る 、 同様の名前を持つデー タ ウ ィ ン ド ウ の Java Edition イ ベン ト に定義 さ れ る 引数 と 同 じ です。 ただ し 、 追加の DataStore 型引数 は除 き ま す。 こ の引数は、 Java ク ラ ス に Web デー タ ウ ィ ン ド ウ デー タ へのア ク セ ス を提供 し ます。 3 ク ラ ス メ ソ ッ ド で、 リ タ ーン コ ー ド を設定 し て、 サーバ コ ン ポー ネ ン ト が イ ベン ト を キ ャ ン セルす る 必要があ る か ど う か を指定 し ます。 リ タ ーン コ ー ド も 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス 』 マニ ュ アル に記載 さ れてい る も の と 同 じ です。 イ ベン ト を実装す る サービ ス ク ラ ス は、 イ ベン ト のキ ャ ン セルを指定で き ます。 4 コ ン ポーネ ン ト に対す る サービ ス ク ラ ス を登録 し ます。 Java ク ラ ス を サービ ス ク ラ ス と し て使用で き る よ う にす る には、2 通 り の方法があ り ます。 • EAServer の場合、Web ページ テ ン プ レー ト のサーバ サ イ ド ス ク リ プ ト で SetServerServiceClasses メ ソ ッ ド を呼び出す dwGen.SetServerServiceClasses ("UpdateValidate;RetrieveProcess"); • EAServer のカ ス タ ム コ ン ポーネ ン ト の場合、EAServer Manager で次のプ ロ パテ ィ を追加す る com.sybase.datawindow.serverServiceClasses プ ロ パ テ ィ 値 を ユーザ オ ブ ジ ェ ク ト 名の リ ス ト に設定 し ま す。 名前は次の よ う にセ ミ コ ロ ン (;) で区切 り ま す。 次に例 を示 し ます。 UpdateValidate;RetrieveProcess 例 デー タ ベー ス を更新す る 前に、 デー タ が予算総額を超え ていない こ と をチ ェ ッ ク す る と し ます。 UpdateStart イ ベン ト を実装 し たサービ ス ク ラ ス を設定で き ます。 メ ソ ッ ド の宣言は次の よ う に し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 221 第7章 Web デー タ ウ ィ ン ド ウのサーバ サイ ド プ ロ セス public void UpdateStart (UpdateEvent event, DataStore ds) 次の メ ソ ッ ド の ス ク リ プ ト には、予算表か ら デー タ を検索 し 、そのデー タ を コ ン ポーネ ン ト のデー タ と 比較す る ためのデー タ ス ト アがあ り ま す。 import powersoft.datawindow.event.*; import powersoft.datawindow.*; public void UpdateStart (UpdateEvent event, DataStore ds) { DataStore ds_budget; ds_budget = new DataStore(); ds_budget.setSourceFileName ("c:\\mydirectory\\mypbd.pbd"); ds_budget.setDataWindowObjectName("d_object"); ds_budget.setTransObject(...); ds_budget.retrieve( ); // 検証するデー タ を取得 int rowcount = ds.getRowCount(); int total = 0; for (int i = 1; i<=rowcount;i++){ total=total + ds.getItemNumber(i, "expenses", ds.Primary); } String expense_total = ds_1.describe (...); double d_expense_total = Double.parseDouble (expense_total); if (d_expense_total<total){ event.setReturnCode(1); } ) デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 222 第 8 章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 こ の章について こ の 章 で は、 Sybase の デ ー タ ウ ィ ン ド ウ Web コ ン ト ロ ー ル ActiveX (Web ActiveX) の使い方について説明 し ます。 非推奨のテ ク ノ ロ ジ デー タ ウ ィ ン ド ウ Web コ ン ト ロ ール Active X は非推奨のテ ク ノ ロ ジ で あ り 、 PowerBuilder の今後の リ リ ー ス ではサポー ト さ れな く な る 可能性があ り ます。 内容 項目 Web ActiveX について Web ページに コ ン ト ロ ールを挿入する HTML Web ActiveX 対応のデー タ ウ ィ ン ド ウ オブジ ェ ク ト デー タ ウ ィ ン ド ウ ト ラ ン ザ ク シ ョ ン オブ ジ ェ ク ト コ ン ト ロ ールの使い方 デー タ ベース と の接続 Web ActiveX 用ス ク リ プ ト の記述 Web ActiveX の配布 ページ 223 227 231 234 235 238 240 Web ActiveX について 機能 Sybase デー タ ウ ィ ン ド ウ Web コ ン ト ロ ール ActiveX は、 Microsoft Internet Explorer で完全な対話操作が可能なデー タ ウ ィ ン ド ウ コ ン ト ロ ールです。 デー タ ウ ィ ン ド ウ Web コ ン ト ロ ール ActiveX は、 リ ッ チ テ キ ス ト を除 く 、 デー タ ウ ィ ン ド ウ の標準機能をすべて実 装 し てい ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 223 第8章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 デー タ ウ ィ ン ド ウ では、 検索引数を使用 し たデー タ 検索 と デー タ 更新 を サポー ト し てい ます。 編集様式、 表示書式、 お よ び入力条件則を使 用で き ま す。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト プ ロ パテ ィ を変更す る Modify な ど、 デー タ ウ ィ ン ド ウ を操作す る ための標準 メ ソ ッ ド のほ と ん ど を使用で き ます。 ただ し 、 フ ァ イ ル シ ス テ ム と の対話を必要す る SaveAs や SaveAsAscii な ど の一部の関数はサポー ト さ れてい ま せん。 こ れに よ り 、 Web ActiveX は、 安全で ス ク リ プ ト 実行可能 (Scriptable) な ActiveX コ ン ト ロ ール と し て分類 さ れ ます。 Web ActiveX には、複数の Web ActiveX コ ン ト ロ ール と 共有可能なデー タ ベー ス 接続を確立す る Sybase デー タ ウ ィ ン ド ウ ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト コ ン ト ロ ールが含ま れてい ます。 サポー ト する ブ ラ ウザ Web ActiveX お よ び ト ラ ン ザ ク シ ョ ン オブ ジ ェ ク ト コ ン ト ロ ールは、 ActiveX コ ン ト ロ ール を サ ポ ー ト す る ブ ラ ウ ザ (た と え ば、 Microsoft Internet Explorer バージ ョ ン 3 以降)での使用を目的に設計さ れています。 こ のデー タ ウ ィ ン ド ウ コ ン ト ロ ールは、 Netscape 社のブ ラ ウ ザ用には 設計 さ れてい ません。 同社のブ ラ ウ ザは、 ActiveX をサポー ト し ていな いため、 ActiveX を サポー ト す る サー ド パーテ ィ 製プ ラ グ イ ン を利用 し て も 、 コ ン ト ロ ール操作用の ス ク リ プ ト は異な る 動作を し ます。 ま た、 こ の環境での動作テ ス ト も 行っ てい ません。 開発環境 PowerBuilder を イ ン ス ト ールす る と 、 セ ッ ト ア ッ プ プ ロ グ ラ ム に よ っ て、 Web ActiveX お よ び ト ラ ンザ ク シ ョ ン オブジ ェ ク ト コ ン ト ロ ール が Windows レ ジ ス ト リ に登録 さ れ ます。 レ ジ ス ト リ に入力 さ れた ク ラ ス情報は、 PowerBuilder ブ ラ ウ ザの [OLE] タ ブの [OLE カ ス タ ム コ ン ト ロ ール] に表示 さ れ ま す。 ブ ラ ウ ザの [OLE] タ ブでは、 コ ン ト ロ ールのプ ロ パテ ィ 、 イ ベン ト 、 お よ び メ ソ ッ ド を調べ る こ と も で き ます。 Web ActiveX を使用す る には、 開発シ ス テ ム が以下の要件を満た し て い る 必要があ り ます。 こ れ ら の要件は Java VM が必要な PowerBuilder コ ン ポーネ ン ト を イ ン ス ト ールす る 際に必要 と な る も のです。 • Sun JRE 1.2 以降がシ ス テ ム に イ ン ス ト ール さ れてい る • jvm.dll フ ァ イ ルのパ ス がシ ス テ ム の PATH 環境変数に設定 さ れて いる パ ス が ...\JRE\bin\client (JRE 1.4 の場合)、 ..\JRE\bin\classic (JRE 1.2 ま たは 1.3 の場合) に設定 さ れてい る デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 224 第8章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 • シス テム の PATH 環境変数のディ レ ク ト リ に次のフ ァ イ ルが格納さ れている 。 pbjvm115.dll、 pbshr115.dll、 お よ び pbjdbc12115.jar • Internet Infomation Services (IIS) 6.0 を使用 し てい る 場合は、 .pbl、 .pbd、お よ び .psr 拡張子を MIME タ イ プ と 認識す る よ う に IIS を設 定す る 必要があ り ます。 225 ページの 「MIME タ イ プ を IIS 6.0 に 追加」 を参照 し て く だ さ い。 Java ク ラ ス を使用す る 場合は、デー タ ベース ベン ダの ク ラ イ ア ン ト レ イ ヤがシ ス テ ム に イ ン ス ト ール さ れてい る 必要があ り ます。 必要な HTML については、 227 ページの 「Web ページに コ ン ト ロ ール を挿入す る HTML」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト Web ActiveX はデー タ ウ ィ ン ド ウ オブジ ェ ク ト を使用す る こ と で、 検 索対象のデー タ と 、 検索 し た デー タ の表示方法 を 決定 し ま す。 Web ActiveX では、 デー タ を検索す る 必要がない Powersoft レ ポー ト (PSR) を表示す る こ と も で き ます。 Web ActiveX に関連付け ら れた デー タ ウ ィ ン ド ウ オブジ ェ ク ト には、 リ ッ チテ キ ス ト 以外の ど の提示様式で も 使用で き ます。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト は、 PowerBuilder ラ イ ブ ラ リ (PBL) ま たは PowerBuilder 動的 ラ イ ブ ラ リ (PBD) に格納 さ れ ます。デー タ ウ ィ ン ド ウ ラ イ ブ ラ リ は Web サーバ上に格納 さ れ、必要であれば、Internet Explorer に よ っ てダ ウ ン ロ ー ド さ れ ます。 ラ イ ブ ラ リ の位置は URL で 示 し ます。 サポー ト さ れてい る プ ロ ト コ ル (http、 ftp、 file な ど) を使 用 し ていれば、 URL は相対ア ド レ ス で も 絶対ア ド レ ス で も か ま い ませ ん。 詳細については、 231 ページの 「Web ActiveX 対応のデー タ ウ ィ ン ド ウ オブジ ェ ク ト 」 を参照 し て く だ さ い。 MIME タ イ プ を IIS 6.0 に追加 IIS 6.0 (Windows Server 2003 に 含 ま れ る IIS の バ ー ジ ョ ン) で Web ActiveX を使用す る には、 .pbl、 .pbd、 お よ び .psr 拡張子を認識す る よ う に IIS を設定す る 必要があ り ます。IIS の以前のバージ ョ ンは、IIS が 任意 の フ ァ イ ル を や り 取 り で き る よ う に す る ワ イ ル ド カ ー ド 文字 MIME マ ッ ピ ン グ を含んでい ます。 次の処理を行 う には、 ロ ーカル コ ン ピ ュ ー タ で Administrators グルー プの メ ンバーであ る 必要があ り ます。 あ る いは、 適切な権限を委任 さ れて い る 必要が あ り ま す。 詳細につい ては、 IIS 6.0 の Microsoft のマ ニ ュ ア ル ま た は こ の Microsoft サ ポ ー ト ド キ ュ メ ン ト の サ イ ト http:// www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/ cd72c0dc-c5b8-42e4-96c2-b3c656f99ead.mspx を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 225 第8章 v デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 グローバル MIME タ イ プ を IIS 6.0 に追加するには 1 IIS マネージ ャ で、 MIME タ イ プ を追加 し たい コ ン ピ ュ ー タ で右 ク リ ッ ク し て、 [プ ロ パテ ィ ] を ク リ ッ ク し ます。 2 [MIME の種類] を ク リ ッ ク し ます。 3 [新規作成] を ク リ ッ ク し ます。 4 [拡張子] ボ ッ ク ス に 「pbl」 を入力 し ます。 5 [MIME の種類] ボ ッ ク ス に 「application/octet-stream」 を入力 し ます。 6 .pbd 拡張子 と .psr 拡張子について、 MIME の種類 と し てそれぞれ application/octet-stream お よ び application/datawindow を使 用 し て手順 4 と 5 を繰 り 返 し ます。 7 [OK] を ク リ ッ ク し ます。 8 IIS を再起動 し て新 し い設定を適用 し ます。 特定の Web サ イ ト あ る い はデ ィ レ ク ト リ の HTTP ヘ ッ ダ ー プ ロ パ テ ィ ページか ら MIME の種類を追加す る こ と も で き ます。 デー タ ベース と の接続 Web ActiveX では、 デー タ ベー ス と の接続に JDBC を使用 し ま す。 こ れに よ っ て、 ユーザはア ク セ ス先のサーバ上にあ る デー タ ソ ース ( イ ン タ ーネ ッ ト 上のデー タ ベー ス や中間層のサーバな ど) に接続で き ま す。 内部 ト ラ ンザ ク シ ョ ン プ ロ パテ ィ を使用 し て接続を指定で き ます。 ま た、 独立し た ト ラ ンザ ク シ ョ ン オブジ ェ ク ト であ る Sybase データ ウ ィ ン ド ウ ト ラ ンザ ク シ ョ ン オブジ ェ ク ト コ ン ト ロ ールに接続する こ と も で き ま す。 独立 し た ト ラ ンザ ク シ ョ ン オブジ ェ ク ト を接続に使用する と 、SQL COMMIT 文およ び ROLLBACK 文を実行する タ イ ミ ン グ を制御で き る ので、 複数の コ ン ト ロ ールに対し て同じ 接続を使用で き ます。 詳細については、 234 ページの 「デー タ ウ ィ ン ド ウ ト ラ ンザ ク シ ョ ン オブジ ェ ク ト コ ン ト ロ ールの使い方」 を参照 し て く だ さ い。 ス ク リ プ ト の記述 Web ActiveX は Internet Explorer 用に設計 さ れてい る ので、 Jscript ま た は ECMAScript 互換の ス ク リ プ ト 言語を使用 し て、 ス ク リ プ ト を記述 す る こ と がで き ます。 基本的には、 PowerBuilder アプ リ ケーシ ョ ン の場合 と 同 じ メ ソ ッ ド を 使用で き ます。 ただ し 、 異な る 点 も あ り ます。 • デー タ 型は、 String 型、 Number 型、 Boolean 型、 お よ び各種オブ ジ ェ ク ト 型な ど、 基本的な JavaScript 型にマ ッ プ さ れ る デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 226 第8章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 • ECMAScript 言語では、 参照渡 し の引数はサポー ト さ れない。 その ため、 参照引数の値を チ ェ ッ ク す る かわ り に、 別の メ ソ ッ ド を呼 び出 し て値を検索す る • カ タ ロ グ デー タ 型はサポー ト さ れない。 かわ り に、 カ タ ロ グ デー タ 値に対応す る 整数値を指定す る 詳細については、 238 ページの 「Web ActiveX 用ス ク リ プ ト の記述」 を 参照 し て く だ さ い。 イ ベン ト 配布 Web ActiveX は、 標準のデー タ ウ ィ ン ド ウ コ ン ト ロ ール と 同 じ イ ベン ト を サポー ト し てい ますが、 以下の点で異な り ます。 • Web 規約に準拠す る ために イ ベン ト 名が異な る • ECMAScript 言語の イ ベン ト には戻 り 値がない。 かわ り に、 SetActionCode を呼び出 し て、 イ ベン ト の結果を制御で き る Web ActiveX は CAB フ ァ イ ル と し て提供 さ れ ます。 こ れに よ っ て、 ク ラ イ ア ン ト ブ ラ ウ ザで コ ン ト ロ ール を イ ン ス ト ール し て登録で き ま す。 CAB フ ァ イ ル を参照す る Web ページ を ユーザがダ ウ ン ロ ー ド す る と 、 必要に応 じ て、 ブ ラ ウ ザ も CAB フ ァ イ ルを ダ ウ ン ロ ー ド し 、 ア ンパ ッ ク し て、 コ ン ト ロ ールを登録 し ます。 ク ラ イ ア ン ト 側でそのほ かの フ ァ イ ルの実装が必要 と な る 場合 も あ り ます。 詳細については、 240 ページの 「Web ActiveX の配布」 を参照 し て く だ さ い。 Web ページに コ ン ト ロールを挿入する HTML Object 要素 と それに関連 し た Param 要素を使用 し て、 Web ページに コ ン ト ロ ールを取 り 込みます。 その後、 デー タ ベー ス と の接続、 デー タ の検索 と 更新、 お よ びユーザ ア ク シ ョ ンへの対処を コ ン ト ロ ールに指 示す る ス ク リ プ ト を記述 し ます。 Object 要素 と Param 要素が Web ペー ジに ど の よ う に表示 さ れ る かは、 次の節で説明 し ます。 Object 要素 仕組み ActiveX コ ン ト ロ ールは、Object 要素を使用 し て、コ ン ト ロ ールの GUID (固有の識別子) やその コ ン ト ロ ールがページで占有す る スペース を指 定 し ます。 Object タ グは次の よ う に指定 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 227 第8章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 <OBJECT id=PSDWC1 height=357 classid="CLSID:B5B51503B5B5-1000-8000-080009AC61A9" width=343> </OBJECT> CODEBASE 属性 ユ ー ザ に コ ン ト ロ ー ル を ダ ウ ン ロ ー ド さ せ る 必 要 が あ る 場 合 は、 Object 要素に CODEBASE 属性を指定 し て、 ダ ウ ン ロ ー ド す る フ ァ イ ルを識別で き ます。 ブ ラ ウ ザは CAB フ ァ イ ルを ダ ウ ン ロ ー ド す る と 、 そ の フ ァ イ ル を ア ン パ ッ ク し、 ユーザの シ ス テ ム レ ジ ス ト リ に ActiveX コ ン ト ロ ールを登録 し ます。 CODEBASE の値は次の書式で指定 し ます。 url#version CODEBASE 値には、 通常、 相対 URL を使用 し ます。 CODEBASE="cabs/psdwc115.cab#11,5,0,1053" URL は、 Web サーバ上でのデー タ ウ ィ ン ド ウ コ ン ト ロ ールの CAB フ ァ イ ルの位置です。 絶対 URL ま たは相対 URL の ど ち ら で も 使 用で き ます。 URL バージ ョ ン バージ ョ ン は、 カ ン マで区切 ら れた 4 つの数字です。 その 数字は CAB フ ァ イ ルのバージ ョ ン と 一致 し なければな り ません。CAB フ ァ イ ルのバージ ョ ン番号は、 PowerBuilder のバージ ョ ン番号 と 同 じ です。 v 例 Windows 環境で 4 つの数字で構成 さ れるバージ ョ ン番号を調べる には 1 Windows エ ク ス プ ロ ー ラ で、 PowerBuilder の実行フ ァ イ ル、 ま た は PowerBuilder DLL を選択 し ます。 2 メ ニ ュ ー バーか ら 、 [フ ァ イ ル|プ ロ パテ ィ ] を選択 し ます。 3 [バージ ョ ン情報] タ ブで、 [ フ ァ イル バージ ョ ン] を確かめ ます。 一般的には、 11.5.0.1053 です。 CODEBASE 属性を指定 し た Object 要素は、 次の よ う にな り ます。 <OBJECT codeBase= "http://www.domain.com/psdwc115.cab#Version=11,5,0, 1053" id=PSDWC1 height=357 classid="CLSID:B5B51503B5B5-1000-8000-080009AC61A9" width=343> </OBJECT> 新 し いバージ ョ ン 新 し いバージ ョ ン の CAB フ ァ イ ル を取 り 込む場合は、 Web ページ上 でバージ ョ ン番号を変更 し て、 ブ ラ ウ ザで新 し いバージ ョ ン の コ ン ト ロ ールを イ ン ス ト ール し ます。 新 し いバージ ョ ンの配布についての詳細は、240 ページの「Web ActiveX の配布」 を参照 し て く だ さ い。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 228 第8章 個別のフ ァ イルに Object タ グを置 く デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 Internet Explorer の累積的セキ ュ リ テ ィ 更新 (912812) あ る いはそれ以 降のセ キ ュ リ テ ィ 更新を Web ActiveX コ ン ト ロ ールが稼働 し てい る コ ン ピ ュ ー タ に イ ン ス ト ール し てい る 場合は、 ブ ラ ウ ザの リ フ レ ッ シ ュ は コ ン ト ロ ールを正 し く リ フ レ ッ シ ュ し ません。 こ の更新については、 2006 年 4 月に公開 さ れた Microsoft Security Bulletin MS06-013 に記載 さ れてい ます。 こ の問題に対処す る ためには、 メ イ ンの HTML フ ァ イ ルのかわ り に別 の JavaScript フ ァ イ ルに <OBJECT> タ グ をお き ます。 // HTML フ ァ イル <HTML> <HEAD> <TITLE>test</TITLE> </HEAD> <BODY bgColor="white" PSPARAMS=""> <P>Put your data here </P> <P> </P> <P> <div id="DivID"> <script src="createElement.js"></script> </div> </BODY> </HTML> createElement.js JavaScript フ ァ イ ルは、次の よ う に Object タ グ を含みま す。 // createElement.js フ ァ イル var d = document.getElementById("DivID"); d.innerHTML = '<OBJECT id="OBJECT1" style="WIDTH: 627px; HEIGHT: 320px" codeBase="psdwc115.cab" classid="CLSID:B5B51503-B5B5-1000-8000-080009AC61A9">' +'<PARAM NAME="_Version" VALUE="65536"></PARAM>' +'<PARAM NAME="_ExtentX" VALUE="16589"></PARAM>' +'<PARAM NAME="_ExtentY" VALUE="8467"></PARAM>' +'<PARAM NAME="_StockProps" VALUE="2"></PARAM>' +'<PARAM NAME="Caption" VALUE=""></PARAM>' +'<PARAM NAME="SourceFileName" VALUE="test.psr"></ PARAM>' +'<PARAM NAME="DataWindowObject" VALUE="test.psr"></ PARAM>' +'<PARAM NAME="LogId" VALUE=""></PARAM>' +'<PARAM NAME="LogPass" VALUE=""></PARAM>' +'<PARAM NAME="dbParm" VALUE=""></PARAM>' +'<PARAM NAME="SuppressEvents" VALUE="0"></PARAM>' デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 229 第8章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 +'<PARAM NAME="VScrollBar" VALUE="0"></PARAM>' +'<PARAM NAME="HScrollBar" VALUE="0"></PARAM>' +'<PARAM NAME="HSplitScroll" VALUE="0"></PARAM>' +'<PARAM NAME="LiveScroll" VALUE="0"></PARAM>' +'</OBJECT>'; プ ロパテ ィ と Param 要素 機能 Web ActiveX と ト ラ ンザ ク シ ョ ン オブジ ェ ク ト コ ン ト ロ ールには、 接 続情報を指定す る い く つかのプ ロ パテ ィ が あ り ま す。 Web ActiveX に は、デー タ ウ ィ ン ド ウ オブジ ェ ク ト ま たは PSR を指定す る プ ロ パテ ィ も あ り ま す。 こ れ ら のプ ロ パテ ィ の値は、 Object 要素の内側に Param 要素を置いて指定 し ます。 挿入 さ れた Param 要素は、コ ン ト ロ ール プ ロ パテ ィ シー ト 内のページ の順序でグループ化 さ れます。 最初のグループの Param 要素には、 標 準的な ActiveX プ ロ パテ ィ が含ま れ ます。 標準的な ActiveX のプ ロ パ テ ィ に値を割 り 当て る には、 ActiveX OBJECTn プ ロ パテ ィ ダ イ ア ロ グ ボ ッ ク ス を使用 し ま す。 n は、 そのオブジ ェ ク ト のページ内での配置 順序を示 し ます。 Web ActiveX は、 カ ス タ ム プ ロ パテ ィ に対 し て も Param 要素を挿入 し ま す。 こ れ ら の カ ス タ ム プ ロ パテ ィ の値は、 Sybase DataWindow Web Control プ ロ パテ ィ ダ イ ア ロ グボ ッ ク ス で設定 し ます。こ のダ イ ア ロ グ ボ ッ ク ス を開 く には、 Web ActiveX コ ン ト ロ ールの ActiveX OBJECTn プ ロ パテ ィ ダ イ ア ロ グ ボ ッ ク ス の [ActiveX] ページで [ コ ン ト ロ ール のプ ロ パテ ィ ] ボ タ ン を ク リ ッ ク し ます。 Sybase DataWindow Web Control プ ロ パテ ィ ダ イ ア ロ グ ボ ッ ク ス には、 [全般]、 [ス ク ロ ール]、 [ ト ラ ンザ ク シ ョ ン]、 [ユーザ] の 4 つの タ ブ ページがあ り 、 こ れ ら の タ ブ ページ を使用 し て カ ス タ ム プ ロ パテ ィ を 設定で き ま す。 ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト コ ン ト ロ ールの場合 は、 [ ト ラ ンザ ク シ ョ ン] ページ と [ユーザ] ページの 2 つのカ ス タ ム プ ロ パテ ィ ページ し かあ り ません。 標準的な ActiveX プ ロパテ ィ <PARAM <PARAM <PARAM <PARAM <PARAM [全般] ページの プ ロパテ ィ <PARAM VALUE="javadwtest.pbl" NAME=SourceFileName> </ PARAM> <PARAM VALUE="d_emp" NAME=DataWindowObject></PARAM> <PARAM VALUE=0 NAME=SuppressEvents></PARAM> VALUE=65536 NAME="_Version"></PARAM> VALUE=9280 NAME="_ExtentX"></PARAM> VALUE=5155 NAME="_ExtentY"></PARAM> VALUE=2 NAME="_StockProps"></PARAM> VALUE="" NAME=Caption></PARAM> デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 230 第8章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 [ス ク ロール] ページ のプ ロパテ ィ <PARAM <PARAM <PARAM <PARAM [ ト ラ ンザク シ ョ ン] ページのプ ロパテ ィ <PARAM VALUE="Driver='com.sybase.jdbc3.jdbc.SybDriver', URL='jdbc:sybase:Tds:localhost:2638'" NAME=dbParm> </ PARAM> [ユーザ] ページの プ ロパテ ィ <PARAM VALUE=dba NAME=LogId></PARAM> <PARAM VALUE=sql NAME=LogPass></PARAM> VALUE=0 VALUE=0 VALUE=0 VALUE=0 NAME=VScrollBar></PARAM> NAME=HScrollBar></PARAM> NAME=HSplitScroll></PARAM> NAME=LiveScroll></PARAM> Web ActiveX 対応のデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト デー タ ウ ィ ン ド ウ Web コ ン ト ロ ール ActiveX では、 以下のいずれかが 必要です。 • PBL ま たは PBD に格納 さ れてい る デー タ ウ ィ ン ド ウ オブジ ェ ク ト • デー タ と と も に保存 さ れてい る PSR Web ActiveX のプ ロ パテ ィ に よ っ て、 コ ン ト ロ ールに表示す る デー タ ウ ィ ン ド ウ オブジ ェ ク ト が識別 さ れ ます。 こ の節では、 以下の操作に関す る 注意事項について説明 し ます。 • デー タ ウ ィ ン ド ウ オブジ ェ ク ト の定義 • ラ イ ブ ラ リ の構築 • Web ページ プ ロ パテ ィ の設定に よ る デー タ ウ ィ ン ド ウ オブジ ェ ク ト ま たは PSR の識別 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト に取 り 込む こ と がで き る内容 デー タ ウ ィ ン ド ウ オブジ ェ ク ト は、PowerBuilder で定義で き ます。Web ActiveX は、デー タ ウ ィ ン ド ウ の リ ッ チテ キ ス ト 以外のすべての提示様 式を サポー ト し てい ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 231 第8章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 ド ロ ッ プダ ウ ン デー タ ウ ィ ン ド ウ な ど、 すべての編集様式を使用で き ます。 プ ロ パテ ィ には、 PowerScript で記述 し た条件式を取 り 込む こ と がで き 、 計算フ ィ ール ド では標準デー タ ウ ィ ン ド ウ に提供 さ れ る 関数 を使用で き ます。 Web ページでは、 Jscript ま たはそのほかの ECMAScript 互換 ス ク リ プ ト 言語で記述 し た ス ク リ プ ト を組み込んで、 デー タ ウ ィ ン ド ウ の提示 様式やデー タ を操作で き ます。 PowerBuilder ラ イ ブ ラ リ 内でのデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の管理 ラ イ ブ ラ リ の種類 Web ActiveX は、 PBL ま たは PBD に格納 さ れてい る デー タ ウ ィ ン ド ウ オブジ ェ ク ト を使用 し ます。 PBD を使用する場合 Web ブ ラ ウ ザは、 Web ActiveX に指定 さ れてい る ラ イ ブ ラ リ を ダ ウ ン ロ ー ド し て、 一時キ ャ ッ シ ュ に格納 し ます。 ユーザはキ ャ ッ シ ュ か ら ラ イ ブ ラ リ を コ ピ ーで き る ので、 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の ソ ー ス コ ー ド を ユーザに非公開にす る 場合は、 配布前に PBL を PBD に変換す る 必要があ り ます。 ラ イ ブ ラ リ はダ ウ ン ロ ー ド さ れ る ので、 で き る だけ小 さ く し てお く こ と をお勧め し ます。 ラ イ ブ ラ リ を小 さ く す る ために も 、 PBL を PBD に 変換す る 必要があ り ます。 PowerBuilder のバージ ョ ン PBL はバージ ョ ン 10 以降に移行 し なければな り ません。 デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト のラ イ ブ ラ リ へのグループ化 PBL ま たは PBD は、 Web サーバか ら すべてダ ウ ン ロ ー ド さ れ ます。 そ のため、 Web ページで必要 と な る オブジ ェ ク ト だけ を ラ イ ブ ラ リ に取 り 込む よ う に し て く だ さ い。 異な る Web ページ で使用 さ れ る デー タ ウ ィ ン ド ウ オブジ ェ ク ト を 1 つの ラ イ ブ ラ リ に取 り 込む こ と がで き ま す。 ただ し 、 ユーザに と っ て不要なページで使用 さ れ る オブジ ェ ク ト がダ ウ ン ロ ー ド さ れない よ う にす る 必要があ り ます。 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を ど の よ う に ラ イ ブ ラ リ に グループ 化す る か を決め る 際に、 ユーザが通常表示す る ページで使用 さ れ る オ ブジ ェ ク ト を ラ イ ブ ラ リ に取 り 込む よ う に し て く だ さ い。 ダ ウ ン ロ ー ド を一度に行えば、 通信のオーバーヘ ッ ド を大幅に減 ら す こ と がで き ますが、 その よ う な処理は、 ダ ウ ン ロ ー ド す る オブジ ェ ク ト を使用す る ページ を ユーザが表示す る 場合に し か意味があ り ません。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 232 第8章 デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト 内でのほか の リ ソ ースの使い方 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 デー タ ウ ィ ン ド ウ オブジ ェ ク ト では、 ビ ッ ト マ ッ プやカー ソ ルな ど の 外部 ソ ース を使用で き ます。PBD の構築時に リ ソ ース フ ァ イ ルを使用 すれば、 こ れ ら の リ ソ ー ス を ラ イ ブ ラ リ に取 り 込む こ と がで き ま す。 ま た、 こ の よ う な リ ソ ース は、 Web サーバ上に格納 し てお く こ と も で き ま す。 Web サーバ上の フ ァ イ ルの位置は、 デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の相対パ ス で示 し ます。 必要であれば、 ブ ラ ウ ザは こ れ ら の リ ソ ース を検索 し ます。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト では、 ド ロ ッ プダ ウ ン デー タ ウ ィ ン ド ウ な ど、 ほかのデー タ ウ ィ ン ド ウ オブジ ェ ク ト を使用で き ます。 ただ し 、 こ れ ら のオブジ ェ ク ト は、 ダ ウ ン ロ ー ド し た ラ イ ブ ラ リ 内に入れ てお く 必要があ り ます。 コ ン ト ロールに対するデー タ ウ ィ ン ド ウ オブ ジ ェ ク ト の指定 コ ン ト ロ ール内に表示す る デー タ ウ ィ ン ド ウ オブ ジ ェ ク ト を 識別す る には、 以下の 2 つのプ ロ パテ ィ の値を指定 し ます。 • SourceFileName • DataWindowObject こ れ ら の値は、 Sybase DataWindow Web Control 10.0 のプ ロ パテ ィ ダ イ ア ロ グボ ッ ク ス の [全般] ページで指定 し ます。 SourceFileName に ついて SourceFileName の値には、 コ ン ト ロ ールに対す る デー タ ウ ィ ン ド ウ オ ブ ジ ェ ク ト を 含む ラ イ ブ ラ リ 名 を 指定 し ま す。 こ のプ ロ パ テ ィ には URL ま たは フ ァ イ ル パ ス を指定で き ます。以下に代表的な例をい く つ か示 し ます。 • 絶対ア ド レ ス に よ る URL: http://www.domain.com/dwlibraries/financedws.pbd • 相対ア ド レ ス に よ る URL: financedws.pbd dwlibraries/financedws.pbd • 絶対ア ド レ ス に よ る フ ァ イ ル パ ス (ページの開発時に有効) : d:\web project\dwlibraries\financedws.pbd Web ActiveX プ ロ パテ ィ シー ト で、 参照 ( [...] ) ボ タ ン を使用 し て ラ イ ブ ラ リ を検索す る 場合は、URL ではな く フ ァ イ ル シ ス テ ム を ブ ラ ウ ズ し ます。 フ ィ ール ド に フル パ ス が挿入 さ れてい る と 、 Web ページの 配布時に、 正 し いパ ス にな る よ う にパ ス を編集す る 必要があ り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 233 第8章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 実行時における SourceFileName の変更 ス ク リ プト 内で SourceFileName の 値 を 変 更で き ま す。 そ の 場 合、 新 し い ラ イ ブ ラ リ で 有 効な 値 を DataWindowObject に指定し なければなり ま せん。 ま た、 独立し たト ラ ン ザク ショ ン オブジェ ク ト を 使用し ている 場合は、SetTransObject を 再度呼 び出す必要があり ま す。 DataWindowObject に ついて DataWindowObject の値は、 SourceFileName で指定 さ れた ラ イ ブ ラ リ に 格納 さ れてい る デー タ ウ ィ ン ド ウ オブジ ェ ク ト の名前を示 し ます。 開発環境でラ イ ブラ リ にアク セス でき る 場合( ラ イ ブラ リ が PowerBuilder ワ ーク ス ペース の一部で、 相対パス によ る URL を 指定し ている 場合な ど ) 、 ラ イ ブラ リ に格納さ れている データ ウ ィ ン ド ウ オブジェ ク ト のド ロ ッ プダウ ン リ ス ト がプロ パティ シート に表示さ れま す。 Powersoft レ ポー ト の表示 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のかわ り に PSR フ ァ イ ル を表示す る には、 その PSR フ ァ イ ルの URL を DataWindowObject の値 と し て指定 し 、 SourceFileName には何 も 指定 し ません。 デー タ ウ ィ ン ド ウ ト ラ ンザ ク シ ョ ン オブ ジ ェ ク ト コ ン ト ロールの使い方 機能 デー タ ウ ィ ン ド ウ ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト コ ン ト ロ ールを使 用す る と 、 Web ActiveX か ら 独立 し てデー タ ベー ス 接続を確立で き ま す。 デー タ ウ ィ ン ド ウ ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト コ ン ト ロ ール は、PowerBuilder の ト ラ ンザ ク シ ョ ン オブジ ェ ク ト に類似 し てい ます。 内部 ト ラ ンザク シ ョ ン 管理または独立 し た ト ラ ンザク シ ョ ン オブ ジェク ト Web ActiveX で も ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト コ ン ト ロ ールで も 、 デー タ ベー ス 接続を確立で き ます。 ど ち ら を使用す る かは、 ニーズに よ っ て異な り ます。 ト ラ ン ザ ク シ ョ ン オブ ジ ェ ク ト コ ン ト ロ ール を使用す る 主な理由に は、 以下の 2 つがあ り ます。 • 複数の Web ActiveX コ ン ト ロ ールで 1 つのデー タ ベース接続を使 用で き る ので、 複数接続に よ る オーバーヘ ッ ド が軽減 さ れ る デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 234 第8章 • デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 SQL CONNECT 文や DISCONNECT 文に相当す る Connect メ ソ ッ ド や Disconnect メ ソ ッ ド を使用 し て、 ト ラ ンザ ク シ ョ ン処理を制御で き る 。 AutoCommit プ ロ パテ ィ を false に設定す る と 、 Commit メ ソ ッ ド や Rollback メ ソ ッ ド を使用 し て、更新内容を コ ミ ッ ト ま たは ロ ー ルバ ッ ク す る タ イ ミ ン グ を制御で き る コ ン ト ロ ールが 1 つ し かな く 、 単にデー タ 検索 をす る だけの場合は、 以上の機能はいずれ も 必要あ り ません。 個別に コ ン ト ロ ールの イ ン ス タ ン ス を作成す る かわ り に、 Web ActiveX 自体の接続プ ロ パテ ィ を設 定 し て、 デー タ ベース にア ク セ スす る たびに接続や接続解除を行 う こ と がで き ます。 ス テー タ ス と エ ラ ー 情報 ト ラ ンザク シ ョ ン オ ブジ ェ ク ト コ ン ト ロールの非表示 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト コ ン ト ロ ールは、デー タ ベース か ら ス テー タ ス情報を受け取 り ます。 PowerBuilder の ト ラ ンザ ク シ ョ ン オブ ジ ェ ク ト プ ロ パテ ィ に相当す る 以下の メ ソ ッ ド を使用す る と 、 デー タ ベース操作の成否を テ ス ト し 、 ス テー タ ス情報を取得で き ます。 • GetSQLCode • GetDBCode • GetSQLErrText • GetSQLNRows • GetSQLReturnData ト ラ ン ザ ク シ ョ ン オブ ジ ェ ク ト コ ン ト ロ ールには ビ ジ ュ アル要素は あ り ませんが、Web ページの BODY セ ク シ ョ ンに ト ラ ンザ ク シ ョ ン オ ブジ ェ ク ト コ ン ト ロ ールがあ る 場合は、 スペース を占有 し ます。 こ の よ う な場合、 HEIGHT 属性 と WIDTH 属性を ご く 小 さ い値に設定す る か、 ス タ イ ル シー ト の設定を使用 し て、 こ の コ ン ト ロ ールを非表示に し ます。 デー タ ベー ス接続の確立に関す る プ ロ パテ ィ の設定については、 次の 「デー タ ベース と の接続」 を参照 し て く だ さ い。 デー タ ベース と の接続 接続プ ロ セス Web ActiveX お よ び ト ラ ン ザ ク シ ョ ン オブジ ェ ク ト コ ン ト ロ ールは、 JDBC を使用 し てデー タ ベー ス に接続 し ま す。 こ れ ら の コ ン ト ロ ール の Java ク ラ ス が、デー タ ベース ベン ダの JDBC イ ン タ フ ェ ース の Java ク ラ ス と 対話 し ます。 ベン ダの ク ラ ス はデー タ ウ ィ ン ド ウ と 対話 し ま す。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 235 第8章 デー タ ベース ベ ン ダ から 提供 さ れる JDBC ド ラ イバ デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 使用す る 予定の JDBC デー タ ベース ド ラ イ バの ク ラ ス は、 ユーザのブ ラ ウ ザで使用で き なければな り ません。 ユーザが JDBC ド ラ イ バ ク ラ ス を イ ン ス ト ール し ていない場合は、Web ActiveX の場合 と 同様に、 そ れ ら が ダ ウ ン ロ ー ド さ れて イ ン ス ト ール さ れ る よ う に Web ページ を 設定で き ます。 JDBC ド ラ イ バ ク ラ ス を自動的に イ ン ス ト ール さ せ る には、 次の方法 を使用で き ます。 1 デー タ ベース ベン ダの Java ク ラ ス を CAB フ ァ イ ルに変換 し ます。 変換には、Microsoft 社が提供す る CABARC ユーテ ィ リ テ ィ を使用 で き ます。 ク ラ ス は、 ZIP アーカ イ ブ内にあ っ て も 、 デ ィ レ ク ト リ ツ リ ー内にあ っ て も か ま い ません。 2 CAB フ ァ イ ルの CODEBASE 属性を指定 し た Object 要素を Web ページに追加 し ます。 ブ ラ ウ ザが CAB フ ァ イ ルをダ ウ ン ロ ー ド し 、 その内部 ク ラ ス パスに ク ラ ス を追加し ます。 ただ し 、 CLASSPATH 環境変数は変更さ れません。 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の定義に JDBC ド ラ イ バを使用す る に は、 シ ス テ ム ク ラ ス パ ス に JDBC ド ラ イ バ ク ラ ス を取 り 込むな ど、 さ ら にあ る 種の イ ン ス ト ール作業が必要にな り ます。 詳細については、 PowerBuilder の 『デー タ ベー ス と の接続』 マ ニ ュ ア ル ま たはオ ン ラ イ ン ヘルプ を参照 し て く だ さ い。 接続プ ロパテ ィ ト ラ ンザ ク シ ョ ン オブジ ェ ク ト ま たは Web ActiveX の接続情報は、 オ ブジ ェ ク ト 要素の内側に Param 要素を置いて設定 し ます。 独立 し た ト ラ ンザ ク シ ョ ン オブジ ェ ク ト と Web ActiveX の内部接続プ ロ パテ ィ の ど ち ら を使用 し てい る かに関係な く 、 接続プ ロ パテ ィ は同 じ です。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 236 第8章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 表 8-1: ト ラ ンザ ク シ ョ ン オブ ジ ェ ク ト コ ン ト ロールおよび Web ActiveX コ ン ト ロールの接続プ ロパテ ィ Param 名 LogID LogPass dbParm Lock AutoCommit dbParm について 意味 デー タ ベー ス への ロ グ イ ンに必要な ID デー タ ベー ス への ロ グ イ ン に必要 な パ ス ワー ド ド ラ イ バの Java ク ラ ス お よ びデー タ ベー ス の URL を指定す る 文字列 接続の分離レベル デー タ ベー ス の更新 後、 直 ち に コ ミ ッ ト を実行する か ど う か 標準値 dba (ASA デー タ ベース のデフ ォ ル ト の ID) sql (ASA デー タ ベース のデフ ォ ル ト のパ ス ワー ド ) JConnect ド ラ イ バの場合 : Driver='com.sybase.jdbc3.jdbc.SybDr iver',URL='jdbc:sybase:Tds:199.1.1.1 :9999/mydatabase' ベン ダ固有の値 False (デフ ォ ル ト ) JDBC ド ラ イ バの場合、 dbParm プ ロ パテ ィ で接続に関す る 必須情報を 指定 し ます。 こ のプ ロ パテ ィ 値は、 最低 2 つ以上の値か ら 構成 さ れ る 文字列です。 こ れ ら の値は、 使用す る ド ラ イ バ と デー タ ベース の URL を、 ド ラ イ バが判別可能な書式で表 し ます。 書式は次の と お り です。 Driver='JDBCclassname',URL='database_url' ド ラ イ バ の ク ラ ス 名お よ びデー タ ベー ス URL の 書式 に つ い て は、 DBMS ベン ダが提供す る マニ ュ アルを参照 し て く だ さ い。 Param 要素での こ れ ら のプ ロ パテ ィ の設定例については、230 ページの 「プ ロ パテ ィ と Param 要素」 を参照 し て く だ さ い。 開発環境での JConnect データ ウ ィ ン ド ウ オブジェ ク ト を 定義する 際に JConnect を 使用する に は、 ク ラ ス パス に JConnect の Java ク ラ ス を 取り 込みま す。 デー タ ベース と の接続 と デー タ の検索 デー タ ベー ス に接続 し てデー タ を検索す る には、 ス ク リ プ ト を記述 し なければな り ません。 こ の ス ク リ プ ト は、 [検索] ボ タ ン の一部 と し て 記述で き る ほか、ウ ィ ン ド ウ の onLoad ス ク リ プ ト に コ ー ド を記述 し て 自動的に検索す る こ と も で き ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 237 第8章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 た と えば、trans_1 と い う 名前のデー タ ウ ィ ン ド ウ ト ラ ンザ ク シ ョ ン オ ブジ ェ ク ト コ ン ト ロ ールを使用 し て、デー タ ベース に接続 し 、dw_1 と い う 名前の Web ActiveX のデー タ を検索す る には、 次の よ う な ス ク リ プ ト を記述 し ます。 trans_1.Connect( ); dw_1.SetTransObject( trans_1 ); dw_1.Retrieve( ); 内部 ト ラ ンザ ク シ ョ ン プ ロ パテ ィ を使用す る と 、 Web ActiveX は自動 的にデー タ ベー ス と 接続 し ます。 こ の場合の ス ク リ プ ト は簡単で、 次 の よ う にな り ます。 dw_1.Retrieve( ); Web ActiveX 用ス ク リ プ ト の記述 デー タ ウ ィ ン ド ウ のデー タ や提示様式 を 制御す る ス ク リ プ ト を Web ページに記述で き ます。 メ ソ ッ ド と イ ベン ト は標準のデー タ ウ ィ ン ド ウ で使用す る も の と 類似 し てい ま すが、 イ ベン ト 名は JavaScript 命名 規約に準拠す る よ う に変更 さ れてい ます。 プ ロ パテ ィ 、 メ ソ ッ ド 、 イ ベン ト 、 お よ びデー タ ウ ィ ン ド ウ オブジ ェ ク ト のプ ロ パテ ィ と 式の機能については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照 し て く だ さ い。 コ ン ト ロ ールのプ ロ パテ ィ 、 メ ソ ッ ド 、 お よ び イ ベン ト の リ ス ト は、 シ ス テ ム ツ リ ーの [ コ ン ポーネ ン ト ] ページ ま たはほかの ActiveX コ ン ト ロ ール確認用ツールで表示で き ます。 ス ク リ プ ト エデ ィ タ で、 Web ActiveX のすべての イ ベン ト の ス ク リ プ ト を記述で き ます。 v 特定のイ ベン ト のス ク リ プ ト を記述するには 1 ページ編集ビ ュ ーで、 Web ページに挿入 し た Web ActiveX を選択 し ます。 ま たは、 ス ク リ プ ト エデ ィ タ で、 左端の ド ロ ッ プダ ウ ン リ ス ト か ら 目的のデー タ ウ ィ ン ド ウ Web ActiveX 名を選択 し ます。 2 ス ク リ プ ト エデ ィ タ で、 2 番目に表示 さ れた ド ロ ッ プダ ウ ン リ ス ト の イ ベン ト を選択 し ます。 ド ロ ッ プダ ウ ン リ ス ト に、 イ ベン ト 名 と ス ク リ プ ト で使用可能なパ ラ メ ー タ が表示 さ れ ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 238 第8章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 3 3 番目に表示 さ れた ド ロ ッ プダ ウ ン リ ス ト で、 ス ク リ プ ト 言語 と し て 「JScript」 を選択 し ます。 4 イ ベン ト の ス ク リ プ ト を記述 し ま す。 何 も 入力せずに、 メ ソ ッ ド を呼び出 し た り 、 プ ロ パテ ィ にア ク セ ス し た り す る には、 シ ス テ ム ツ リ ーの [ページ] タ ブか ら エデ ィ タ に目的の メ ソ ッ ド やプ ロ パテ ィ を ド ラ ッ グ し ます。 メ ソ ッ ド の引数お よび戻 り 値のデー タ 型 基本的なデー タ 型 JScript では、 以下の 3 つの基本的なデー タ 型をサポー ト し ます。 • String 型 • Number 型 • Boolean 型 メ ソ ッ ド の引数 と 戻 り 値、 お よ び イ ベン ト パ ラ メ ー タ は、 以上のデー タ 型のいずれか、 ま たはオブジ ェ ク ト 型です。 GetItemDecimal な ど、 特殊なデー タ 型を扱 う デー タ ウ ィ ン ド ウ メ ソ ッ ド は、 Web ActiveX には使用で き ません。 GetItemNumber な ど、 よ り 一 般的なデー タ 型を扱 う メ ソ ッ ド を使用 し て く だ さ い。 Date デー タ 型 PowerBuilder には日付およ び時間を 表すいく つかのデータ 型があ り ま す が、 JScript ではこ れら はすべて Date オブジェ ク ト にマッ プさ れま す。 カ タ ログ デー タ 型 PowerBuilder の カ タ ロ グ デー タ 型には名前付 き の値が含 ま れ ま すが、 JScript ではそれぞれの値は数値です。 各カ タ ロ グ デー タ 型 (お よ びそ の意味) の リ ス ト については、 『デー タ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マ ニ ュ アルを参照 し て く だ さ い。 イ ベ ン ト の リ タ ーン コ ー ド の設定 デー タ ウ ィ ン ド ウ イ ベン ト で説明 し た イ ベン ト の リ タ ーン コ ー ド は、 Web ActiveX に も 当ては ま り ま す。 ただ し 、 JScript では イ ベン ト の戻 り 値はサポー ト し てい ません。 こ のため、 リ タ ーン コ ー ド を指定す る には、 イ ベン ト ス ク リ プ ト の最後の行 と し て、 SetActionCode メ ソ ッ ド を呼び出 し ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 239 第8章 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 た と えば、 onItemError イ ベン ト の リ タ ーン コ ー ド を使用す る こ と で、 ユーザが入力 し たデー タ が入力条件則に違反 し た と き に ど の よ う な措 置を取 る か を決定で き ま す。 リ タ ーン コ ー ド と し て 3 を指定す る と 、 Web ActiveX でデー タ は拒否 さ れ ま すが、 フ ォ ーカ ス を変更す る こ と がで き ます。 onItemError イ ベン ト に対す る ス ク リ プ ト の最後に、 次の よ う な文を指定 し ます。 This.SetActionCode(3); Web ActiveX の配布 配布用 CAB フ ァ イル PowerBuilder のセッ ト アッ プ プロ グラ ム を 実行する と 、 PSDWC115.CAB フ ァ イ ルが Sybase\Shared\PowerBuilder ディ レ ク ト リ にイ ン ス ト ールさ れま す。 こ の CAB フ ァ イ ルには、 Web ブラ ウ ザ (Internet Explorer) が Web ActiveX およ びト ラ ン ザク ショ ン オブジェ ク ト コ ン ト ロ ールを イ ン ス ト ールする 際に必要と する フ ァ イ ルや情報が格納さ れていま す。 CAB フ ァ イ ルには、 以下のも のなど が格納さ れま す。 • Open Software Distribution Information フ ァ イ ル • コ ン ト ロ ールの DLL ブ ラ ウ ザは、 CAB フ ァ イ ル内の情報を使用 し て、 ActiveX コ ン ト ロ ー ルの イ ン ス ト ールを管理 し ます。 ブ ラ ウ ザは、 コ ン ト ロ ールを シ ス テ ム レ ジ ス ト リ に イ ン ス ト ール し 、 その Java ク ラ ス パ ス を設定 し ます。 し たが っ て、開発者は CAB フ ァ イ ルの検索方法を ブ ラ ウ ザに指定す る だけです。 v Web ActiveX および ト ラ ンザク シ ョ ン オブ ジ ェ ク ト コ ン ト ロールをユーザ が使用で き る よ う にするには 1 Web サーバ上に CAB フ ァ イ ルを配置 し ます。 Web サーバが Internet Infomation Services (IIS) 6.0 を 使用す る 場合 は、 .pbl、 .pbd、 お よ び .psr 拡張子を MIME タ イ プ と し て認識す る よ う に IIS を設定す る 必要があ り ます。 225 ページの 「MIME タ イ プ を IIS 6.0 に追加」 を参照 し て く だ さ い。 2 Object 要素の CODEBASE 属性に、 Web ページ上の CAB フ ァ イ ル を指定 し ます。 Web ページで JDBC 接続を使用す る 場合は、 Web ActiveX の実装に以 下の要件が必要 と な り ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 240 第8章 新 し いバージ ョ ンの 配布 デー タ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX の使い方 • ク ラ イ ア ン ト に Sun JRE 1.2 以降が イ ン ス ト ール さ れてい る 必要が あ り ます。 JRE の最新のバージ ョ ンは、 Sun Java Web サ イ ト 、 http:/ http://www.java.com/ja/download/manual.jsp (ja は日本語版を表 し ま す) か ら ダ ウ ン ロ ー ド で き ます。 • jvm.dll フ ァ イ ルのパ ス (JRE 1.4 の場合は ...\JRE\bin\client、 JRE 1.2 ま たは 1.3 の場合は ...\JRE\bin\classic) が各ユーザのシ ス テ ム の PATH 環境変数に設定 さ れてい る 必要があ り ます。 • ク ラ イ ア ン ト のシ ス テ ム の PATH 環境変数のディ レ ク ト リ に次 の フ ァ イ ルが格納 さ れてい る 必要があ り ます。 pbjvm115.dll お よ び pbshr115.dll • Web ActiveX で必要な ク ラ ス フ ァ イ ルを含む pbjdbc12115.jar フ ァ イ ルが ク ラ イ ア ン ト に実装 さ れてい る 必要があ り ま す。 JAR フ ァ イ ルを実装す る には、 Web ページの Object 要素の CODEBASE 属 性で参照を設定 し ます。 • デー タ ベース ベン ダの ク ラ イ ア ン ト レ イ ヤで必要な Java ク ラ ス が ク ラ イ ア ン ト で使用可能であ る 必要があ り ます。 Java ク ラ ス は、 Web ページ の Object 要素の CODEBASE 属性で参照 さ れ る CAB フ ァ イ ルに追加で き ま す。 た と え ば、 デー タ ベー ス への接続に Sybase jConnect を使用 し てい る 場合は、jconn2.jar フ ァ イ ルが CAB フ ァ イ ルに含ま れてい る 必要があ り ます。 ク ラ イ ア ン ト レ イ ヤが JAR フ ァ イ ルで提供 さ れてい る 場合は、 CODEBASE 属性で直接参 照を設定す る こ と がで き ます。 CODEBASE 属性の値を構成す る バージ ョ ン番号に よ っ て、ブ ラ ウ ザが 新 し いバージ ョ ン の ActiveX コ ン ト ロ ールを ダ ウ ン ロ ー ド し て イ ン ス ト ールす る か ど う かが決ま り ます。 ブ ラ ウ ザは、 CODEBASE 属性値に 指定 さ れて い る バージ ョ ン 番号 と シ ス テ ム レ ジ ス ト リ に イ ン ス ト ー ル さ れ て い る コ ン ト ロ ールのバー ジ ョ ン を 比較 し ま す。 2 つのバー ジ ョ ン番号が一致 し ない場合、ブ ラ ウ ザは CAB フ ァ イ ルを再度ダ ウ ン ロ ー ド し て、 イ ン ス ト ールを行い ます。 v 新 し いバージ ョ ンの PowerBuilder を取 り 込む際に、 新 し い CAB フ ァ イル を配布するには 1 PowerBuilder DLL のバージ ョ ン番号をチ ェ ッ ク し て、 新 し いバー ジ ョ ン番号を探 し ま す (227 ページの 「Web ページに コ ン ト ロ ー ルを挿入す る HTML」 を参照)。 2 CAB フ ァ イ ルを参照す る Web ページ を編集 し ます。 CODEBASE 属性のバージ ョ ン番号を新 し い も のに変更 し ます。 3 Web サーバの CAB フ ァ イ ルを新 し いバージ ョ ンに置 き 換え ます。 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド 241 索引 数字 Error イ ベン ト 49 1 ページに複数のデー タ ウ ィ ン ド ウ オブジ ェ ク ト 172 G C CAB フ ァ イ ル、 Web コ ン ト ロ ール ActiveX 240 Case 関数、 Web デー タ ウ ィ ン ド ウ 156 CODEBASE HTML 属性、 Web ActiveX 228 COMMIT 文 と SetTransObject 関数 27 CONNECT 文 と SetTransObject 関数 27 Create メ ソ ッ ド 80 CrosstabDialog 関数 61 GenerateHTMLForm メ ソ ッ ド 73 Generate メ ソ ッ ド 、 例 206 GetChild メ ソ ッ ド 58 GetItemDateTime メ ソ ッ ド 39 GetItemDate メ ソ ッ ド 39 GetItemDecimal メ ソ ッ ド 39 GetItemNumber メ ソ ッ ド 39 GetItemString メ ソ ッ ド 39 GetItemTime メ ソ ッ ド 39 GetMessageText メ ソ ッ ド 62 GetText メ ソ ッ ド 37 D DataModified ス テー タ ス 51 DataWindowObject プ ロ パテ ィ 、 Web コ ン ト ロ ー ル ActiveX 22, 233 DBError イ ベン ト 46 Describe メ ソ ッ ド 43, 78, 81, 82 DISCONNECT 文 と SetTransObject 関数 27 H HTML コ ン ト ロ ールに追加する 159 コ ン ト ロ ールに含め る 158 デー タ ウ ィ ン ド ウ デー タ の保存 フ ォームの生成 73 HTML プ レ ビ ュ ー 163 64 E EAServer HTML ジ ェ ネ レー タ コ ン ポーネ ン ト 129 Web デー タ ウ ィ ン ド ウ の状態の保持 215 カ ス タ ム コ ン ポーネ ン ト の イ ン ス タ ン ス化 213 カ ス タ ム コ ン ポーネ ン ト の イ ン ス ト ール 209 デー タ ベース接続キ ャ ッ シ ュ 164, 166 ロ ッ ク さ れた PBL 207 EditChanged イ ベン ト 37 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド I InfoMaker レ ポー ト ペ イ ン タ 5 ItemChanged イ ベン ト 37, 38 ItemError イ ベン ト 37, 39 J JavaScript キ ャ ッ シ ュ 、 Web デー タ ウ ィ ン ド ウ 152 243 索引 L LibraryExport 関数 R RetrieveEx メ ソ ッ ド 、 例 201 Retrieve メ ソ ッ ド Web デー タ ウ ィ ン ド ウ の例 201 エ ラ ーの処理 45 使い方 29 ROLLBACK 文 と SetTransObject 関数 82 M MessageText イ ベン ト 62 Modify メ ソ ッ ド 基本的な使い方 43, 78 ク エ リ モー ド の使い方 83 グ ラ フ の使い方 109 ク ロ ス タ ブ 63 Modify メ ソ ッ ド の作成機能 79 Modify メ ソ ッ ド の破棄機能 79 S N Netscape ブ ラ ウ ザ、 絶対位置 NewModified ス テー タ ス 51 New ス テー タ ス 51 NotModified ス テー タ ス 51 162 O OneTrip メ ソ ッ ド 、 Web デー タ ウ ィ ン ド ウ 214 P PagingMethod プ ロ パテ ィ 151 Param 要素、 Web コ ン ト ロ ール ActiveX 230 PBD フ ァ イ ル 「 ラ イ ブ ラ リ 」 を 参照 13 PBL フ ァ イ ル 「 ラ イ ブ ラ リ 」 を 参照 13 PowerBuilder ラ イ ブ ラ リ 「 ラ イ ブ ラ リ 」 を 参照 13 Powersoft レ ポー ト Web コ ン ト ロ ール AcriveX での表示 23 概要 5, 16 デー タ ウ ィ ン ド ウ コ ン ト ロ ールでの表示 22 デー タ ベース と の接続が不要 25 Print メ ソ ッ ド 56 PSR フ ァ イ ル 「Powersoft レ ポー ト 」 を 参照 244 27 SelfLink 式の中の引用符 202 SelfLink 引数、 Web デー タ ウ ィ ン ド ウ 201 SetAction メ ソ ッ ド 、 例 205 SetBrowser メ ソ ッ ド 、 例 200 SetDWObject 関数、 例 197 SetHTMLObjectName メ ソ ッ ド 、 例 199 SetItem メ ソ ッ ド 39 SetText メ ソ ッ ド 37 SetTransObject メ ソ ッ ド 27 SetTrans メ ソ ッ ド Web デー タ ウ ィ ン ド ウ の例 200 概要 25 SetWeight 関数、 例 198 ShareData メ ソ ッ ド 58 SourceFileName プ ロ パテ ィ (Web コ ン ト ロ ール ActiveX) 22, 233 SyntaxFromSQL メ ソ ッ ド 81 U Update メ ソ ッ ド エ ラ ーの処理 45 使い方 31 URL (Web コ ン ト ロ ール ActiveX) 233 W Web デー タ ウ ィ ン ド ウ 式 156 Web デー タ ウ ィ ン ド ウ での表示書式 141 Web アプ リ ケーシ ョ ン と デー タ ウ ィ ン ド ウ テ ク ノ ロ ジ 9, 125, 223 PowerBuilder 索引 Web コ ン ト ロ ール ActiveX CAB のバージ ョ ン番号 228 CODEBASE HTML 属性 228 DataWindowObject プ ロ パテ ィ 22, 233 SourceFileName プ ロ パテ ィ 22, 233 Web ブ ラ ウ ザ 224 イ ベン ト の リ タ ーン コ ー ド 239 概要 10, 223 実行中のデー タ ウ ィ ン ド ウ オブジ ェ ク ト の設 定 234 ス ク リ プ ト の記述 238 デー タ ウ ィ ン ド ウ オブジ ェ ク ト 231 デー タ の検索 237 デー タ ベース と の接続 235 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト 234 配布 240 ラ イ ブ ラ リ 232 ラ イ ブ ラ リ バージ ョ ン 232 Web デー タ ウ ィ ン ド ウ EAServer 接続キ ャ ッ シ ュ 164 HTML ジ ェ ネ レー タ コ ン ポーネ ン ト 129 HTML の生成 206 HTML バージ ョ ン 162 JavaScript キ ャ ッ シ ュ 152 JavaScript ジ ェ ネ レー タ ウ ィ ザー ド 152 OneTrip メ ソ ッ ド 214 PSR フ ァ イ ル 198 SelfLink プ ロ パテ ィ 160 SRD フ ァ イ ル 198 イ ン ス ト ール場所 193 オブジ ェ ク ト 名 199 外国語テ キ ス ト 157 概要 10, 125 カ ス タ ム コ ン ポーネ ン ト の イ ン ス タ ン ス化 213 カ ス タ ム コ ン ポーネ ン ト の イ ン ス ト ール 209 カ ス タ ム サーバ コ ン ポーネ ン ト 209 ク ラ イ ア ン ト サ イ ド ス ク リ プ ト 195 ク ラ イ ア ン ト サ イ ド ス ク リ プ ト の記述 170 ク ラ イ ア ン ト 制御のための イ ベン ト 170 ク ラ イ ア ン ト 制御の メ ソ ッ ド 171 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド サーバ コ ン ポーネ ン ト と ク ラ イ ア ン ト コ ン ト ロ ール 129 サーバ コ ン ポーネ ン ト のプ ロ グ ラ ミ ン グ 195 サーバ コ ン ポーネ ン ト プ ロ パテ ィ 211 サービ ス ク ラ ス 217 仕組み 126 実行中のデー タ ウ ィ ン ド ウ オブジ ェ ク ト の設 定 197 集計関数 156 状態の保持 215 ス ク リ プ ト 内での自己の リ ン ク 情報 201 生成コ ー ド のサ イ ズ 198 デー タ ウ ィ ン ド ウ オブジ ェ ク ト 139 デー タ 操作 159 デー タ の検索 201 デー タ ベース と の接続 200 ナビ ゲーシ ョ ン 159 ピ ク チ ャ ボ タ ン 160 複数、 1 ページ 172 ブ ラ ウ ザ 162 ブ ラ ウ ザ固有の HTML 200 プ ロ セ ス 128 ページの リ ロ ー ド 201 ページ パ ラ メ ー タ 201, 205 ユーザ ア ク シ ョ ン 205 ロ ッ ク さ れた PBL 207 種類 126 Web デー タ ウ ィ ン ド ウ コ ン テナ ウ ィ ザー ド 167 Web デー タ ウ ィ ン ド ウ の外部関数 156 Web デー タ ウ ィ ン ド ウ のサーバ サ イ ド での検証 217 Web デー タ ウ ィ ン ド ウ のサービ ス ク ラ ス 217 Web デー タ ウ ィ ン ド ウ の入力条件則 141 Web デー タ ウ ィ ン ド ウ の ピ ク チ ャ コ ン ト ロ ール 161 Web デー タ ウ ィ ン ド ウ の ピ ク チ ャ ボ タ ン 160 Web デー タ ウ ィ ン ド ウ用の SRD フ ァ イ ル 198 Web ブ ラ ウ ザ Web コ ン ト ロ ール ActiveX 224 Web デー タ ウ ィ ン ド ウ 162, 200 245 索引 X う XHTML エ ク ス ポー ト テ ンプ レー ト エ ク ス ポー ト 191 作成 と 保存 176 詳細開始要素 181 編集 184 保存 178 XML Web デー タ ウ ィ ン ド ウ 仕組み 133 使い方 131, 137 利点 135 XMLClientSide ページ ン グ 152 XML テ ンプ レー ト の分割線 181 XML テ ンプ レー ト のヘ ッ ダ セ ク シ ョ ン ウ ィ ザー ド Web デー タ ウ ィ ン ド ウ コ ン テナ 167 Web デー タ ウ ィ ン ド ウ の JavaScript ジ ェ ネ レー タ 152 ウ ィ ン ド ウ ペ イ ン タ 、 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの配置 17 え 182 あ ア ク シ ョ ン コ ー ド 47 ア ク セ ン ト 記号、 Web デー タ ウ ィ ン ド ウ 157 アプ リ ケーシ ョ ン アーキ テ ク チ ャ 8 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の使い方 15 い イ ベン ト DBError 46 Error 49 ItemChanged 38 ItemError 39 Web コ ン ト ロ ール ActiveX 238, 239 Web デー タ ウ ィ ン ド ウ ク ラ イ ア ン ト コ ン ト ロ ール 170 ア ク シ ョ ン コ ー ド 47 印刷 複数のデー タ ウ ィ ン ド ウ オブジ ェ ク ト を 1 ページ に 58 レ ポー ト 56 イ ン ス タ ン ス のプール機能、 EAServer 207 246 エ ク ス ポー ト / イ ン ポー ト テ ンプ レー ト ビ ュ ー ア イ コ ン 175 エデ ィ ッ ト コ ン ト ロ ール デー タ ウ ィ ン ド ウ コ ン ト ロ ール 35, 37, 38 デー タ ス ト ア オブジ ェ ク ト 98 エ ラ ー、 デー タ ベース の検索お よ び更新 45 か 外国語文字セ ッ ト 157 外部 ソ ース か ら イ ン ポー ト さ れたデー タ 33, 97 カ ス タ ム デー タ ス ト ア オブジ ェ ク ト 95 き 行 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの行の ス テー タ ス 51 ユーザ指定の検索の提供 83 く ク エ リ モー ド 消去 87 条件指定の必須化 88 ソ ー ト 87 ユーザへの提供 83 ク エ リ モー ド での ソ ー ト 87 ク ラ イ ア ン ト コ ン ト ロ ール、 Web デー タ ウ ィ ン ド ウ 130 PowerBuilder 索引 ク ラ イ ア ン ト / サーバ アプ リ ケーシ ョ ン 8 ク ラ イ ア ン ト サ イ ド ページ ン グ 152 グラフ 概要 107 実行中の修正 108 情報の取得 111 デー タ ウ ィ ン ド ウ コ ン ト ロ ールでのデー タ プ ロ パテ ィ の修正 116 デー タ の保存 114 デー タ 表示の修正 115 デー タ プ ロ パテ ィ 111 内部表現 109 プ ロ パテ ィ 109 グ ラ フ での Clicked イ ベン ト 119 グ ラ フ でのデー タ の保存 114 グ ラ フ でのポ イ ン ト ア ン ド ク リ ッ ク 119 グ ラ フ のサブオブジ ェ ク ト grAxis 110 グ ラ フ のサブオブジ ェ ク ト grDispAttr 109 ク ロ ス タブ アプ リ ケーシ ョ ンでの使い方 60 実行時のユーザの再定義 61 実行中の修正 63 元にな る デー タ の表示 60 サーバ コ ン ポーネ ン ト 、 Web デー タ ウ ィ ン ド ウ 129 削除バ ッ フ ァ デー タ ウ ィ ン ド ウ 34 デー タ ス ト ア 98 け せ 言語、 文字セ ッ ト 157 検証、 サーバ サ イ ド 217 し 式、 デー タ ウ ィ ン ド ウ のプ ロ パテ ィ 値の式の代入 79 実行 グ ラ フへのア ク セ ス 108 デー タ ウ ィ ン ド ウ オブジ ェ ク ト と コ ン ト ロ ー ルの関連付け 21, 22 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の修正 78 実行時に修正する SELECT 文 86 集計関数、 Web デー タ ウ ィ ン ド ウ 156 主バ ッ フ ァ 34, 98 す ス ク リ プ ト 、 グ ラ フ の修正 108 接続キ ャ ッ シ ュ 、 EAServer で定義する 164, 166 絶対位置、 Netscape ブ ラ ウ ザ 162 選択条件 「 ク エ リ モー ド 」 を 参照 83 こ コ ールバ ッ ク ページ ン グ 151 コ ン ト ロ ール、 Web デー タ ウ ィ ン ド ウ でのサ ポー ト 140 さ サーバ コ ン ポーネ ン ト サーバ サ イ ド ス ク リ プ ト か ら のア ク セ ス 195 プ ロ パテ ィ 211 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド て 提示様式 Web コ ン ト ロ ール AcriveX でのサポー ト 231 Web デー タ ウ ィ ン ド ウ でのサポー ト 139 リスト 6 デー タ Web コ ン ト ロ ール ActiveX 237 Web デー タ ウ ィ ン ド ウ 139, 200 共有 99 グ ラ フ での保存 114 検索 と 更新 29 247 索引 更新 31 デー タ ウ ィ ン ド ウ エデ ィ ッ ト コ ン ト ロ ール内のテ キ ス ト 35 デー タ ウ ィ ン ド ウ オブジ ェ ク ト 1 ページに印刷 58 HTML の生成 64 HTML プ レ ビ ュ ー 163 Web デー タ ウ ィ ン ド ウ の設計 139 Web デー タ ウ ィ ン ド ウ、 サーバへの設定 209 Web デー タ ウ ィ ン ド ウ、 ス ク リ プ ト での設定 197 Web デー タ ウ ィ ン ド ウ用の PSR フ ァ イ ル 198 Web デー タ ウ ィ ン ド ウ用の SRD フ ァ イ ル 198 概要 3, 4 基本的な使い方 15 グ ラ フ 107 コ ン ト ロ ール と の関連付け 19, 21, 22 定義 5 提示様式 6 デー タ ソ ース 7 デー タ の表示 24 動的な使用 77 動的に作成 80 名前 18 プ ロ パテ ィ 43 編集 20 前準備 16 レ ポー ト の作成 55 デー タ ウ ィ ン ド ウ オブジ ェ ク ト に追加す る グ ラ フ ィ ッ ク 79 デー タ ウ ィ ン ド ウ オブジ ェ ク ト のテ キ ス ト コ ン ト ロ ール 79 デー タ ウ ィ ン ド ウ コ ン ト ロ ール DataObject プ ロ パテ ィ 21 DBError イ ベン ト 46 ItemChanged イ ベン ト 38 ItemError イ ベン ト 39 PSR フ ァ イ ルの表示 22, 23, 25 ア ク シ ョ ン コ ー ド 47 ウ ィ ン ド ウ に配置 17 エ ラ ーの処理 45 外部 ソ ース か ら のデー タ の イ ン ポー ト 33 概要 3, 9, 11, 17 248 カ ラ ムの ス テー タ ス 51 行の ス テー タ ス 51 グ ラ フ 111 グ ラ フ メ ソ ッ ド の使い方 116 ク ロ ス タ ブの使い方 60 現行テ キ ス ト へのア ク セ ス 37 更新時の行 / カ ラ ムの ス テー タ ス の使用法 51 コ ー ド 内での命名 18 実行時のオブジ ェ ク ト と の関連付け 21, 22 指定 さ れた項目へのア ク セ ス 39 デー タ の管理 34 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト の設定 80 名前 18 入力の処理 36 バ ッ フ ァ 34, 51 メ ソ ッ ド 42 レ ポー ト の作成 55 デー タ ウ ィ ン ド ウ コ ン ト ロ ール と デー タ ウ ィ ン ド ウ オブジ ェ ク ト の名前 18 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの DataObject プ ロ パテ ィ 21 デー タ ウ ィ ン ド ウ コ ン ト ロ ールのカ ラ ムの ス テー タ ス 51 デー タ ウ ィ ン ド ウ コ ン ト ロ ールの項目 35 デー タ ウ ィ ン ド ウ テ ク ノ ロ ジ 3, 7 デー タ ウ ィ ン ド ウ の行ま たはカ ラ ムの ス テー タ ス 51 デー タ ウ ィ ン ド ウ の実行時のエ ラ ー 49 デー タ ウ ィ ン ド ウ ペ イ ン タ 概要 16 使い方 16 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の編集 20 デー タ ス ト ア オブジ ェ ク ト 外部 ソ ース か ら のデー タ の イ ン ポー ト 97 カ ス タ ム 95 共有デー タ 99 デー タ へのア ク セ ス 97 バ ッ フ ァ 98 分散アプ リ ケーシ ョ ンでの使用 4 メ ソ ッ ド 98 デー タ ス ト ア オブジ ェ ク ト か ら 継承 し たユーザ オ ブジ ェ ク ト 95 デー タ ソ ース PowerBuilder 索引 外部 ソ ース 33, 97 型 7 デー タ ソ ース と し ての フ ァ イ ル 7 デー タ ベース 更新 31 自動接続 25 ス ナ ッ プシ ョ ッ ト 接続 25 接続の自動解除 25 通信 24 デー タ ソ ース 7 デー タ の検索、 表示、 操作 4, 29 ト ラ ンザ ク シ ョ ンの管理 27 デー タ ベース エ ラ ー 45 デー タ ベース と の接続 Web コ ン ト ロ ール ActiveX 235 Web デー タ ウ ィ ン ド ウ 200 概要 24 デー タ ベース と の通信 24 と 動的デー タ ウ ィ ン ド ウ オブジ ェ ク ト 概要 77 ク エ リ モー ド の提供 83 構成要素の追加 79 作成 80 作成す る 構文の指定 81, 82 修正 78 動的デー タ ウ ィ ン ド ウ オブジ ェ ク ト でのヘルプ の提供 88 ト ラ ンザ ク シ ョ ン オブジ ェ ク ト Web コ ン ト ロ ール ActiveX 234 デー タ ウ ィ ン ド ウ コ ン ト ロ ール と の関連付け 80 バッ フ ァ デー タ ウ ィ ン ド ウ デー タ ス ト ア 98 34, 51 ひ ビ ッ ト マ ッ プの動的な追加 と 削除 79 ふ フ ィ ル タ バ ッ フ ァ 34, 98 フ ォ ン ト 、 レ ポー ト 内部での使い方 56 プ ロ グ ラ ム、 デー タ ウ ィ ン ド ウ オブジ ェ ク ト の使 い方 15 プ ロ パテ ィ 現行値の取得 78, 81, 82 デー タ ウ ィ ン ド ウ オブジ ェ ク ト 43 分散アプ リ ケーシ ョ ン 8 へ ペ イ ン タ 16 編集様式 Web デー タ ウ ィ ン ド ウ 140 ク エ リ モー ド での上書 き 87 ほ ボ タ ン コ ン ト ロ ール、 Web デー タ ウ ィ ン ド ウ 159 め ね ネ ス テ ィ ッ ド レ ポー ト アプ リ ケーシ ョ ンでの使い方 実行時におけ る 作成 59 実行時におけ る 破棄 60 は 58 デー タ ウ ィ ン ド ウ プ ログ ラ マーズ ガ イ ド メソッド JavaScript キ ャ ッ シ ュ 152 Web デー タ ウ ィ ン ド ウ ク ラ イ ア ン ト コ ン ト ロ ール 171 Web デー タ ウ ィ ン ド ウ サーバ コ ン ポーネ ン ト 249 索引 195 グ ラ フ 111 デー タ ウ ィ ン ド ウ デー タ ス ト ア 98 42 も 文字セ ッ ト 、 外国語 157 ゆ ユーザ イ ベン ト 、 デー タ ウ ィ ン ド ウ コ ン ト ロ ール内 のグ ラ フ 116 ら ラ イブラ リ EAServer に よ る ロ ッ ク 207 Web コ ン ト ロ ール ActiveX 232 デー タ ウ ィ ン ド ウ オブジ ェ ク ト 13, 16 ラ ン タ イ ム ラ イ ブ ラ リ 「 ラ イ ブ ラ リ 」 を 参照 16 れ レ ポー ト 「Powersoft レ ポー ト 」 も 参照 5 印刷 56 デー タ ウ ィ ン ド ウ オブジ ェ ク ト での作成 ネ ス テ ィ ッ ド 58 250 55 PowerBuilder
© Copyright 2024 Paperzz