データウィンドウ プログラマーズ ガイド · powersoft portfolio ... replication...

220
データウィンドウ ® プログラマーズ ガイド PowerBuilder® 9

Upload: hoangkiet

Post on 30-Aug-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

データウィンドウ ® プログラマーズ ガイ ド

PowerBuilder®

9

DOCUMENT ID: 37775-01-0900-01

LAST REVISED: March 2003

Copyright © 1989-2004 by Sybase, Inc. All rights reserved.

本書に記載されているソフ ト ウェアは、Sybase ラ イセンス契約に基づいて Sybase, Inc. が提供し、かかる契約の条項に従う場合にのみ使用が許諾されます。

本書に記載されている内容は、 Sybase, Inc. およびその関連会社の書面による許可なく、 いかなる形態、 または手段、 電子的、 機械的、 手作業、 光学的およびその他にかかわらず、 複製、 転載および翻訳を禁じます。

Sybase, Sybase (ロ ゴ) , AccelaTrade, ADA Workbench, Adaptable Windowing Environment, Adaptive Component Architecture,Adaptive Server, Adaptive Server Anywhere, Adaptive Server Enterprise, Adaptive Server Enterprise Monitor, Adaptive ServerEnterprise Replication, Adaptive Server Everywhere, Adaptive Server IQ, Adaptive Warehouse, Anywhere Studio, ApplicationManager, AppModeler, APT Workbench, APT-Build, APT-Edit, APT-Execute, APT-FORMS, APT-Translator, APT-Library, BackupServer, BizTracker, ClearConnect, Client-Library, Client Services, Convoy/DM, Copernicus, Data Pipeline, Data Workbench,DataArchitect, Database Analyzer, DataExpress, DataServer, DataWindow, DB-Library, dbQueue, Developers Workbench, DirectConnect Anywhere, Distribution Director, e-ADK, E-Anywhere, e-Biz Integrator, E-Whatever, EC Gateway, ECMAP, ECRTP,eFulfillment Accelerator, Embedded SQL, EMS, Enterprise Application Studio, Enterprise Client/Server, Enterprise Connect, EnterpriseData Studio, Enterprise Manager, Enterprise SQL Server Manager, Enterprise Work Architecture, Enterprise Work Designer, EnterpriseWork Modeler, eProcurement Accelerator, EWA, Financial Fusion, Financial Fusion Server, Gateway Manager, GlobalFIX,ImpactNow, Industry Warehouse Studio, InfoMaker, Information Anywhere, Information Everywhere, InformationConnect,InternetBuilder, iScript, Jaguar CTS, jConnect for JDBC, MainframeConnect, Maintenance Express, MDI Access Server, MDIDatabase Gateway, media.splash, MetaWorks, MySupport, Net-Gateway, Net-Library, New Era of Networks, ObjectConnect,ObjectCycle, OmniConnect, OmniSQL Access Module, OmniSQL Toolkit, Open Biz, Open Client, Open ClientConnect, Open Client/Server, Open Client/Server Interfaces, Open Gateway, Open Server, Open ServerConnect, Open Solutions, Optima++, PB-Gen, PC APTExecute, PC Net Library, Power++, power.stop, PowerAMC, PowerBuilder, PowerBuilder Foundation Class Library, PowerDesigner,PowerDimensions, PowerDynamo, PowerJ, PowerScript, PowerSite, PowerSocket, Powersoft, PowerStage, PowerStudio, PowerTips,Powersoft Portfolio, Powersoft Professional, PowerWare Desktop, PowerWare Enterprise, ProcessAnalyst, Rapport, Report Workbench,Report-Execute, Replication Agent, Replication Driver, Replication Server, Replication Server Manager, Replication Toolkit, ResourceManager, RW-DisplayLib, S-Designor, SDF, Secure SQL Server, Secure SQL Toolset, Security Guardian, SKILS, smart.partners,smart.parts, smart.script, SQL Advantage, SQL Anywhere, SQL Anywhere Studio, SQL Code Checker, SQL Debug, SQL Edit, SQLEdit/TPU, SQL Everywhere, SQL Modeler, SQL Remote, SQL Server, SQL Server Manager, SQL SMART, SQL Toolset, SQL Server/CFT, SQL Server/DBM, SQL Server SNMP SubAgent, SQL Station, SQLJ, STEP, SupportNow, S.W.I.F.T. Message Format Libraries,Sybase Central, Sybase Client/Server Interfaces, Sybase Financial Server, Sybase Gateways, Sybase MPP, Sybase SQL Desktop, SybaseSQL Lifecycle, Sybase SQL Workgroup, Sybase User Workbench, SybaseWare, Syber Financial, SyberAssist, SyBooks, System 10,System 11, System XI ( ロゴ ), SystemTools, Tabular Data Stream, TradeForce, Transact-SQL, UltraLite.NET, UNIBOM, Unilib,Uninull, Unisep, Unistring, URK Runtime Kit for UniCode, Viewer, Visual Components, VisualSpeller, VisualWriter, VQL,WarehouseArchitect, Warehouse Control Center, Warehouse Studio, Warehouse WORKS, Watcom, Watcom SQL, Watcom SQLServer, Web Deployment Kit, Web.PB, Web.SQL, WebSights, WebViewer, WorkGroup SQL Server, XA-Library, XA-Server およびXP Server は Sybase, Inc. の登録商標です。

Unicode および Unicode のロゴは Unicode, Inc. の登録商標です。

本書で使用される会社名および製品名はそれぞれの会社の商標および登録商標です。

本書に記載されている内容は、 将来予告なしに変更するこ とがあ り ます。 また、 本ソフ ト ウェアおよび説明書を使用したこ とによる損害、 または第三者からのいかなる請求についても、 サイベース株式会社、 その親会社である米国法人 Sybase,Inc. またはその関連会社は、 一切の責任を負わないものと します。

目次

本書について ................................................................................................................................. vii

第 1 章 データウィ ン ドウ テク ノロジについて ............................................................ 1データウィン ドウ オブジェ ク ト、 コン ト ロール、 コンポーネン ト

について ............................................................................. 1提示様式とデータ ソース .......................................................... 3基本的なプロセス ...................................................................... 5

データウィン ドウ テク ノロジの選択............................................... 6クライアン ト / サーバ アプリケーシ ョ ンおよび

分散アプリケーシ ョ ンのソ リューシ ョン ........................... 7Web アプリケーシ ョ ンのソ リューシ ョ ン ................................ 7

PowerBuilder データウィ ンドウ コン ト ロール ............................. 10

第 2 章 データウィ ン ドウ オブジェク トの使い方 ..................................................... 13データウィン ドウ オブジェ ク トの使い方について ....................... 13データウィン ドウ オブジェ ク トのコン ト ロールへの取り込み ..... 15

データウィ ンドウ コン ト ロールとデータウィン ドウ オブジェ ク トの名前 ........................... 16

PowerBuilder でのデータウィ ン ドウ コン ト ロールの操作..... 17実行段階でのデータウ ィン ドウ オブジェク トの指定............. 19

データベースへのアクセス ............................................................ 22データウィ ンドウ コン ト ロールへの

ト ランザクシ ョ ン オブジェ ク トの設定 ........................... 22データの検索と更新 ................................................................ 27

外部ソースからのデータのインポート .......................................... 31データウィン ドウ コン ト ロールのデータの操作........................... 31

データウィ ンドウ コン ト ロールのデータ管理方法 ................ 31エディ ッ ト コン ト ロールのテキス トへのアクセス ................ 34エディ ッ ト コン ト ロールのテキス トの操作 ........................... 35ItemChanged イベン トのスクリプ トの記述 ........................... 35ItemError イベン トのスク リプ トの記述.................................. 36データウィ ンドウの項目へのアクセス ................................... 36ほかのデータウィン ドウ メ ソ ッ ドの使い方 ........................... 38

データウィンドウ プログラマーズ ガイ ド iii

目次

データウ ィン ドウ オブジェク トのプロパテ ィへのアクセス ......... 40データウ ィン ドウ エラーの処理 .................................................... 41

検索および更新エラーと DBError イベン ト ........................... 42プロパテ ィ式およびデータ式のエラーと Error イベン ト ....... 45

データベースの更新 ....................................................................... 47データウィン ドウ コン ト ロールによるデータベースの

更新方法 ........................................................................... 47プログラムによる行またはカラムのステータスの変更 .......... 50

レポートの作成 .............................................................................. 51データウィン ドウ オブジェク トの計画と構築 ....................... 52レポートの印刷 ....................................................................... 53

ネステ ィ ッ ド レポートの使い方 .................................................... 54クロスタブの使い方 ....................................................................... 56

元になるデータの表示 ............................................................ 57ユーザによるクロスタブの再定義 .......................................... 57実行段階でのクロスタブのプロパテ ィの修正 ........................ 59

HTML の生成.................................................................................. 60表示の制御 .............................................................................. 65SaveAs メ ソ ッ ドの呼び出し ................................................... 67データウィン ドウ オブジェク トの

HTML フォームと しての表示 .......................................... 68

第 3 章 データウィ ン ドウ オブジェク トの動的変更 ................................................ 73動的なデータウィ ン ドウの処理について ...................................... 73データウ ィン ドウ オブジェク トの修正 ......................................... 74データウ ィン ドウ オブジェク トの作成 ......................................... 76ユーザへのクエリ機能の提供 ........................................................ 79

クエリ モードの仕組み ........................................................... 79クエリ モードの使い方 ........................................................... 80

ヘルプ ボタンの使用 ...................................................................... 83データウ ィン ドウ オブジェク トの再利用 ..................................... 84

第 4 章 データス ト ア オブジェ ク トの使い方............................................................... 85データス トアについて ................................................................... 85データス トアの操作 ....................................................................... 89カスタム データス トア オブジェ ク トの使い方 ............................. 89データス トアにおけるデータのアクセスと操作............................ 91データの共有.................................................................................. 94

例 : データストアからのデータの印刷 .................................... 95例 : 2 つのデータス トア オブジェク トによるデータ処理....... 97

iv PowerBuilder

目次

第 5 章 グラフの操作.............................................................................................................. 101グラフの使い方 ............................................................................ 101グラフのプロパテ ィの修正 .......................................................... 102

グラフ要素の表示.................................................................. 103グラフ要素の参照.................................................................. 104

データのプロパテ ィへのアクセス ............................................... 105データの情報の取得 .............................................................. 105グラフのデータの保存 .......................................................... 108色、 模様、 そのほかのデータの修正 ..................................... 109グラフ メ ソ ッ ドの使い方 ...................................................... 110

ポイン ト アンド ク リ ッ クの使い方 ............................................. 113

第 6 章 Web データウィ ン ドウの使い方..................................................................... 117Web データウ ィン ドウとは ......................................................... 117

Web データウ ィン ドウの機能 .............................................. 118Web データウ ィン ドウのサーバ コンポーネン ト と

クライアン ト コン ト ロール ........................................... 119データウィ ンドウ オブジェク トの設計 ....................................... 122

データウィ ン ドウ ペインタでの HTML プロパテ ィの設定 .. 124生成されるコードのサイズの制御 ........................................ 125式の使い方 ............................................................................ 126外国語文字セッ トの使い方 ................................................... 127データのリンクの実現 .......................................................... 127Web データウ ィン ドウ内の

コン ト ロールに対応する HTML の挿入 ......................... 128ボタン コン ト ロールとピクチャ コン ト ロールの使い方 ...... 129特定のブラウザ用の HTML 生成の指定 ................................ 131Web データウ ィン ドウ メ ソ ッ ドへの

JavaScript キャ ッシュの使い方 .................................... 132データウィ ン ドウのプレビュー ............................................ 135

データベース接続の設定.............................................................. 136データウィ ンドウ オブジェク トの

コンポーネン ト サーバへの配布 .................................... 138Web データウ ィン ドウ コンテナ プロジェ ク ト ウィザード 139

Web ページ テンプレートの作成................................................. 142クライアン ト サイ ド スク リプ トの記述 ...................................... 144

第 7 章 Web データウィ ン ドウのサーバ サイ ド プロセス................................ 149サーバ構成の詳細 ........................................................................ 149サーバ コンポーネン トのインスタンス化と設定......................... 154

コンポーネン トのインスタンス化 ........................................ 156データウィ ン ドウ オブジェク トのロード ............................. 157HTML の生成内容の制御 ....................................................... 158

データウィン ドウ プログラマーズ ガイド v

目次

データベース接続の指定とデータ検索 ................................. 160リロード されたページにページ固有のデータを渡す ............ 162サーバ コンポーネン トにユーザ アクシ ョ ンを渡す ............. 165ページへの生成された HTML の挿入 .................................... 167

カスタム サーバ コンポーネン トの使い方 .................................. 167EAServer でのカスタム サーバ コンポーネン トの作成........ 169EAServer でのカスタム コンポーネン トの

プロパテ ィの設定 ........................................................... 171カスタム コンポーネン トのインスタンス化 ......................... 174サーバ上での状態の保持 ....................................................... 176

サービス クラスの使い方............................................................. 178PowerBuilder コンポーネン トに対する

サービス クラスの定義................................................... 179Java コンポーネン トに対するサービス クラスの定義 ......... 181

第 8 章 データウィ ン ドウ Web コン ト ロール ActiveX の使い方.................. 185Web ActiveX について ................................................................. 185Web ページにコン ト ロールを挿入する HTML ............................ 188

Object 要素 ............................................................................ 189プロパテ ィ と Param 要素 ..................................................... 190

Web ターゲッ ト での Web ActiveX の使用方法 ........................... 191Web ActiveX 対応のデータウィン ドウ オブジェク ト ................. 194

データウィン ドウ オブジェク トに取り込むことができる内容 ............................................ 194

PowerBuilder ライブラ リ内でのデータウ ィン ドウ オブジェク トの管理 ......................... 195

コン ト ロールに対するデータウ ィン ドウ オブジェク トの指定 ......................... 196

データウ ィン ドウ ト ランザクシ ョ ン オブジェク ト コン ト ロールの使い方 ......................................................................... 197

データベースとの接続 ................................................................. 198データベースとの接続とデータの検索 ................................. 200

Web ActiveX 用スク リプ トの記述 ............................................... 201メ ソ ッ ドの引数および戻り値のデータ型.............................. 201イベン トのリ ターン コードの設定 ....................................... 202

Web ActiveX の配布 ..................................................................... 202

索引 ............................................................................................................................................. 205

vi PowerBuilder

データウィンドウ プログラマーズ ガイ ド vii

本書について

目的 このマニュアルでは、 ク ラ イアン ト / サーバ アプリ ケーシ ョ ン、分散アプ リ ケーシ ョ ン、 Web アプ リ ケーシ ョ ンにおけるデータウ ィ ン ド ウ テク ノ ロジの使い方について説明します。 特に、 作成するアプ リ ケーシ ョ ンに合わせてデータウ ィ ン ド ウ オブジェ ク トを定義する方法、 定義したデータウ ィ ン ド ウ オブジェ ク ト と対話するためのコードを作成する方法について説明します。

対象とする読者 このマニュアルは、 データウ ィ ン ド ウ テク ノ ロジを使用するアプリ ケーシ ョ ンの開発者を対象にしています。 また以下を前提と しています。

• データウ ィ ン ド ウ ペインタに精通しているこ と。 データウ ィン ド ウ ペインタについては、 『PowerBuilder ユーザーズ ガイド』 マニュアルを参照して ください。

• 開発環境に対応したプログラ ミ ング言語について基本的な知識 を 持 っ て い る こ と。 対象 と な る 言語は、 PowerScript、JavaScript、 Java、および DynaScript です。 これらの言語に関する知識がない場合は、 PowerBuilder または PowerDynamo のマニュアルを参照するか、 目的の言語に関する参考資料を参照して ください。

そのほかの情報 製品に関するそのほかの詳細情報については、 Sybase のテクニカル ラ イブラ リ CD、 およびテクニカル ラ イブラ リ製品マニュアルWeb サイ ト (英語) を参照して ください。

• ソフ ト ウェア付属のテクニカル ラ イブラ リ CD には、 製品マニュアルが収められています。 製品マニュアルは、PDF 形式にて提供しています。

テクニカル ラ イブラ リ CD の使い方については、 テクニカルライブラ リ CD 内の Readme.txt ファ イルを参照して ください。

• テクニカル ラ イブラ リ製品マニュアルの Web サイ ト (英語)には、Product Manuals http://www.sybase.com/support/manuals/ からアクセスできます。

サポートについて 製品に同梱している 「サポート ハンドブッ ク」 を参照して ください。

viii PowerBuilder

第 1 章 データウィ ン ドウ テク ノロジについて

この章について この章では、データウ ィン ド ウ オブジェ ク トについて説明します。また、 各種のアプリ ケーシ ョ ン アーキテクチャやプログラ ミ ング環境でデータウ ィ ン ド ウを使用する方法についても説明します。

内容

データウィ ンドウ オブジェク ト、 コン ト ロール、 コンポーネン トについて

データウ ィ ン ド ウ テク ノ ロジは、 以下の 2 つの要素に実装されます。

• データウィ ンドウ オブジェク ト データ ウ ィ ン ド ウ オブジェ クトは、 データ ソース とデータの提示様式を定義します。

• データウィ ンドウ コン ト ロールまたはコンポーネン ト コン トロールやコンポーネン トは、 アプ リ ケーシ ョ ンに配置するデータウ ィ ン ド ウ オブジェ ク ト のコンテナです。 データウ ィン ド ウ オブジェ ク ト を操作するには、 コンテナのメ ソ ッ ド を呼び出すコードを記述します。

データウィ ンドウ コン トロールおよびコンポーネント

当初、データウ ィ ン ド ウは、ク ラ イアン ト / サーバ アプリ ケーシ ョンにおけるデータ検索、 データ操作、 およびデータ更新の強力な機能を PowerBuilder で実現する こ とを目的に設計されました。 現在、 データウ ィン ド ウは複数の環境で使用できます。

• PowerBuilder データウィ ンドウ ク ライアント / サーバ型および分散型 PowerBuilder アプリ ケーショ ンで使用される PowerBuilderコント ロールです。

項目 ページ

データ ウィ ンド ウ オブジェ ク ト 、 コ ント ロ ール、 コ ンポーネント について

1

データウィ ンド ウ テク ノ ロジの選択 6

PowerBuilder データウィ ンド ウ コント ロール 10

データウィンドウ プログラマーズ ガイ ド 1

データウィ ンドウ オブジェク ト、 コン ト ロール、 コンポーネン トについて

• Web データウィンドウ Web アプリ ケーシ ョ ンのためのシンク ラ イアン ト データウ ィ ン ド ウの実装。 PowerBuilder データウ ィ ン ド ウのデータ操作機能、 表示機能、 およびス ク リ プ ト機能の大部分を備えています。 コンポーネン ト サーバ側には Web データウ ィン ドウ コンポーネン ト が必要ですが、 ク ラ イアン ト側に PowerBuilderDLL は必要あ り ません。

• Web データウィンドウ DTC 開発に使用するマシン上で Web データ ウ ィ ン ド ウ を表現するためのデザイ ンタ イム コン ト ロール。DTC とは、コンポーネン ト サーバ上のデータウ ィン ド ウ コンポーネン トに対して命令セッ ト を生成する ActiveX コン ト ロールです。コンポーネン トは、 ク ラ イアン ト ブラウザに表示される Web データウ ィ ン ド ウを生成します。ク ラ イアン ト ブラウザは、ActiveX コン ト ロールをサポート していな くても、 Web データウ ィ ン ド ウを表示できます。

• Sybase データウィ ンドウ Web コン ト ロール ActiveX Web ページ上で使用する ActiveX コ ン ト ロール。 ク ラ イアン ト ブラ ウザは、ActiveX コン ト ロールをサポート していないと、このコン ト ロールで使用されるデータウ ィン ド ウ オブジェ ク ト を表示できません。

• データウィン ドウ プラグイン Powersoft レポー ト を表示するためのブラウザ プラグインです。

各環境の比較については、 6 ページの「 データウィ ンド ウ テク ノ ロジの選択」 を参照して ください。

データウ ィン ド ウ オブジェ ク トのコンテナと して、データス ト ア オブジェ ク ト を使用する こ と もできます。 データス ト アは、 データ検索やデータ操作などのデータウ ィ ン ド ウの機能を、 画面出力を行わずに実現します。 印刷時のレイアウ ト指定、 分散アプ リ ケーシ ョ ンのサーバコンポーネン トでのデータ管理などにデータス ト アを使用できます。

データウィン ドウ オブジェク ト とは

データウ ィン ド ウ オブジェ ク トは、 データの検索、 表示、 操作を行うためのオブジェ ク ト です。 データウ ィ ン ド ウで扱うデータは、 リ レーシ ョナル データベースや、そのほかのデータ ソース(Excel ワークシート 、 dBASE ファ イルなど) から読み込まれます。 データの更新については、 データウ ィ ン ド ウ オブジェ ク ト でサポートするかど うかを指定できます。

データウ ィン ド ウ オブジェ ク トには、 検索対象のデータに関する情報が格納されます。 ユーザが効率的にデータを操作できるよ うに、 表示書式や提示様式などのデータ プロパテ ィ を指定できます。

2 PowerBuilder

第 1 章 データウ ィン ドウ テク ノロジについて

データウ ィン ド ウ ペインタでは、 Powersoft レポート (PSR) フ ァ イルを作成する こ と もできます。 PSR ファ イルは、 データウ ィン ド ウのコン ト ロールまたはコンポーネン トで使用できます。 PSR ファ イルには、そのファ イルの作成時にレポート内に存在していたデータ と、 レポート自体の定義 (基本的には、 更新機能のないデータウ ィ ン ド ウ オブジェ ク ト ) が含まれます。 データ検索は行いません。

データウィンドウ オブジェク ト を定義する場所

データウ ィン ド ウ オブジェ ク トは、 PowerBuilder のデータウ ィン ド ウペインタで定義します。 更新機能のないデータウ ィ ンド ウ オブジェ クトは、 InfoMaker のレポー ト ペインタ内で定義するこ と もできます。

提示様式とデータ ソース

データ ウ ィ ン ド ウ オブジェ ク ト を定義するには、 提示様式とデータソースを選択します。

提示様式 提示様式は、 レポート の一般的な様式を定義する と と もに、 ページ上で行をどのよ うにグループ化するかを指定します。 それぞれの提示様式では、 データの表示方法をカス タマイズできます。 提示様式には、以下のよ うな種類があ り ます。

データウィンドウ プログラマーズ ガイ ド 3

データウィ ンドウ オブジェク ト、 コン ト ロール、 コンポーネン トについて

表 1-1: データウィン ドウの提示様式

提示様式の例については、『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

データ ソース データ ソースは、 データウ ィン ド ウで使用するデータをどこから取り出し、どのよ う なデータ項目を表示するのかを指定します。データは、データベース内のテーブルから取り出すほか、 ファ イルから インポート した り 、 コード と して指定する こ とができます。 データベースから取り出す場合は、 データの指定が SQL 文に保存されます。 どの場合でも、 データウ ィ ン ド ウ オブジェク ト には、 表示されるデータ項目の名前とそのデータ型が保存されています。

提示様式 説明

タブラ ページの横方向にデータ カラムが並べられ、各カラムの上にヘッダがある。 複数の行を一度に表示できる

フ リーフォーム ページの縦方向にデータ カラムが並べられ、各カラムの横にラベルがある。 一度に表示できるのは 1 行だけ

グ リ ッ ド スプレ ッ ドシー ト と似たグ リ ッ ド線を使用した表書式。 ユーザは境界線やカラムを移動できる

ラベル 1 つのラベルにつき 1 行分のデータを表示し、1 ページに複数のラベルが表示される。 郵便ラベルなどに使用

段組み 2 行以上のデータをページ上に隣り合わせで表示。 曜日単位、 四半期の各月のデータなど、 周期的なデータを表示する場合に便利

グループ 見出しの下に行がグループ化されているタブラ様式。それぞれのグループ別に、 合計を表示する要約フ ィールドを取り込むこ とができる

コンポジッ ト 複数のデータウ ィ ン ド ウ オブジェ ク ト を 1 つの提示様式にま とめて表示。 Web データ ウ ィ ン ド ウではサポート されていない

グラフ データをグラフ ィ カルに提示。 Web データウ ィ ンド ウではサポート されていない

ク ロスタブ データを要約して表書式で表示

リ ッチテキス ト テキス トにデータ カラムが埋め込まれたパラグラフ。Web データウ ィ ン ド ウ、 Sybase データウ ィ ンド ウ Webコン ト ロール ActiveX ではサポート されていない

OLE 検索されたデータ と関連付けられる OLE オブジェ クト がデータ ウ ィ ン ド ウ内に リ ン ク または埋め込まれる。 Web データウ ィ ンド ウではサポート されていない

4 PowerBuilder

第 1 章 データウ ィン ドウ テク ノロジについて

表 1-2: データウィ ンドウで使用することができるデータ ソース

基本的なプロセス

データウ ィン ド ウを使用するには、 大き く分けて次の 2 つのステップが必要です。

1 データウ ィン ド ウ ペインタを使用して、 データウ ィ ンド ウ オブジェ ク ト を作成または編集します。

ペインタでは、 データ ソースや提示様式のほかに、 表示書式、 入力条件則、 ソー ト条件、 フ ィルタ条件、 グラフなど、 オブジェ クトのあらゆるプロパテ ィを定義します。

2 開発環境で、 データウ ィン ド ウ コン ト ロールまたはコンポーネント を、 ウ ィン ド ウ、 フォーム、 または Web ページに配置し、 データウ ィ ン ド ウ オブジェ ク ト と関連付けます。

データ ソース 説明

Quick Select SQL データベース内の 1 つまたは複数のテーブルからデータが取り出される。複数のテーブルのデータを使用するには、テーブル間は外部キーによって結合されていなければならない。 カラム、 選択条件、 およびソート条件を選択するだけの場合に使用

SQL Select データ ソースのために生成する SELECT 文を制御する場合に使用。 グループ条件や計算カラムなどを指定できる

クエ リ データがあらかじめ選択され、クエ リ ペインタで定義されたクエ リ オブジェ ク ト に SQL 文が保存されている。クエ リ オブジェ ク トはデータウ ィ ン ド ウ オブジェ ク トを定義する と きにデータ ウ ィ ン ド ウに取り込まれるので、アプ リ ケーシ ョ ンの実行時はクエ リ オブジェク ト が存在していなくてもかまわない

ス ト ア ド プ ロシージャ

データベース ス ト ア ド プロシージャに定義されているデータが取り出される

外部 データベースにデータが格納されていない場合に使用。データはファ イル (タブで区切られたファ イル、 dBASEファ イルなど) から インポート された り、 コードから生成される

データウィンドウ プログラマーズ ガイ ド 5

データウィ ンドウ テク ノロジの選択

データ ウ ィ ン ド ウ ペイ ン タで作成したデータ ウ ィ ン ド ウ オブジェ ク ト とアプ リ ケーシ ョ ン との通信は、 データウ ィ ン ド ウ コント ロールを介して行われます。データウ ィ ンド ウ コン ト ロールと、そのデータウ ィン ド ウ コン ト ロールに含まれるデータウ ィン ド ウオブジェ ク ト を操作する コードを記述します。 通常は、 データの検索と更新、 データの表示形式の変更、 エラー処理、 およびデータウ ィン ド ウ コン ト ロール間でのデータ共有を行う コードなどを記述します。

データウィ ンドウ テク ノロジの選択データ ウ ィ ン ド ウ テク ノ ロジはさ まざまな環境で使用でき るため、データベース対応のアプ リ ケーシ ョ ンを実装する方法は状況に応じて異な り ます。 この節では、 3 つの基本的なアプ リ ケーシ ョ ン アーキテクチャで使用可能なデータウ ィン ド ウ テク ノ ロジと、 各データウ ィ ンド ウ ソ リ ューシ ョ ンの要件について説明します。

基本的なアーキテクチャは、 以下の 3 種類です。

• クライアン ト / サーバ アプリケーシ ョ ン ク ラ イアン ト側のワーク ステーシ ョ ンで動作するプログラムが、 サーバ上で動作するデータベースにアクセスします。ク ラ イアン ト側のコンピュータに、ユーザ インタフェース と ビジネス ロジッ クの両方が組み込まれています。

• 分散アプリケーシ ョ ン ク ラ イアン ト側のコンピュータのユーザ インタフェースが、 中間層にあるサーバ上のコンポーネン ト を呼び出します。 このコンポーネン ト によって、 ビジネス ロジッ クが実行され、 データベース サーバへアクセスします。

• Web アプリケーシ ョ ン ク ラ イアン ト側の Web ブラウザが、 HTMLドキュ メ ン ト または JSP ドキュ メ ン トの要求を Web サーバに送信します。 Web サーバは制御をページ サーバまたはアプ リ ケーシ ョン サーバに渡し、サーバ サイ ド ス ク リプ ト を使用して ト ランザクシ ョ ン サーバ上のコンポーネン トにアクセスし、 さ らにこれを通じてデータベース サーバ上のデータベースに接続できます。

6 PowerBuilder

第 1 章 データウ ィン ドウ テク ノロジについて

クライアン ト / サーバ アプリケーシ ョ ンおよび分散アプリケーシ ョ ンのソリューシ ョ ン

PowerBuilder データウ ィ ンド ウは、 当初、 ク ラ イアン ト / サーバ アプリ ケーシ ョ ンで使用するこ と を目的に開発されました。

PowerBuilder データウ ィン ド ウは、 データウ ィ ン ド ウ オブジェ ク ト を表示するコン ト ロールと して実装するか、 またはデータを表示せずにデータの検索や更新を行う こ とができるデータス ト ア と して実装できます。 PowerScript でプログラムされたイベン ト と メ ソ ッ ドの組み合わせによって、 データの検索、 表示、 検証、 更新など、 データウ ィ ン ドウのあらゆる要素を制御できます。

PowerBuilder データウ ィ ン ド ウは、 分散アプ リ ケーシ ョ ンで使用するコンポーネン ト と して配布するこ と もできます。

詳細については、 10 ページの「 PowerBuilder データウィ ンド ウ コントロール」 を参照して ください。

Web アプリケーシ ョ ンのソリューシ ョン

Web アプリ ケーシ ョ ンでは、以下のデータウ ィン ド ウ テク ノ ロジを使用できます。

• Web データウ ィ ン ド ウおよび Web データウ ィン ド ウ DTC

• Sybase データウ ィ ンド ウ Web コン ト ロール ActiveX

• データウ ィン ド ウ プラグイン

Web データウ ィ ンドウ

Web データウ ィ ン ド ウは、 Web アプ リ ケーシ ョ ンのためのシンク ライアン ト データウ ィ ン ド ウの実装です。この環境では、PowerBuilder データウ ィ ン ド ウのデータ操作機能、 表示機能、 およびスク リプ ト機能の大部分を実現できます。 ク ラ イアン ト側には PowerBuilder DLL は必要あ り ません。

機能 Web データウ ィ ン ド ウは、データウ ィ ンド ウ オブジェ ク トの動的変更など、 PowerBuilder データウ ィ ン ド ウのイベン トおよびメ ソ ッ ドのサブセッ ト をサポー ト します。 ユーザはデータの修正や更新を行う こ とができます。 グラフ、 OLE、 リ ッチテキス トの提示様式と コン ト ロールはサポート されていません。

データウィンドウ プログラマーズ ガイ ド 7

データウィ ンドウ テク ノロジの選択

クライアン トの要件 このテク ノ ロジはどのブラウザでも機能しますが、 生成された HTMLを表示する場合は Internet Explorer が 適です。 生成された HTML は、Netscape または Internet Explorer に合わせて動的に 適化できます。 また、 旧型のブラウザを使用する場合、 そのブラウザに合わせて元のスケールに戻すこ と もできます。

サーバの要件 コンポーネン ト サーバと動的ページ サーバは連携しながら、データ とク ラ イアン ト コン ト ロールを生成し、それを Web ページに取り込みます。 ユーザがデータの新規ページを要求した り、 データの更新、 あるいは行の挿入や削除を行う たびに、 サーバはその要求を取得して、 新規ページを生成します。 状態の管理の仕方によっては、 コンポーネントは呼び出されるたびにデータの検索を行う こ とがあ り 、 サーバ側の負荷が増えるこ とにな り ます。

開発ツール PowerBuilder の Web ターゲッ ト インタフェースは、実際にコードを記述しな く ても Web データウ ィ ン ド ウを開発できる Web データウ ィ ンド ウ DTC を提供します。 また、コンポーネン ト サーバの API を使用して、Web データウ ィ ン ド ウを作成するための独自のサーバ サイ ド スクリプ ト を記述する こ と もできます。ページ サーバの種類(PowerDynamo、Active Server Pages、 または JavaServer Pages) を指定してス ク リプ ト を記述する こ と もでき ます。 Web サイ ト ターゲッ ト については、 Webターゲッ ト オブジェ ク ト モデルを使用して、 ページ サーバの種類に依存しないサーバ スク リプ ト (PowerDynamo または Active Server Pagesへの配布が可能) を記述するこ と もできます。

4GL Web ページで Web データウ ィ ン ド ウ DTC を使用する場合は、サーバ サイ ド イベン トが使用でき、 ページ変数を使って Web アプリ ケーシ ョ ンの動的な機能性を高める こ とができ ます。 4GL Web ページでWeb データウ ィ ン ド ウを手書きするこ とはできません。

Web データウ ィ ン ド ウについては、 第 6 章「 Web データウィ ンド ウの使い方」を参照して ください。 Web データウ ィ ンド ウ DTC については、『Web ターゲッ ト と JSP ターゲッ ト での作業』マニュアルを参照して ください。

Sybase データウ ィ ンドウ Web コン ト ロール ActiveXSybase データ ウ ィ ン ド ウ Web コ ン ト ロール ActiveX は、 InternetExplorer での使用を目的と した対話型のデータウ ィ ン ド ウ コン ト ロールです。 PowerBuilder データウ ィ ン ド ウの リ ッチテキス ト以外のすべての機能が実装されています。

8 PowerBuilder

第 1 章 データウ ィン ドウ テク ノロジについて

機能 Web ActiveX は、 完全にプログラム実行可能で、 データウ ィ ン ド ウのイベン トやメ ソ ッ ド、 データウ ィン ド ウ オブジェ ク トの動的変更をサポー ト します。 ユーザはデータの修正や更新を行 う こ とができます。リ ッチテキス ト提示様式はサポー ト されていません。

クライアン トの要件 コ ン ト ロールは ActiveX テ ク ノ ロ ジを使用し、 Microsoft InternetExplorer でのみ動作します。

ユーザは、コンポーネン トの CAB ファ イル (2 MB 未満) をダウンロードする必要があ り ます。 JDBC を介したデータベース との接続はク ライアン ト側から行われ、 このため接続ソフ ト ウェアを ク ラ イアン ト側に設定する必要があ り ます。 接続ソフ ト ウェアは、 Web サーバからダウンロードできます。

SaveAs 機能など、 ク ラ イアン トのセキュ リ テ ィ を脅かすよ う なデータウ ィン ド ウの動作は無効にな り ます。

サーバの要件 JDBC を介したデータベース との接続によ り、 リ モー ト サーバ上のデータベースにアクセスできます。

開発ツール ActiveX コンポーネン ト を使用して Web アプ リ ケーシ ョ ンを開発する場合、 Web ターゲッ ト ツールを使用できます。

詳細については、第 8 章「 データウィ ンド ウ Web コント ロール ActiveXの使い方」 を参照して ください。

データウィ ン ドウ プラグイン

データウ ィン ド ウ プラグインは、 Powersoft レポート (PSR) を表示するためのブラウザ プラグインです。

機能 PSR は、 凍結されたデータウ ィ ン ド ウです。 このデータウ ィ ン ド ウは修正ができないので、 新のデータが反映されません。 ただし、 PSRはデータ ウ ィ ン ド ウの定義とデータをコンパク ト に表したものであり、 ダウンロードの効率を上げる こ とができます。 バッチ処理によって生成されたレポー ト を表示する場合に効率的な手段です。

ユーザはデータの修正や更新を行う こ とができません。

クライアン トの要件 ブラウザのプラグイン ディ レク ト リに、 プラグインの実行ファ イルをインス トールする必要があ り ます。 プラグインの実行ファ イルは、 自動的にダウンロード し インス トールする こ とはできません。 このプラグインは、Netscape、および Internet Explorer 5.5 SP 1 以下で動作します。

SaveAs 機能など、 ク ラ イアン トのセキュ リ テ ィ を脅かすよ う なデータウ ィン ド ウの動作も使用可能です。

開発ツール PowerBuilder または InfoMaker を使用して、 PSR を作成できます。

データウィンドウ プログラマーズ ガイ ド 9

PowerBuilder データウ ィン ドウ コン ト ロール

プラグイン アーキテクチャの詳細については、 『アプ リ ケーシ ョ ン テクニッ ク』 マニュアルを参照して ください。

PowerBuilder データウィ ンドウ コン ト ロール機能 PowerBuilder データウ ィン ド ウ コン ト ロールは、 PowerBuilder アプ リ

ケーシ ョ ンに配置するデータ ウ ィ ン ド ウ オブジェ ク ト のコンテナです。 データウ ィ ン ド ウ コン ト ロールをウ ィ ン ド ウで使用する こ とで、対話形式によるデータ表示を実現できます。 ユーザはデータを表示して変更し、 変更内容をデータベースに送信できます。

データウ ィン ド ウ コン ト ロールのほかに、データス ト ア オブジェ ク トを使用できます。 データス ト ア オブジェ ク トは、 サーバ アプ リ ケーシ ョ ンや、 画面表示が必要ない場合の非表示コンテナです。

データウ ィ ン ド ウでは、 検索引数を使用したデータ検索とデータ更新をサポート しています。 データ入力やデータ表示の一貫性を保つために、 編集様式、 表示書式、 および入力条件則を使用できます。 データウ ィン ド ウでは、 データウ ィ ン ド ウ オブジェ ク ト のプロパテ ィ を変更する Modify メ ソ ッ ドなど、データウ ィン ド ウを操作するためのメ ソ ッドが多数用意されています。 さ らに、 結果セッ ト を複数のデータウ ィン ド ウ コン ト ロール間で共有した り、 ク ラ イアン ト とサーバの間でデータを同期させるこ とができます。

開発環境 PowerBuilder では、 データウ ィ ン ド ウを実装するために必要な両方の要素を開発できます。 以下のペインタを使用します。

• データウ ィン ド ウ ペインタ。 データウ ィン ド ウ オブジェ ク ト を定義します。

• ウ ィン ド ウ ペインタまたはユーザ オブジェ ク ト ペインタ。 データウ ィ ン ド ウ コン ト ロールをウ ィ ン ド ウ またはビジュアル ユーザオブジェ ク ト に追加します。 データ ウ ィ ン ド ウ コン ト ロールは、ペインタのコン ト ロール パレッ ト上に並べられています。

上記のペインタで、 データウ ィ ン ド ウの動作を制御した り、 検索されるデータを操作するためのス ク リ プ ト を記述します。 また、データス ト ア オブジェ ク ト のインスタンスも生成できます。

10 PowerBuilder

第 1 章 データウ ィン ドウ テク ノロジについて

オブジェ ク ト ブラウザでは、 [システム] タブ ページで、 データウ ィン ド ウ コン ト ロールやデータス ト ア オブジェク ト のプロパテ ィ、イベン ト 、 およびメ ソ ッ ドを調べるこ とができます。 データウ ィン ド ウ オブジェ ク ト が含まれる ラ イブラ リ を開いている場合は、 ブラ ウザの[データウ ィン ド ウ] タブ ページで、 データウ ィ ン ド ウ オブジェ ク トの内部プロパテ ィを調べるこ とができます。

データウィンドウ オブジェク ト

データウ ィン ド ウ コン ト ロールやデータス ト ア オブジェ ク トは、データウ ィ ン ド ウ オブジェ ク ト を使用する こ とで、 どのよ うなデータを検索し、 検索したデータをどのよ うに表示するかを判断します。 コン トロールでは、 データを検索する必要がない Powersoft レポー ト (PSR)を表示するこ と もできます。

PowerBuilder アプ リ ケーシ ョ ンのデータウ ィ ン ド ウ オブジェ ク ト は、どの提示様式でも使用できます。

データベースとの接続 PowerBuilder データウ ィ ン ド ウでは、データベースに接続するために、ODBC、 JDBC、およびネイテ ィブなデータベース ド ラ イバを使用できます。 これによって、 ユーザはア クセス先のサーバ上にあるデータソース (インターネッ ト上のデータベースや中間層のサーバなど) に接続できます。

接続を確立するには、 データウ ィン ド ウの内部ト ランザクシ ョ ン オブジェ ク ト を使用できます。 また、独立した PowerBuilder ト ランザクシ ョン オブジェ ク トに接続する こ と もできます。

PowerBuilder アプ リ ケーシ ョ ンには、 デフォル ト の ト ランザクシ ョ ンオブジェ ク ト SQLCA が用意されていますが、 追加の接続が必要な場合は、 ほかの ト ランザクシ ョ ン オブジェ ク ト を定義できます。 接続に独立した ト ランザクシ ョ ン オブジェ ク ト を使用する と、SQL COMMIT文および ROLLBACK 文を実行するタ イ ミ ングを制御した り、 複数のコン ト ロールに対して同じ接続を使用する こ とができます。

データ ウ ィ ン ド ウ と ト ランザクシ ョ ン オブジェ ク ト を併用する方法の詳細については、第 2 章「 データウィ ンド ウ オブジェク ト の使い方」を参照して ください。

PowerBuilder ト ラ ンザ ク シ ョ ン オブジ ェ ク ト の詳細については、PowerBuilder マニュアル セッ ト の 『アプ リ ケーシ ョ ン テクニッ ク』 マニュアルを参照して ください。

スク リプ トの記述 データベース との接続、データの検索、ユーザ入力の処理、およびデータの更新を行う ためのス ク リプ トは、 ウ ィ ン ド ウ ペインタまたはユーザ オブジェ ク ト ペインタで記述します。

データウィンドウ プログラマーズ ガイ ド 11

PowerBuilder データウ ィン ドウ コン ト ロール

PowerBuilder では、 データウ ィン ド ウ コン ト ロールから継承するユーザ オブジェ ク ト を定義し、 それに独自のカスタム機能を追加するこ とによって、 オブジェ ク ト の継承を利用するこ とができます。 このよ うにしてカス タマイズしたデータ ウ ィ ン ド ウ コン ト ロールは、 アプ リケーシ ョ ン全体で再利用できます。

非ビジュアルなデータウ ィ ン ド ウ コン ト ロールであるデータス ト アオブジェ ク ト を作成するには、 まずそのオブジェ ク ト を作成するためのスク リプ ト を記述し、 そのオブジェ ク トに対する メ ソ ッ ド を呼び出します。 また、 データス ト アから継承されるユーザ オブジェ ク ト を定義し、それをカスタマイズするこ と もできます。 詳細については、第 4章「 データスト ア オブジェク ト の使い方」 を参照して ください。

ライブラ リ とアプリケーシ ョ ン

開発段階では、 データウ ィ ン ド ウ オブジェ ク トは、 PowerBuilder ラ イブラ リ (PBL) に格納しておき ます。 アプ リ ケーシ ョ ンの構築時に、データウ ィン ド ウ オブジェ ク ト を、 アプ リ ケーシ ョ ンの実行ファ イルまたは PowerBuilder 動的ラ イブラ リ (PBD) の中に取り込むこ とができます。

データ ウ ィ ン ド ウ オブジェ ク ト を設計し、 PowerBuilder アプ リ ケーシ ョ ンを構築する方法の詳細については、『PowerBuilder ユーザーズ ガイ ド』 マニュアルおよび 『アプ リ ケーシ ョ ン テクニッ ク』 マニュアルを参照して ください。

12 PowerBuilder

第 2 章 データウィ ン ドウ オブジェク トの使い方

この章について この章では、 アプリ ケーシ ョ ンでのデータウ ィ ン ド ウ オブジェ クト の使い方について説明します。

内容

はじめに この章では、データウ ィ ン ド ウ ペインタでのデータウ ィン ド ウ オブジェ ク ト の構築方法を把握している こ とが前提にな り ます。 これについては、『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

データウィ ンドウ オブジェク トの使い方についてデータウィ ンドウ オブジェク トの構築

アプリ ケーシ ョ ンでデータウ ィ ン ド ウ オブジェ ク ト を使用するには、 ま ず そ の オ ブ ジ ェ ク ト を 構築す る 必要 が あ り ま す。PowerBuilder には、データベース管理、データウ ィン ド ウ定義、およびライブラ リ管理用の個別のペインタがあ り ます。

項目 ページ

データウィ ンド ウ オブジェク ト の使い方について 13

データ ウ ィ ンド ウ オブジェク ト のコ ント ロ ールへの取り 込み

15

データベースへのアク セス 22

外部ソ ースからのデータのインポート 31

データウィ ンド ウ コント ロールのデータの操作 31

データウィ ンド ウ オブジェク ト のプロパティ へのアク セス 40

データウィ ンド ウ エラ ーの処理 41

データベースの更新 47

レポート の作成 51

ネスティ ッ ド レポート の使い方 54

ク ロ スタブの使い方 56

HTML の生成 60

データウィンドウ プログラマーズ ガイ ド 13

データウィ ンドウ オブジェク トの使い方について

データウ ィン ド ウ オブジェ ク トは、データウ ィン ド ウ ペインタで定義および編集を行います。 データ ソースや提示様式を指定した後、 表示書式や編集様式などを指定してオブジェ ク ト を拡張します。

データウ ィン ド ウ ペインタでは、 Powersoft レポート (PSR) フ ァ イルを作成する こ と もできます。 この PSR ファ イルはアプ リ ケーシ ョ ンで使用する こ とができます。 PSR フ ァ イルには、 そのファ イルの作成時にレポート内に存在していたデータ と、 レポー ト自体の定義 (基本的には、更新機能のないデータウ ィ ン ド ウ オブジェ ク ト ) が含まれます。

レポート オブジェク ト を使用できるのは InfoMaker のみ

以前のバージ ョ ンの PowerBuilder には、データウ ィ ン ド ウ ペインタのほかに、 レポー ト ペインタがあ り ました。 レポー ト オブジェ ク トは、データの書き出しはできますが、 データの更新はできません。 レポート オブジェ ク トは、基本的には、更新機能のないデータウ ィン ド ウ オブジェク ト です。 現在、 レポート ペインタは InfoMaker でのみ使用できます。

データウィン ドウ オブジェク トの管理

いくつかのペインタでは、 データウ ィ ン ド ウ オブジェ ク トの管理とアプ リ ケーシ ョ ン用のパッケージ化が可能です。

特に、 1 つまたは複数のラ イブラ リ (PBL ファ イル) にデータウ ィ ンド ウ オブジェ ク ト を保持できます。 アプリ ケーシ ョ ンでデータウ ィ ンド ウ オブジェ ク ト を使用する準備ができたら、 これらのオブジェ ク トをよ り コンパク ト なランタ イム ラ イブラ リ (PBD フ ァ イル) にパッケージ化できます。

データ ウ ィ ン ド ウ オブジェ ク ト の構築方法および編成方法の詳細については、『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

データウィン ドウ オブジェク トの使い方

データウ ィン ド ウ ペインタでデータウ ィン ド ウ オブジェ ク ト (またはPSR ファ イル) を構築したら、 そのオブジェ ク ト を使用して、 適切なデータ ソースから情報を表示し、 処理する こ とができます。 以降の節では、 この方法について詳し く説明します。

14 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

データウィ ンドウ オブジェク トのコン ト ロールへの取り込み

データウ ィン ド ウ コン ト ロールは、 アプ リ ケーシ ョ ンに配置するデータウ ィ ン ド ウ オブジェ ク トのコンテナです。データウ ィ ン ド ウ コン トロールは、 データウ ィ ン ド ウ オブジェ ク トのデータや外観を操作するためのプロパテ ィ、 メ ソ ッ ド、 およびイベン ト を提供します。 データウ ィン ド ウ コン ト ロールは、アプリ ケーシ ョ ンのユーザ インタフェースの一部です。

データウ ィ ン ド ウ オブジェ ク ト は、 非ビジュアルなデータス ト アや、ド ロ ップダウン データ ウ ィ ン ド ウやコンポジッ ト 提示様式などの子データウ ィン ド ウでも使用できます。データス ト アの詳細については、第 4 章「 データ スト ア オブジェク ト の使い方」 を参照して ください。ド ロ ップダウン データ ウ ィ ン ド ウおよびコンポジッ ト データウ ィ ンド ウの詳細については、『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

データウ ィ ン ド ウ オブジェ ク ト をアプ リ ケーシ ョ ンで使用するには、ウ ィ ン ド ウまたはフォームにデータウ ィ ン ド ウ コン ト ロールを追加し、 そのコン ト ロールをデータウ ィ ン ド ウ オブジェ ク ト と関連付けます。

図 2-1: データウィ ンドウ オブジェク トのデータウィ ンドウ コン ト ロールへの取り込み

この節では、 以下の内容について説明します。

• データウィ ンド ウ コント ロールと データウィ ンド ウ オブジェクト の名前

• コン ト ロールを挿入し、 そのコン ト ロールにデータウ ィ ンド ウ オブジェ ク ト を割り当てるための手順

• 実行段階でのデータウィ ンド ウ オブジェク ト の指定

データウィンドウ プログラマーズ ガイ ド 15

データウィ ンドウ オブジェク トのコン ト ロールへの取り込み

データウ ィ ン ド ウ オブジェ ク ト と Web データウ ィ ン ド ウ コン ト ロールとの関連付けの詳細については、『Web ターゲッ ト と JSP ターゲッ トでの作業』 マニュアルまたは 157 ページの「 データ ウ ィ ンド ウ オブジェク ト のロード 」 を参照して ください。

データウ ィン ド ウ オブジェ ク ト と Web コン ト ロール ActiveX との関連付けの詳細については、 196 ページの「 コ ント ロ ールに対するデータウィ ンド ウ オブジェク ト の指定」 を参照して ください。

データウィ ンドウ コン ト ロールとデータウィン ドウ オブジェク トの名前

データウ ィン ド ウを操作する際に、注意が必要な名前が 2 つあ り ます。

• データウ ィン ド ウ コン ト ロールの名前

• コン ト ロールに関連付けられているデータウ ィ ン ド ウ オブジェ クトの名前

データウィン ドウ コン ト ロール名 ウ ィ ン ド ウ またはフォームにデータウ ィン ド ウ コン ト ロールを配置する と、 そのコン ト ロールにデフォルトの名前が付けられます。 この名前をアプ リ ケーシ ョ ン内で意味のある名前に変更して ください。

PowerBuilder では、 コン ト ロール名に dw_ とい うプレフ ィ ッ クスが付けられます。開発環境に関係な く、 この規則を守っておく と便利です。たとえば、 データウ ィ ン ド ウ コン ト ロールに顧客名が リ ス ト されている場合は、 そのコン ト ロールに dw_customer とい う名前を付けておくと便利です。

名前の使い方

コ ー ド でデータ ウ ィ ン ド ウ を参照する 場合は、 コ ン ト ロール名(dw_customer など) を使用して ください。 コン ト ロール内にあるデータウ ィ ン ド ウ オブジェ ク トは参照できません。

データウィン ドウ オブジェク ト名 混乱を避けるために、データウ ィン ドウ オブジェ ク ト とデータウ ィ ン ド ウ コン ト ロールには、 異なるプレフ ィ ッ ク スを付けて ください。 データウ ィ ン ド ウ オブジェ ク ト には、プレフ ィ ッ クス d_ を付けるのが一般的です。たとえば、データウ ィ ンド ウ コン ト ロール名が dw_customer の場合、 それに対応するデータウ ィン ド ウ オブジェ ク ト名は d_customer にします。

16 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

PowerBuilder でのデータウィ ンドウ コン ト ロールの操作

❖ ウィ ンドウにデータウィン ドウ コン ト ロールを配置するには

1 データウィ ンド ウ コント ロールを配置するウ ィ ンド ウを開きます。

2 メニュー バーから [挿入|コン ト ロール|データウ ィ ン ド ウ] を選択します。

3 コン ト ロールを表示する位置をク リ ッ ク します。

ウ ィ ン ド ウに空のデータ ウ ィ ン ド ウ コン ト ロールが配置されます。

4 (オプシ ョ ン)データウ ィ ン ド ウ コン ト ロールのサイズを変更するには、 コン ト ロールを選択し、 いずれかのハン ドルを ド ラ ッグします。

データウィンドウ オブジェク トの指定

データウ ィン ド ウ コン ト ロールを配置したら、 次は、 そのコン ト ロールにデータウ ィ ンド ウ オブジェ ク ト を関連付けます。

❖ コン ト ロールにデータウィ ンドウ オブジェ ク ト を関連付けるには

1 データウ ィン ド ウ プロパテ ィ ビューで、 [データ オブジェ ク ト ]プロパテ ィの [参照] ボタン (...) を ク リ ッ ク します。

2 コン ト ロール内に配置するデータウ ィン ド ウ オブジェ ク ト を選択し、 [OK] を ク リ ッ ク します。

データウ ィ ン ド ウ プロパテ ィ ビューの、 [データ オブジェ ク ト ]ボッ クスに、 データウ ィ ン ド ウ オブジェ ク トの名前が表示されます。

データウィンドウ プログラマーズ ガイ ド 17

データウィ ンドウ オブジェク トのコン ト ロールへの取り込み

3 (オプシ ョ ン) 必要であれば、データウ ィ ン ド ウ コン ト ロールのプロパティ を変更します。

ユーザ側でデータウィ ンドウ コン ト ロールを移動できるようにする

実行時にユーザがデータウ ィ ン ド ウ コン ト ロールを移動できるようにするには、コン ト ロールにタイ トルを付けて、[タ イ トル バー]チェ ッ クボッ ク スを選択します。これで、ユーザは、タ イ トル バーをド ラ ッグしてコン ト ロールを移動できます。

再利用可能なデータウィ ン ドウ コン ト ロールの定義

アプ リ ケーシ ョ ン内のすべてのデータウ ィ ン ド ウ コン ト ロールに、 同じ外観および同じ動作を定義できます。たとえば、すべてのコン ト ロールで同じエラー処理が可能です。

このよ う な動作を一度定義し、それを各ウ ィン ド ウで再利用するには、データウ ィ ン ド ウ コン ト ロールを基に標準的なユーザ オブジェ ク トを作成する必要があ り ます。 ユーザ オブジェ ク ト のプロパテ ィ を定義し、 エラー処理など必要な汎用処理を行 う ス ク リプ ト を作成します。次に、 新しいデータウ ィ ン ド ウ コン ト ロールを作成するのではな く、このユーザ オブジェ ク ト をウ ィ ン ド ウに配置します。 データウ ィン ドウ ユーザ オブジェ ク トには、あらかじめ定義されている目的の機能がすべて取り込まれます。 再度指定する必要はあ り ません。

ユーザ オブジェ ク ト の作成方法および使用方法の詳細については、『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

コン ト ロール内のデータウィ ン ドウ オブジェク トの編集

データ ウ ィ ン ド ウ オブジェ ク ト をウ ィ ン ド ウ内のデータ ウ ィ ン ド ウコン ト ロールと関連付ける と、 データウ ィ ン ド ウ ペインタに直接アクセスして、 関連付けられているデータウ ィ ン ド ウ オブジェ ク ト を編集できます。

❖ 関連付けられているデータウィ ンドウ オブジェ ク ト を編集するには

• データウ ィン ド ウ コン ト ロールのポップアップ メニューから、[データウ ィン ド ウの修正] を選択します。

関連付けられているデータ ウ ィ ン ド ウ オブジェ ク ト が、 データウ ィン ド ウ ペインタ内で開きます。

18 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

実行段階でのデータウィ ンドウ オブジェク トの指定データウィンドウ オブジェク トの変更

データウ ィン ド ウ オブジェ ク トの変更方法は、 環境によって異な り ます。 • PowerBuilder DataObject プロパティ を、 アプ リ ケーシ ョ ンに組み

込んだいずれかのデータウ ィ ンド ウ オブジェ ク トに設定します。

• Web ActiveX 新しいラ イブラ リ フ ァ イルおよびデータ ウ ィ ン ドウを選択するよ うに、 SourceFileName および DataWindowObject プロパテ ィ を設定します。

• Web データウィ ンドウ Web ターゲッ ト オブジェ ク ト モデルを使用しない場合は、 データウ ィ ンド ウの HTMLGenerator コンポーネン トの SetDWObject メ ソ ッ ドを呼び出すこ とができます。

データウィンドウ オブジェク トの変更時のト ランザクシ ョ ン オブジェク トの設定

実行時にデータウ ィ ン ド ウ オブジェ ク ト を変更する場合、 setTrans または setTransObject を再度呼び出さなければならないこ とがあ り ます。

詳細については、22 ページの「 データウィ ンド ウ コント ロールへのトラ ンザク ショ ン オブジェク ト の設定」 を参照して ください。

データウィンドウ オブジェク トの動的な作成

実行時に新しいデータ ウ ィ ン ド ウ オブジェ ク ト を作成して、 コン トロールと関連付けるこ と もできます。

詳細については、第 3 章「 データウィ ンド ウ オブジェク ト の動的変更」を参照して ください。

PowerBuilder でのデータウ ィ ンドウの変更

データ ウ ィ ン ド ウ オブジェ ク ト をウ ィ ン ド ウ内のコン ト ロールと関連付ける と きには、データウ ィン ド ウ コン ト ロールの DataObject プロパティの初期値を設定します。

これによ って、 アプ リ ケーシ ョ ンの実行時には、 コ ン ト ロールのDataObject プロパテ ィに指定されたデータウ ィ ン ド ウ オブジェ ク トのインスタンスが作成され、 そのインスタンスがコン ト ロールで使用されます。

コードでの DataObject プロパテ ィの設定

ウ ィ ン ド ウ ペインタでデータウ ィ ン ド ウ オブジェ ク ト を指定する方法以外にも、コード内で DataObject プロパティの値を変更する こ とで、実行時にコン ト ロールに表示されるオブジェ ク ト を切り替える こ とができます。

データウィンドウ プログラマーズ ガイ ド 19

データウィ ンドウ オブジェク トのコン ト ロールへの取り込み

例 : データウ ィン ド ウ コン ト ロール 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 ファ イル)内のデータウ ィ ン ド ウ オブジェ ク トが検索されます。

2 コン ト ロールの DataWindowObject プロパテ ィに指定されたデータウ ィン ド ウ オブジェ ク トのインスタンスが作成され、 そのインス タンスがコ ン ト ロールで使用されます。 この と き使用されるデータウ ィ ン ド ウ オブジェ ク トは、 指定されたライブラ リ内に存在しなければな り ません。

20 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

コードでの SourceFileName および DataWindowObject プロパテ ィの設定

ウ ィ ン ド ウ ペインタでデータウ ィ ン ド ウ オブジェ ク ト を指定する方法以外にも、 コード内で SourceFileName および DataWindowObject プロパテ ィの値を変更する こ とで、 実行時にコン ト ロールに表示されるオブジェ ク ト を切り替えるこ とができます。

DataWindowObject プロパティ を変更するだけで、 同じ ライブラ リ内にある別のデータウ ィン ド ウ オブジェ ク ト を使用できます。 また、 両方のプロパティ を変更する と、 ほかのラ イブラ リ内のデータウ ィ ン ド ウオブジェ ク ト を使用できます。

SourceFileName の URL については、 196 ページの「 コント ロールに対するデータウィ ンド ウ オブジェク ト の指定」 を参照して ください。

SourceFileName および DataWindowObject プロパテ ィ の詳細については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

PSR ファ イルの使い方 実行時にデータ ウ ィ ン ド ウ コ ン ト ロ ールにPSRファイルを動的に取り 込む場合は、コント ロールの SourceFileNameプロパティ を空の文字列に変更して、DataWindowObject プロパティ の値と して PSR ファイルの URL を指定します。

例 以下の例では、 JavaScript を使用してプロパテ ィ を設定します。 このコードでは、 フォームまたは Web ページに配置されるデータウ ィ ン ドウ コン ト ロール dw_emp のデータ ウ ィ ン ド ウ オブジェ ク ト を変更します。 dw_emp は、 フォームまたは Web ページの定義の一部と して保存されています。 DataWindowObject の値は d_emp_hist です。 このデータウ ィ ン ド ウは、データウィ ンド ウ ペインタで作成され、SourceFileNameの値が示す emp.pbl とい う名前のラ イブラ リ内に格納されています。 Web ActiveX Web ページの Web ActiveX の場合は、 SourceFileName および DataWindowObject プロパティ を直接設定します。

データウ ィン ド ウ コン ト ロール dw_emp 内に、 ラ イブラ リ emp.pbl のデータウ ィン ド ウ オブジェ ク ト d_emp_hist を表示するには、次のスクリプ ト を記述します。

dw_emp.SourceFileName = "dwlibs/emp.pbl";dw_emp.DataWindowObject = "d_emp_hist";

データウィンドウ プログラマーズ ガイ ド 21

データベースへのアクセス

データベースへのアクセスデータウ ィン ド ウ コン ト ロールにデータを表示するには、データ ソースに格納されているデータを取得して、 目的のコンロールに取り込む必要があ り ます。 データを取得するためのもっ と も一般的な方法は、データベースにアクセスするこ とです。

アプ リ ケーシ ョ ンでデータベースにアクセスするには、 次の手順を行います。

1 ト ランザクシ ョ ン オブジェ ク トに適切な値を設定します。

2 データベースに接続します。

3 データウ ィン ド ウ コン ト ロールに ト ランザクシ ョ ン オブジェ クト を設定します。

4 データを検索し、 更新します。

5 データベース との接続を解除します。

この節では、データウ ィン ド ウ コン ト ロールに ト ランザクシ ョ ン オブジェ ク ト を設定する方法、 およびデータウ ィ ン ド ウ オブジェ ク ト を使用してデータを検索および更新する方法について説明します。

ト ランザクシ ョ ン オブジェ ク ト の値の設定、 データベース との接続、およびデータベース との接続の解除の詳細については、 以下を参照して ください。

• PowerBuilder 『アプ リ ケーシ ョ ン テクニッ ク』 マニュアルの 「 トランザクシ ョ ン オブジェ ク トの使い方」

• Web データウィンドウ 160 ページの「 データベース接続の指定とデータ検索」

• Web ActiveX 197 ページの「 データウィ ンド ウ ト ラ ンザク ショ ンオブジェク ト コント ロールの使い方」

データウィ ンドウ コン ト ロールへのト ランザクシ ョ ン オブジェク トの設定

データ ウ ィ ン ド ウ コ ン ト ロールに対するデータベース接続およびデータベース ト ランザクシ ョ ンを制御するには、 2 つの方法があ り ます。 次のいずれかの方法を使用できます。

• 内部ト ランザクシ ョ ン管理

• 独立した ト ランザクシ ョ ン オブジェ ク ト

22 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

この 2 つの方法では、 データベース ト ランザクシ ョ ンを制御するためのレベルが異な り ます。

コン ト ロールに PSR ファ イルを表示している場合

データウ ィ ン ド ウ コン ト ロールに PSR ファ イルを表示している場合は、 ト ランザクシ ョ ン オブジェ ク ト を使用した り、 データベースに接続した りする必要はあ り ません。

データウィンドウ オブジェク ト を変更する場合

データ ウ ィ ン ド ウ コン ト ロールに関連付けられているデータウ ィ ンド ウ オブジ ェ ク ト を実行時に変更する場合は、 SetTrans またはSetTransObject メ ソ ッ ド を再度呼び出さなければならないこ とがあ ります。

PowerBuilder ト ランザクシ ョ ン オブジェ ク ト を設定するには、 いずれか一方のメ ソ ッ ド を呼び出す必要があ り ます。

Web ActiveX 独立した ト ランザクシ ョ ン オブジェ ク ト を使用している場合に限り、 SetTransObject を再度呼び出す必要があ り ます。

この節では、 これらのオプシ ョ ンについて詳し く説明します。

内部ト ランザクシ ョ ン管理

機能 データ ウ ィ ン ド ウ コン ト ロールで内部 ト ランザクシ ョ ン管理を使用する と、 データウ ィ ン ド ウ コン ト ロールは、 接続、 接続解除、 コ ミ ット 、 およびロールバッ クを処理します。 必要に応じて、 接続と接続解除が自動的に行われます。 また、エラーが生じた場合は、自動的にロールバッ クが行われます。

データ ウ ィ ン ド ウはデータベースにア ク セスする必要がある場合(Retrieve または Update メ ソ ッ ド の実行時など)、内部的な CONNECT 文を発行し、適切なデータ アクセスを行った後、内部的な DISCONNECT文を発行します。

使用の適否 使用しない場合 次のよ う な場合は、 内部ト ランザクシ ョ ン管理を使用しません。

• アプリ ケーシ ョ ンでできる限り高いパフォーマンスが必要な場合

内部 ト ランザクシ ョ ン管理では、 データベースにアクセスするたびに接続と接続解除を行わなければならないため、 処理速度が遅く、 システム リ ソースが大量に消費されます。

データウィンドウ プログラマーズ ガイ ド 23

データベースへのアクセス

• ト ランザクシ ョ ンをコ ミ ッ ト またはロールバッ クする タ イ ミ ングを制御したい場合

内部 ト ランザクシ ョ ン管理では、 データベースへのアクセスが終了する と接続を解除しなければならないため、 変更内容はただちにコ ミ ッ ト されます。

使用する場合 サイ トで使用可能な接続数が限られている場合、接続を開いたままにしておく こ とができないので、 内部ト ランザクシ ョ ン管理が便利です。

内部 ト ランザクシ ョ ン管理が有効な場合とは、 検索のみが目的で (レポート作成時など)、データベースをロ ッ ク しておく必要がない、つまり ト ランザクシ ョ ンのコ ミ ッ トやロールバッ クをアプ リ ケーシ ョ ンで管理する必要がない場合です。

仕組み PowerBuilder 内部 ト ランザクシ ョ ン管理を使用するには、 ト ランザクシ ョ ン オブジェ ク ト (この場合は、 自動的にインスタンス化されたSQLCA) に接続値を指定します。 次に、 SetTrans メ ソ ッ ド を呼び出して、 指定した ト ランザクシ ョ ン オブジェ ク トの値をデータウ ィン ド ウコン ト ロールの内部ト ランザクシ ョ ン オブジェ ク トにコピーします。

SQLCA.DBMS = ProfileString("myapp.ini", &"database", "DBMS", " ")

... // ほかの接続パラ メータを設定dw_employee.SetTrans(SQLCA)dw_employee.Retrieve( )

データベースとの接続

SetTrans を使用した場合は、スク リ プト 内に CONNECT 文や DISCONNECT文を明示的にコ ーディ ングする 必要はあり ません。 必要に応じ て、CONNECT 文と DISCONNECT 文が自動的に発行されます。

PowerBuilder の ト ラ ンザク シ ョ ン オブジェ ク ト の詳細については、PowerBuilder の 『アプ リ ケーシ ョ ン テクニッ ク』 マニュアルを参照して ください。

Web ActiveX 内部 ト ランザクシ ョ ン管理を使用するには、データウ ィン ド ウ ト ランザクシ ョ ン オブジェ ク ト コン ト ロールを使用するのではな く、 データ ウ ィ ン ド ウ Web ActiveX コ ン ト ロールに ト ランザクシ ョ ン プロパティ を設定します。 プロパティは、 Param 要素で設定するか、 ス ク リ プ ト 内で設定でき ます。 次の例では、 ス ク リ プ ト 内でDbParm プロパテ ィ を設定し、 Retrieve を呼び出します。

dw_employee.DbParm ="Driver='com.sybase.jdbc.SybDriver',

24 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

URL='jdbc:sybase:Tds:www.domain.com:7373'";dw_employee.Retrieve( );

内部ト ランザクシ ョ ン管理では、 SetTransObject は呼び出しません。実行時にデータウ ィ ン ド ウ オブジェ ク ト を変更しても接続情報は有効なままであ り、必要に応じて、データウ ィ ン ド ウは接続を行います。 接続情報を変更するには、 DbParm プロパティの値を変更します。

独立した ト ランザクシ ョ ン オブジェ ク ト を使用した ト ランザクシ ョ ン管理

仕組み 独立した ト ランザクシ ョ ン オブジェ ク ト を使用する と、 データベースト ランザクシ ョ ンの継続時間を制御できます。 ス ク リ プ ト によって、データベース との接続および接続解除を明示的に行います。 ト ランザクシ ョ ン オブジェ ク ト の AutoCommit プロパテ ィが False に設定されている場合は、 更新内容をコ ミ ッ ト またはロールバッ クする タ イ ミ ングもプログラムします。

データの検索や更新を行う ためのスク リプ ト には、 通常、 次の文が必要です。

ConnectSetTransObjectRetrieve または UpdateCommit または RollbackDisconnect

PowerBuilder では、接続と コ ミ ッ トに埋め込み SQL を使用します。 WebActiveX の場合、 ト ランザクシ ョ ン オブジェ ク トにはこれらの操作を行うためのメ ソ ッ ドがあ り ます。

ト ランザクシ ョ ン オブジェ ク トは、 データベースから返されたエラーメ ッセージもプロパテ ィに格納します。 このエラー情報を基に、 データベースへの変更内容をコ ミ ッ ト またはロールバッ クするかど うかを判断できます。

使用する場合 データ ウ ィ ン ド ウ コン ト ロールで独立した ト ラ ンザク シ ョ ン オブジェ ク ト を使用する と、 よ り柔軟なデータベース処理が可能にな り ますが、 データベース ト ランザクシ ョ ンの管理について責任を負わなければな り ません。

独立した ト ランザクシ ョ ン オブジェ ク ト を使用するには、 いくつかの理由があ り ます。

• 同じデータベースに接続しているデータウ ィン ド ウ コン ト ロールが複数ある と きに、 そのすべてに対して 1 つのデータベース接続を確立して、 複数の接続によるオーバーヘッ ドを軽減したい場合

データウィンドウ プログラマーズ ガイ ド 25

データベースへのアクセス

• ト ランザクシ ョ ン処理を制御したい場合

• データベース接続を開いたままにする こ とで実現される高いパフォーマンスが必要な場合

仕組み PowerBuilder SetTransObject メ ソ ッ ドは、 ト ランザクシ ョ ン オブジェク ト とデータウ ィ ン ド ウ コン ト ロールを関連付けます。 PowerBuilderには、 自動的にインスタンス化される SQLCA とい うデフォル ト の トランザクシ ョ ン オブジェ ク トがあ り ます。 その接続プロパテ ィ を設定し、 接続して、 データウ ィン ド ウ コン ト ロールに割り当てるこ とができます。

次の文では、 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_customertrans_customer = CREATE transaction

// ト ランザクシ ョ ン オブジェ ク トの接続パラ メータを設定trans_customer.DBMS = ...trans_customer.database = ...CONNECT USING trans_customer;dw_customer.SetTransObject(trans_customer)dw_customer.Retrieve( )

Web ActiveX Web ActiveX に独立した ト ランザクシ ョ ン オブジェ クト を使用するには、 Sybase データウ ィ ン ド ウ ト ラ ンザクシ ョ ン オブジェ ク ト コン ト ロールの OBJECT 要素を Web ページに追加します。接続プロパティの設定には、 Param 要素かスク リプ ト を使用します。

データベースに接続してデータを検索するス ク リプ トは、 次のよ う な文にな り ます。

26 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

trans_1.Connect( );dw_employee.SetTransObject( trans_1 );dw_employee.Retrieve( );trans_1.Disconnect( );

詳細情報 データベース ト ランザクシ ョ ン処理の詳細については、 以下を参照して ください。

• PowerBuilder 『アプ リ ケーシ ョ ン テクニッ ク』 マニュアルの ト ランザクシ ョ ン オブジェ ク トの使い方に関する章

• Web ActiveX 第 8 章「 データ ウ ィ ン ド ウ Web コ ン ト ロ ールActiveX の使い方」

SetTrans および SetTransObject メ ソ ッ ドの詳細については、 『データウ ィン ド ウ リ ファレンス』 マニュアルを参照して ください。

データの検索と更新

データ ウ ィ ン ド ウ コン ト ロールからデータベースにアクセスするには、 以下の 2 つのメ ソ ッ ド を呼び出します。

RetrieveUpdate

基本的なデータ検索

データウ ィ ン ド ウ コン ト ロールに ト ランザクシ ョ ン オブジェ ク ト を設定した後、Retrieve メ ソ ッ ドを使用して、データベースからデータを検索し、 検索したデータを目的のコン ト ロールに取り込むこ とができます。

dw_emp.Retrieve( )

Web データウ ィ ン ド ウ サーバ コンポーネン ト の場合、 RetrieveEx メソ ッ ドには、 引数が必要なと きに使用する も う 1 つ別の書式があ り ます。 Web データウ ィ ン ド ウでのデータ検索の詳細については、160 ページの「 データベース接続の指定と データ検索」および 162 ページの「 リロード さ れたページにページ固有のデータを渡す」 を参照して ください。

データウィンドウ プログラマーズ ガイ ド 27

データベースへのアクセス

検索引数の使い方

検索引数について 検索引数は、 データ ウ ィ ン ド ウ オブジェ ク ト に関連付けられている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 指定できる検索引数の数に制限はあ り ません。

Web データウィンドウ RetrieveEx メ ソ ッ ド を使用して指定できる引数の数の上限は 16 個です。 Web ActiveX Retrieve に指定できる引数の数の上限は 16 個です。16 個よ り 多 く の引数を指定する必要があ る場合は、 Web ActiveX のRetrieveEx メ ソ ッ ド を使用して、 配列要素を検索引数にして配列を渡します。

データの更新

ユーザがデータウ ィ ン ド ウ コン ト ロール内のデータを変更した場合、Update メ ソ ッ ド を使用して、 その変更内容をデータベースに保存できます。

28 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

PowerBuilder では、 次のよ うなスク リプ ト を記述します。

dw_emp.Update()

Update メ ソ ッ ドを使用する と、前回 Update メ ソ ッ ドが実行されてからデータ ウ ィ ン ド ウ コン ト ロールに対して行われたすべての挿入、 変更、および削除がデータベースに送信されます。外部の ト ランザクシ ョン オブジェ ク ト を使用している場合は、 この時点でデータベースの更新内容をコ ミ ッ ト (またはロールバッ ク) できます。 PowerBuilder では SQL 文を使用できます。 Web ActiveX では、 ト ランザクシ ョ ン オブジェ ク トのメ ソ ッ ド とプロパティ を使用します。 Web データウ ィ ン ドウ ク ラ イアン ト コン ト ロールでは、 更新要求を行 う と、 コ ミ ッ トやロールバッ クを処理する、 サーバ コンポーネン トの更新メ ソ ッ ドが呼び出されます。

データウ ィン ド ウ コン ト ロールによるデータベースの更新方法 (どのよ う な場合にどのよ う な SQL 文が送信されるか) の詳細については、47 ページの「 データベースの更新」 を参照して ください。

例 以下の例に、データベース との接続、検索、更新、 コ ミ ッ ト またはロールバッ ク、およびデータベース との接続解除を行う コードを示します。

この例では、 すべてのデータベース操作を 1 つのスク リプ ト または関数で示していますが、 ほとんどのアプ リ ケーシ ョ ンではこれらの操作は分割されています。 た とえば、 PowerBuilder アプ リ ケーシ ョ ンの場合、 データベース との接続はアプ リ ケーシ ョ ンの Open イベン ト で、データの検索と更新は 1 つまたは複数のウ ィ ン ド ウ ス ク リ プ ト で、データベース との接続解除はアプ リ ケーシ ョ ンの Close イベン ト でそれぞれ行います。

PowerBuilder 次の文では、 ト ランザクシ ョ ン オブジェ ク ト EmpSQLとデータウ ィ ン ド ウ コン ト ロール dw_emp を使用して、 データの検索および更新を行います。

// ト ランザクシ ョ ン オブジェ ク ト EmpSQL で// 指定されたデータベースに接続します。CONNECT USING EmpSQL;

// EmpSQL を dw_emp のト ランザクシ ョ ン オブジェ ク ト // と して設定します。dw_emp.SetTransObject(EmpSQL)

// EmpSQL で指定されたデータベースから// データを検索して、 dw_emp に取り込みます。dw_emp.Retrieve()

// データに変更を加えます。

データウィンドウ プログラマーズ ガイ ド 29

データベースへのアクセス

...

// データベースを更新します。IF dw_emp.Update() > 0 THEN

COMMIT USING EmpSQL;ELSE

ROLLBACK USING EmpSQL;END IF

// データベースとの接続を解除します。DISCONNECT USING EmpSQL;

Web ActiveX 次の JavaScript の文では、 ト ランザクシ ョ ン オブジェ クト EmpSQL とデータ ウ ィ ン ド ウ コン ト ロール dw_emp を使用して、データの検索および更新を行います。

// ト ランザクシ ョ ン オブジェ ク ト 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( );

検索または更新エラーの処理

実働アプ リ ケーシ ョ ンでは、 データベース操作を行う たびにエラー テス ト を実行する必要があ り ます。

エラーのチェ ッ クの詳細については、 41 ページの「 データウィ ンド ウエラ ーの処理」 を参照して ください。

30 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

外部ソースからのデータのインポートPowerBuilder および Web ActiveX

データ ウ ィ ン ド ウのデータがデータベース以外から取得されている(つま り、 データ ソースがデータウ ィン ド ウ ウ ィザードで [外部ソース] と して定義されている) 場合、 以下のメ ソ ッ ド を使用して、 データウ ィ ン ド ウ コン ト ロールにデータをインポートできます。

ImportClipboardImportFileImportString

すべての環境 また、 SetItem メ ソ ッ ド またはデータウ ィ ン ド ウ式を使用して、データウ ィン ド ウにデータを取り込むこ と もできます。

SetItem メ ソ ッ ドおよびデータ ウ ィ ン ド ウ式の詳細については、 次の「 データ ウィ ンド ウ コント ロールのデータの操作」 を参照して ください。

データウィ ンドウ コン ト ロールのデータの操作データウ ィン ド ウでのデータの追加、 修正、 および削除のユーザ要求を処理するには、 そのデータを処理するためのコードを記述します。ただし、 データウ ィン ド ウ コン ト ロールでのデータの管理方法について理解しておく必要があ り ます。

データウィ ンドウ コン ト ロールのデータ管理方法

ユーザが追加または変更したデータは、 まずエディ ッ ト コン ト ロール内のテキス ト と して処理されます。 その後、 データが受け入れられると、 そのデータはバッファ内に項目と して格納されます。

データウィンドウ バッ ファについて

データウ ィン ド ウは、 次の 3 つのバッファを使用してデータを格納します。

データウィンドウ プログラマーズ ガイ ド 31

データウィ ンドウ コン ト ロールのデータの操作

表 2-1: データウィン ドウ バッフ ァ

エディ ッ ト コン トロールについて

ユーザがデータ ウ ィ ン ド ウ コン ト ロール内にフォーカスを移動すると、 現行のセル (行とカラム) にエディ ッ ト コン ト ロールが配置されます。

テキストについて エディ ッ ト コン ト ロールの内容は、 テキス ト と呼ばれます。 このテキス トは、 データウ ィン ド ウ コン ト ロールでまだ受け入れられていないデータです。 エディ ッ ト コン ト ロールに入力されたデータは、 データウ ィン ド ウ バッファには格納されていません。つま り 、エディ ッ ト コン ト ロール内のテキス ト にすぎません。

項目について ユーザがエディ ッ ト コン ト ロールの内容を変更した後、〔ENTER〕 を押すか、またはセルから抜ける (タブやマウスを使用するか、上矢印キーか下矢印キーを押す) と、 データが処理され、 カラムに指定されている条件を満たしているかど うかに応じて、 データが受け付けられるか拒否されます。 データが受け付けられる と、 テキス トはデータウ ィ ンド ウの主バッ フ ァ内の現行の行およびカラ ムに移されます。 主バッファ内の特定のカラムに対するデータは、 項目と して参照されます。

バッファ 内容

主 バ ッファ

削除やフ ィルタ も適用されていないデータ、 つま り表示可能な行

フ ィ ル タバッファ

フ ィルタの適用によって非表示にされたデータ

削除バ ッファ

ユーザやスク リ プ トによって削除されたデータ

32 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

テキストおよび項目を変更するイベン ト

エディ ッ ト コン ト ロール内のデータが変更される と、 いくつかのイベン ト が発生します。 イベン ト名は環境によって異な り ます (次の表を参照)。 この章では、 PowerBuilder のイベン ト名を使用します。

表 2-2: 異なる環境でのイベン ト名

エディ ッ ト コン トロール内のテキス トの処理方法

データウ ィン ド ウのカラム内のデータが変更された後、 そのカラムがフォーカスを失 う と (ユーザが次のカラ ムにタブで移動した場合など)、 次のよ う な一連のイベン トが発生します。

1 データウ ィン ド ウ コン ト ロールが、 テキス ト をそのカラムに合った正しいデータ型に変換します。 た とえば、 数値カラムの場合、データウ ィ ン ド ウ コン ト ロールは入力された文字列を数字に変換します。 データを変換できない場合は、 ItemError イベン トが発生します。

2 データが正しいデータ型に変換される と、 データウ ィ ン ド ウ コント ロールはそのカラ ムに定義されている入力条件則を適用します。 データが入力条件則を満たしていない場合は、 ItemError イベン トが発生します。

3 データが入力条件則を満たしている場合は、ItemChanged イベン トが発生します。ItemChanged イベン ト のアクシ ョ ン / リ ターン コードに 1 が設定されている場合、 データウ ィ ン ド ウ コン ト ロールはデータを拒否し、 フォーカスを移動できないよ うにし ます。 この場合、 ItemError イベン トが発生します。

4 ItemChanged イベント でデータが受け付けられると 、ItemFocusChangedイベント が発生し、 データがバッファ内に項目と して格納されます。

イベン ト 説明

PowerBuilder、Webデータ ウ ィ ン ド ウク ライアン ト コント ロール Web ActiveXEditChanged(ク ラ イアント コント ロ ールでは使用不可)

onEditChange ユーザがエデ ィ ッ ト コ ン トロール内にキー入力を行 う たびに発生

ItemChanged beforeItemChange セルが修正された後、 フォーカスが失われた場合に発生

ItemError onItemError カ ラ ム に新 し く 入力 さ れたデータが入力条件則を満た していない場合に発生

ItemFocusChanged onItemFocusChange コ ン ト ロール内の現行項目が変更される と発生

データウィンドウ プログラマーズ ガイ ド 33

データウィ ンドウ コン ト ロールのデータの操作

図 2-2: エディ ッ ト コン ト ロール内のテキストの処理方法

イベン トのアクシ ョ ン/ リ ターン コード

イベン トのプログラム コードに数値を指定する こ とで、 イベン トの結果を制御できます。たとえば、上記の手順 3 は、 ItemChanged イベン トにコード 1 を指定する と、 データを強制的に拒否できるこ と を示しています。

アクシ ョ ン / リ ターン コードを指定するには

• PowerBuilder および Web データウィ ンドウ RETURN 文を使用します。

• Web ActiveX SetActionCode または setActionCode メ ソ ッ ド を呼び出します。

個々のイベン ト のコードについては、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

エディ ッ ト コン ト ロールのテキストへのアクセスメ ソ ッ ドの使い方 以下のメ ソ ッ ド を使用する と、 エディ ッ ト コン ト ロールのテキス トに

アクセスできます。

• GetText - エディ ッ ト コン ト ロールのテキス ト を取り出す

• SetText - エディ ッ ト コン ト ロールにテキス ト を設定する

イベン ト コード 以上のメ ソ ッ ドのほかに、 以下のイベン ト を使用しても、 エディ ッ トコン ト ロールのテキス ト にアクセスできます。

EditChangedItemChangedItemError

34 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

エディ ッ ト コン ト ロールのテキス ト にアクセスするには、 Data パラメータを使用します。 このパラ メータはイベン ト に渡されます。 これらのイベン ト のコードで、 テキス トの値をテス ト して、 その値に応じて特別な処理を実行できます。

例については、以下の 「ItemChanged イベン トのスク リプ トの記述」 を参照して ください。

エディ ッ ト コン ト ロールのテキストの操作

データウ ィ ン ド ウ コン ト ロール内にあるエディ ッ ト コン ト ロールの内容をさ らに操作する場合は、 以下のメ ソ ッ ド を使用できます。

これらのイベン ト の詳細については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

ItemChanged イベン トのスクリプ トの記述

データが正し く変換され、入力条件則を満たしている と、 ItemChangedイベン トが発生します。デフォル トでは、 ItemChanged イベン トはデータ値を受け付け、フォーカスの移動を可能にします。 ItemChanged イベン ト のス ク リプ ト を記述して、 さ らにほかの処理を行う こ とができます。 たとえば、 なんらかのテス ト を実行し、 データを拒否するコードを設定した後、 カラムにフォーカスを設定し、 ItemError イベン ト を発生させるス ク リプ ト を記述できます。

例 次のサンプル コードは、dw_Employee とい うデータウ ィ ン ド ウ コン トロールの ItemChanged イベン ト のコードです。 このコードでは、従業員の年齢に満たないデータは拒否されるよ うに、 dw_Employee に リ ターン コードを設定します。 従業員の年齢は、 SingleLineEdit コン ト ロールまたはテキス トボッ クス コン ト ロールに指定されます。

これは、 PowerBuilder バージ ョ ンのコードです。

CanUndoClearCopyCutLineCountPastePositionReplaceText

ScrollSelectedLengthSelectedLineSelectedStartSelectedTextSelectTextTextLineUndo

データウィンドウ プログラマーズ ガイ ド 35

データウィ ンドウ コン ト ロールのデータの操作

int a, ageage = Integer(sle_age.text)a = Integer(data)

// ItemChanged イベン ト内でリ ターン コードを 1 に設定して、// データを拒否しますが、// フォーカスは変更しないようにします。IF a < age THEN RETURN 1

ItemError イベン トのスクリプ トの記述

ItemError イベン トは、 データになんらかの問題がある場合に発生します。 デフォル トでは、 データ値を拒否して、 メ ッセージ ボッ クスを表示します。 ItemError イベン トのコードを記述して、 さ らにほかの処理を実行できます。 たとえば、 データ値を受け付けるコードや、 データ値は拒否するがフォーカスは変更できるコードを記述できます。

データウ ィ ン ド ウ コン ト ロールのイベン ト の詳細については、 『データウ ィ ン ド ウ リ ファレンス』 マニュアルを参照して ください。

データウィ ンドウの項目へのアクセス

データウ ィ ン ド ウのデータ値にアクセスするには、 メ ソ ッ ドかデータウ ィン ド ウのデータ式を使用します。どちらの方法でも、すべてのバッファ内のデータにアクセスでき、 オ リ ジナルの値や現行値を取得できます。

どの方法を使用するかは、 アクセスするデータ量、 およびスク リプ トのコンパイル時にデータウ ィ ン ド ウ カラム名が判明しているかど うかによって決ま り ます。

使用方法を決定するためのガイ ド ラ インについては、『データウ ィン ドウ リ フ ァレンス』 マニュアルを参照して ください。

メ ソ ッ ドの使い方 データウ ィン ド ウ コン ト ロールのデータ操作用メ ソ ッ ド と して、 いくつかのメ ソ ッ ドがあ り ます。

これらのメ ソ ッ ドは、 指定されたバッファ内の、 指定された行およびカラムのデータを取得します。 Web データ ウ ィ ン ド ウの メ ソ ッ ドは、多重定義された独立したメ ソ ッ ドです。

• PowerBuilder GetItemDate、 GetItemDateTime、 GetItemDecimal、GetItemNumber、 GetItemString、 GetItemTime

36 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

• Web ActiveX GetItemDate、 GetItemNumber、 GetItemString

• Web データウィ ンドウ サーバ コンポーネン ト 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 SetItem

• Web データウィ ンドウ サーバ コンポーネン ト 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メ ソ ッ ド を使用して、特定のバッファ内のデータをチェ ッ クできます。メ ソ ッ ドは、 カラムのデータ型に合ったものを使用しなければな り ません。

上に示した メ ソ ッ ドの詳細については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

式の使い方 データウ ィ ン ド ウのデータ式では、 単一の項目や、 カラム、 データのブロ ッ ク、 選択されているブロ ッ ク、 またはデータウ ィ ン ド ウ全体を参照できます。

データ式の構築方法は、 環境によって異な り ます。

• PowerBuilder ド ッ ト (.) 表記を使用する

データウィンドウ プログラマーズ ガイ ド 37

データウィ ンドウ コン ト ロールのデータの操作

• Web ActiveX データ式はサポー ト されていない

PowerBuilder の式 データ ウ ィ ン ド ウ コン ト ロールの Object プロパテ ィ を使用する と、 そのコン ト ロールのデータウ ィ ン ド ウ オブジェ クト のデータを直接参照する式を指定でき ます。 このよ う な直接的なデータ操作によ り、 メ ソ ッ ド を呼び出すこ とな く、 アクセスするデータ量にも関係な く、 1 つの文でデータにアクセスできます。

dw_1.Object.jobtitle[3] = "Programmer"

次の文では、 データウ ィ ン ド ウの先頭行の先頭カラムの値を Smith に設定します。

dw_1.Object.Data[1,1] = "Smith"

データウ ィ ン ド ウのデータ式の構築方法の詳細については、 『データウ ィン ド ウ リ ファレンス』 マニュアルを参照して ください。

ほかのデータウィン ドウ メ ソ ッ ドの使い方

これまで説明してきた メ ソ ッ ドのほかにも、 データウ ィ ン ド ウ コン トロールでの処理に使用可能な多くのメ ソ ッ ドがあ り ます。 それらのメソ ッ ドの う ち、以下に一般的に使用される メ ソ ッ ドの一部を示します。

38 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

表 2-3: データウィ ンドウ コン ト ロールで一般的に使用される メ ソッ ド

以上のメ ソ ッ ドの一部は、Web データウ ィン ド ウ ク ラ イアン ト コン トロールまたはサーバ コンポーネン ト 、 あるいはその両方で使用できます。開発環境ごとに、メ ソ ッ ドの参照リ ス トが提供されています。 データウ ィ ン ド ウのメ ソ ッ ドの全一覧については、 PowerScript ターゲッ トの PowerBuilder ブラウザ、 または Web ターゲッ トのシステム ツ リーの [コンポーネン ト ] タブ参照して ください。

データウ ィン ド ウ メ ソ ッ ドの詳細については、 『データウ ィン ド ウ リフ ァレンス』 マニュアルを参照して ください。

メ ソ ッ ド 目的

AcceptText エディ ッ ト コン ト ロールの内容を、 データウ ィン ド ウ コン ト ロールの現行の項目に適用する

DeleteRow 指定された行をデータウ ィ ンド ウ コン ト ロールから削除する。 実際にデータベースから行が削除されるのではな く、 行は削除バッファに格納される

Filter 現行のフ ィルタに基づいて、 データウ ィ ン ドウ コン ト ロールの行を表示する

GetRow 現行の行番号を返す

InsertRow 新しい行を挿入する

Reset データウ ィ ン ド ウ コン ト ロール内のすべての行を消去する

Retrieve データベースから行を検索する

RowsCopy、 RowsMove データ ウ ィ ン ド ウ コ ン ト ロール間で行を コピーまたは移動する

ScrollToRow 指定された行にスクロールする

SelectRow 指定された行を強調表示する

ShareData 異なるデータウ ィ ンド ウ コン ト ロールの間でデータを共有する

Update データウ ィ ン ド ウ コン ト ロールに対して行われた挿入、 変更、 および削除をすべてデータベースに送信する

データウィンドウ プログラマーズ ガイ ド 39

データウィ ンドウ オブジェク トのプロパテ ィへのアクセス

データウィ ンド ウ オブジェ クト のプロパティ へのアクセスデータウィン ドウ オブジェク トのプロパテ ィについて

データウ ィン ド ウ オブジェ ク トのプロパティには、 データウ ィン ド ウオブジェ ク ト の動作を制御する情報が格納されています。 このプロパテ ィは、 データウ ィン ド ウ コン ト ロールのプロパティではな く、 コント ロールに表示されているデータ ウ ィ ン ド ウ オブジェ ク ト のプロパテ ィです。 データウ ィン ド ウ オブジェ ク ト そのものは、 データウ ィ ンド ウ オブジェ ク ト のプロパテ ィ を持つ個別のコン ト ロール (カラム、テキス ト 、 グラフ、 および描画コン ト ロール) で構成されます。

データウ ィン ド ウ オブジェ ク トのプロパティの初期値は、 データウ ィン ド ウ ペインタで設定します。 コード内で実行時にプロパテ ィ値を取得および設定する こ と もできます。

データ ウ ィ ン ド ウ オブジェ ク ト のプロパテ ィ にアクセスするには、Describe および Modify メ ソ ッ ド を使用するか、データウ ィン ド ウのプロパテ ィ式を使用します。 どちらの方法を使用するかは、 実行するエラー チェ ッ クの種類、 およびス ク リプ トのコンパイル時にアクセスする、 データウ ィ ン ド ウ オブジェ ク ト内のコン ト ロールの名前とプロパテ ィの名前が判明しているかど うかによって決ま り ます。

Web ActiveX では、 Describe および Modify メ ソ ッ ドのみサポート されます。 プロパティ式はサポート されません。

使用する方法を決定するためのガイ ド ラ イン、 およびデータウ ィ ン ドウ オブジェ ク ト のプロパテ ィの一覧と説明については、 『データウ ィン ド ウ リ ファレンス』 マニュアルを参照して ください。

メ ソ ッ ドの使用によるオブジェク ト プロパテ ィへのアクセス

データウ ィ ン ド ウ オブジェ ク ト のプロパテ ィの処理には、 以下の メソ ッ ドを使用できます。

• Describe - データウ ィ ンド ウ オブジェ ク ト とそのオブジェ ク ト内のコン ト ロールのプロパティ値をレポートする

• Modify - データウ ィ ン ド ウ オブジェ ク トの定義を変更する命令の リ ス ト を指定する こ とで、 データウ ィン ド ウ オブジェ ク ト を修正する

PowerBuilder たとえば、 次の文は、 empname カラムの Border プロパテ ィの値を文字列変数に代入します。

string ls_borderls_border = dw_1.Describe("empname.Border")

次の文は、empname カラムの Border プロパテ ィの値を 1 に変更します。

dw_emp.Modify("empname.Border=1")

40 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

Web ActiveX JavaScript のコードは、 PowerScript のコード とほとんど同じです。次の文は、 empname カラムの Border プロパティの値を取得します。

string ls_borderls_border = dw_1.Describe("empname.Border");

次の文は、empname カラムの Border プロパティの値を 1 に変更します。

dw_emp.Modify("empname.Border=1");

動的データウィン ドウ オブジェク トについて

Describe および Modify を使用する と、 アプ リ ケーシ ョ ンの実行時にユーザがデータ ウ ィ ン ド ウ オブジェ ク ト を変更するためのイン タフェースを提供できます。 たとえば、 データウ ィ ン ド ウ オブジェ ク トの外観を変更した り、 ユーザが一時的なレポート を作成できるよ うにした りできます。

詳細については、第 3 章「 データウィ ンド ウ オブジェク ト の動的変更」を参照して ください。

式の使い方 データウ ィン ド ウのプロパテ ィ式を使用する と、 入れ子の文字列の数を少な く して、プロパティにアクセスできます。PowerBuilder では、オブジェ ク ト名やプロパテ ィ名の間違いに関する問題を Error イベン トで処理できます。

PowerBuilder Object プロパテ ィ と ド ッ ト (.) 表記を使用します。 次に例を示します。

integer li_borderli_border = Integer(dw_1.Object.empname.Border)dw_1.Object.empname.Border = 1

有効な各種プロパテ ィ式の参照資料については、 『データウ ィ ン ド ウリ フ ァレンス』 マニュアルを参照して ください。

データウィ ンドウ エラーの処理データウ ィン ド ウの処理中には、 以下のよ う なエラーが発生する可能性があ り ます。

• 無効なデータ項目 (31 ページの「 データウィ ンド ウ コント ロールのデータの操作」 を参照)

データウィンドウ プログラマーズ ガイ ド 41

データウィ ンドウ エラーの処理

• データの検索または更新時の失敗

• 無効または存在しないプロパティやデータへのアクセス

この節では、 以上の うち 後の 2 種類のエラーの処理方法について説明します。

検索および更新エラーと DBError イベン ト検索および更新テスト データウ ィ ン ド ウ コン ト ロールで Retrieve または Update メ ソ ッ ド を

使用している場合は、 そのメ ソ ッ ドの リ ターン コードをテス ト して、処理が正し く行われているかど うかを確認する必要があ り ます。

SQLCode 属性はテスト しない

SQL 文 (CONNECT、 COMMIT、 DISCONNECT など)、 またはそれに相当する ト ランザクシ ョ ン オブジェ ク ト の メ ソ ッ ド を発行した場合は、 必ず成否コード ( ト ランザクシ ョ ン オブジェ ク トの SQLCode 属性) をテス トする必要があ り ます。 ただし、 このよ う なエラー チェ ックは、 データウ ィ ン ド ウで検索または更新を行った場合には使用できません。

SQL 文の後のエラー処理の詳細については、以下を参照して ください。

• PowerBuilder 『アプ リ ケーシ ョ ン テクニッ ク』 マニュアルの ト ランザクシ ョ ン オブジェ ク ト の使い方に関する章

• Web ActiveX 第 8 章「 データ ウ ィ ン ド ウ Web コ ン ト ロ ールActiveX の使い方」

表 2-4: Retrieve メソ ッ ドおよび Update メ ソッ ドのリ ターン コード

例 PowerBuilder 更新が成功した場合に限り、 データベースに対して行われた変更内容をコ ミ ッ トするには、 次のスク リプ ト を記述します。

IF dw_emp.Update() > 0 THENCOMMIT USING EmpSQL;

ELSEROLLBACK USING EmpSQL;

END IF

メ ソ ッ ド リ ターン コード 意味

Retrieve >=1 検索が成功。 検索された行数が返される

-1 検索が失敗。 DBError イベン トが発生

0 検索されるデータがない

Update 1 更新が成功

-1 更新が失敗。 DBError イベン トが発生

42 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

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 イベン トが発生します。

デフォル ト では、 データウ ィ ン ド ウ コン ト ロールは、 DBMS からのエラー メ ッセージを メ ッセージ ボッ クスに表示します。

実際には、 DBError イベン ト に独自の処理を行う コード を記述し、 デフォル ト のメ ッセージボッ ク スは表示しないこ とがほとんどです。 次の表に、 エラー処理に関するいくつかのヒ ン ト を示します。

データウィンドウ プログラマーズ ガイ ド 43

データウィ ンドウ エラーの処理

表 2-5: DBError イベン トから渡されるメ ッセージ処理時のヒン ト

データウィン ドウのリ ターン コードについて

データウ ィン ド ウ コン ト ロールの一部のイベン トには、 そのイベン トが発生した場合に行われるデフォル トのアクシ ョ ンを上書きするためのコードがあ り ます。 コード とその定義は、 イベン トによって異な ります。PowerBuilder では、RETURN 文でこのコードを設定します。 WebActiveX では、SetActionCode または setActionCode メ ソ ッ ドを呼び出します。

例 PowerBuilder これは、 DBError イベン トのサンプル スク リプ ト です。

// データベース エラー -195 は、 必要な値の一部が// 欠けていることを意味します。IF sqldbcode = -195 THEN

MessageBox(" データが足りません ", &"データが入力されていない " &+" フ ィールドがあります ")

END IF

// リ ターン コードによって、 デフォルト メ ッセージ ボックスを // 表示しないようにします。RETURN 1

アプ リ ケーシ ョ ンの実行中にエラーが発生する と、 次のよ う な メ ッセージ ボッ クスがユーザに表示されます。

Web ActiveX JavaScript では、DBError イベン トのコードは次のよ うにな り ます。

// データベース エラー -195 は、 必要な値の一部が// 欠けていることを意味します。if (sqldbcode == -195) {

目的 処理

DBMS のエラー コードを取得する

DBError イベン トの SQLDBCode 引数を使用する

DBMS のメ ッセージ テキス トを取得する

DBError イベン ト の SQLErrText 引数を使用する

デフォル ト のメ ッセージ ボックスを表示しないよ うにする

ア クシ ョ ンの リ ターン コード と して 1 を指定する

44 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

alert("データが足りません :¥n" + "データが入力されていない " +" フ ィールドがあります ");

}

// アクシ ョ ン コードによって、 デフォルト メ ッセージ ボックスを // 表示しないよ うにします。dw_1.SetActionCode(1);

プロパティ式およびデータ式のエラーと 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 ブロッ クで囲んだプロパティ式です。

TRYdw_1.Object.emp_name.Visible = "0"

CATCH (dwruntimeerror dw_e)MessageBox (&dlq;DWRuntimeError&drq;, dw_e.text)

END TRY

データウィンドウ プログラマーズ ガイ ド 45

データウィ ンドウ エラーの処理

エラー原因の究明 Error イベン トには、エラー状態に関する情報を提供するいくつかの引数が用意されています。 これらの引数の値をチェ ッ クする こ とで、 エラーの原因を究明する こ とができます。 た とえば、 内部エラー番号、エラーのテキス ト 、 エラーの原因となったスク リプ ト に対応するオブジェ ク ト名、 エラーが発生したスク リプ トのフル テキス ト などを調べる こ とができます。 Error イベン ト の引数によって与えられる情報は、コンパイ ラでチェ ッ ク されない式をデバッグする場合に便利です。

DWRuntimeError エラーを捕捉した場合、 Error イベン トの引数を使用するかわりに、 そのク ラスのプロパティ を使用して、 エラー状態に関する情報を提供するこ と もできます。 次の表は、 Error イベン トの引数と DWRuntimeError のプロパテ ィの対応です。

表 2-6: Error event の引数と DWRuntimeError のプロパテ ィの対応

イベン トの結果の制御 Error イベン トが発生した場合、アプ リ ケーシ ョ ンではエラーを無視して処理を続行した り、 戻り値を異なる値に置き換えた り、 エラーのレベルを上げて SystemError イベン ト を発生させるこ とができます。Errorイベン トでは、 イベン トの結果を制御するために、 参照渡しの 2 つの引数を設定できます。

表 2-7: Error イベン トの引数の設定

Error イベン トの引数の詳細については、 『データウ ィン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

Error イベン トの引数 DWRuntimeError のプロパティ

errornumber numbererrorline lineerrortext texterrorwindowmenu objectnameerrorobject classerrorscript routinename

引数 説明

Action この引数に値を指定する こ とで、 エラーの結果と してアプリ ケーシ ョ ンの処置を制御する。 使用可能な値は次のとおり

ExceptionIgnore!ExceptionSubstituteReturnValue!ExceptionFail! (デフォル トのアクシ ョ ン)

ReturnValue この引数に指定する値のデータ型は、 データウ ィ ン ド ウで返される と予想される値と一致する。 この値は、 Action の値が ExceptionSubstituteReturnValue! の場合に使用される

46 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

戻り値を置き換える場合

ExceptionSubstituteReturnValue! アクシ ョ ンを使用する と、 式の 後の要素が原因でエラーが発生した場合に、 戻り値を置き換える こ とができ ま す。 式の途中の要素が原因で エ ラ ーが発生 し た 場合は、ExceptionSubstituteReturnValue! を使用して戻り値を置き換えないで ください。

ExceptionSubstituteReturnValue! アクシ ョ ンは、 データ式のエラーを処理する場合に非常に便利です。

データベースの更新ユーザがデータウ ィ ン ド ウ コン ト ロール内のデータを変更した場合、Update メ ソ ッ ドを使用して、変更内容をデータベースに保存できます。Update メ ソ ッ ドを使用する と、前回 Update または Retrieve メ ソ ッ ドが実行されてからデータ ウ ィ ン ド ウ コン ト ロールに対して行われたすべての挿入、 変更、 および削除がデータベースに送信されます。

データウィ ンドウ コン ト ロールによるデータベースの更新方法

データベースの更新時、 データウ ィ ン ド ウ コン ト ロールは、 データウ ィン ド ウ バッファ内の各行のステータスを調べる こ とで、 生成するSQL 文の種類を決定します。

データウ ィン ド ウ項目には 4 つのステータスがあ り ますが、 この う ち2 つは行だけに適用される ものです。

データウィンドウ プログラマーズ ガイ ド 47

データベースの更新

表 2-8: データウィン ドウ項目の行とカラムのステータス

名前付き定数または数値定数

この表の定数は、 各環境で使用方法が異な り ます。 PowerBuilder 名前付きの値は、 カタログ データ型 dwItemStatus の値です。 感嘆符で終わる名前付きの値を使用しなければな り ません。

Web データウィンドウ 文字列値を使用する際に感嘆符を付けても付けな くてもかまいません。

Web ActiveX 名前付きの値は定義されていません。 数値を使用し ます。

この節では、 PowerBuilder 名を使用します。

ステータスの設定方法 データの検索時 データが検索され、 データウ ィ ン ド ウに取り込まれると、 行とカラムにはすべて初期ステータス と して NotModified! が割り当てられます。

ユーザがデータを変更した り、SetItem メ ソ ッ ド を使用してプログラムからデータを変更したために、 特定の行のカラムのデータが変更される と、そのカラムのステータスは DataModified! に変わり ます。検索された行のいずれかのカラムのステータスが DataModified! に変わる と、行のステータスも DataModified! に変わり ます。

行の挿入時 行がデータウ ィ ン ド ウに挿入される と、行には初期ステータス と して New! が割り当てられ、 その行のすべてのカラムには初期ステータス と して NotModified! が割り当てられます。 ユーザがデータを変更した り、SetItem メ ソ ッ ドなどを使用してプログラムからデータを変更したために、 挿入した行内のカラムのデータが変更される と、そのカラムのステータスは DataModified! に変わり ます。挿入された行のいずれかのカラムのステータスが DataModified! に変わる と、行のステータスは NewModified! に変わり ます。

ステータス 適用先

PowerBuilder名

Web デー タ ウ ィンドウ名 数値

New! New 2 行

NewModified! NewModified 3 行

NotModified! NotModified 0 行とカラム

DataModified! DataModified 1 行とカラム

48 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

データウ ィ ン ド ウ カラムにデフォル ト値が割り当てられている場合、ユーザが実際にその行のいずれかのカラムに 低 1 つ以上の変更を行う までは、そのカラムのステータスが DataModified! に変わる こ とはあり ません。

Update が呼び出された場合

主バッフ ァおよびフ ィルタ バッファ内の行の場合 Update メ ソ ッ ドが呼び出される と、 データウ ィ ンド ウ コン ト ロールは以下の行のステータスに基づいて、 主バッ フ ァやフ ィ ルタ バッ フ ァ内の行に対して SQLINSERT 文と UPDATE 文を生成します。

表 2-9: INSERT 文および UPDATE 文の後の行のステータス

UPDATE 文にカラムが含まれるのは、 以下の 2 つの条件が満たされている場合に限り ます。

• カラムがデータウ ィ ン ド ウ オブジェ ク トで保持される更新可能なカラム リ ス ト内にある

データウ ィ ン ド ウ オブジェ ク トの更新特性の設定の詳細については、 『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

• カラムのステータスが DataModified! である

データウ ィン ド ウ コン ト ロールは、 生成した INSERT 文の中にすべてのカラムを読み込みます。 値が設定されていないカラムについては、NULL が挿入されます。 このため、 そのカラムに NULL が認められていないデータベースの場合は、 データベース エラーが発生します。

削除バッ ファ内の行の場合 データウィ ンド ウ コント ロールは、DeleteRowメ ソ ッ ド を使用 し て削除バ ッ フ ァ に移 さ れた行に対 し て、 SQLDELETE 文を生成します。ただし、DeleteRow が呼び出される前に、行ステータス と して New! または NewModified! が割り当てられていた行に対しては、 DELETE 文は生成されません。

行のステータス 生成される SQL 文NewModified! INSERTDataModified! UPDATE

データウィンドウ プログラマーズ ガイ ド 49

データベースの更新

プログラムによる行またはカラムのステータスの変更

行またはカラムのステータスをプログラムによって変更しなければならないこ とがあ り ます。 この処理が必要になる典型的な例は、 デフォル トの動作を行わないよ うにする場合です。 たとえば、 データウ ィ ンド ウ間で行を コ ピーし た場合、 ユーザがその行を修正し た後に、INSERT 文ではな く UPDATE 文を発行できます。

データウ ィ ン ド ウの行またはカラムのステータス情報をプログラムによって変更するには、 SetItemStatus メ ソ ッ ド を使用します。 個々の行またはカラムのステータスを調べるには、 GetItemStatus メ ソ ッ ド を使用します。

カラムのステータスの変更

SetItemStatus を使用して、 カ ラ ムのステータ スを DataModified! からNotModified! に、または NotModified! から DataModified! に変更できます。

行のステータスを変更した場合に必要となるカラムのステータスの変更

行のステータスを変更する と、 その行の中のすべてのカラムのステータスが NotModified! に変わり ます。 このため、 Update メ ソ ッ ド を呼び出した場合に、 SQL Update 文は生成されません。 行のステータスを変更した場合は、 更新するカラムのステータスを変更しなければな り ません。

行のステータスの変更 行のステータスの変更は、 も う少し複雑です。 次の表に、 行のステータスを別のステータスに変更した場合の影響を示します。

表 2-10: 行のステータスを別のステータスに変更した場合の影響

上の表で、 Yes は、変更が有効であるこ とを意味します。 たとえば、 ステータスが NotModified! の行で SetItemStatus を発行して、 ステータスを New! に変更する と、ステータスは New! に変わり ます。 No は、変更が有効でな く、 ステータスが変更されないこ とを意味します。

オ リ ジナルのステー タス

指定したステータス

New! NewModified! DataModified! NotModified!New! - Yes Yes NoNewModified! No - Yes New!DataModified! NewModified! Yes - YesNotModified! Yes Yes Yes -

50 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

SetItemStatus を発行し て、 行のス テータ ス を NewModified! か らNotModified! に変更する と、実際にはステータスは New! に変更されます。 SetItemStatus を発行して、 行のステータ スを DataModified! からNew! に変更する と、 実際にはステータスは NewModified! に変更されます。

行のステータスを NotModified! または New! に変更する と、 その行のすべてのカラ ムに NotModified! とい う ステータ スが割 り当てられます。 このため、Update メ ソ ッ ドを呼び出したと きに SQL Update 文が生成されるよ うにするには、 必要なカラムのステータスを DataModified!に変更して ください。

ステータスの間接的な変更

通常、 目的のステータスに直接変更できな く ても、 間接的にステータスを変更する こ とができます。 た とえば、 New! を一度 DataModified!に変更し、 その後 NotModified! に変更します。

レポートの作成データウ ィン ド ウ オブジェ ク ト を使用して、財務諸表、受注レポート 、従業員リ ス ト 、 在庫レポー ト など、 標準的なビジネス レポート を作成できます。

レポー ト を作成するには、 次の操作を行います。

• 作成するレポートの種類を決定する

• レポー トのデータを表示するデータウ ィ ン ド ウ オブジェ ク ト を構築する

• データウ ィン ド ウ オブジェ ク ト をウ ィン ド ウまたはフォーム内のデータウ ィン ド ウ コン ト ロールに配置する

• データウ ィン ド ウ コン ト ロールに値を設定するために必要な処理を実行し、 内容をレポー ト と して印刷するためのコードを記述する

データウィンドウ プログラマーズ ガイ ド 51

レポートの作成

アプリケーシ ョ ン内からの InfoMaker の呼び出し

ユーザが InfoMaker (Sybase のレポート作成用ツール) をインス トールしている場合、 アプ リ ケーシ ョ ン内から InfoMaker を呼び出すこ とができます。 これによって、 ユーザ側で固有のレポート を作成し保存できます。 PowerBuilder で InfoMaker を起動するには、Run 関数を使用します。

InfoMaker の呼び出し方法については、 『InfoMaker ユーザーズ ガイ ド』マニュアルを参照して ください。

データウィ ンドウ オブジェク トの計画と構築

レポート をデザインするには、 データウ ィ ン ド ウ オブジェ ク ト を作成します。データ ソース と提示様式を選択した後、次の作業を行います。

• データをソートする

• データウィ ンド ウ オブジェク ト にグループを作成する。これによって、 レポー ト内のデータを整理し、 グループの値が変わったと きに、 強制的に改ページするこ とができる

• レポート ら し くするために、 データウ ィ ン ド ウ オブジェ ク ト を改良する。 たとえば、 タ イ トル、 カラム ヘッダ、 ページ番号を表示する計算フ ィールドなどを追加する

フォン トの使い方

通常ス ク リーン フォン ト よ り もプ リ ンタのフォン ト の方が高さが低く幅広であるので、 データウ ィ ン ド ウ ペインタに表示される ものとまった く同じテキス トがレポート に印刷される とは限り ません。 この違いは、 テキス ト フ ィールドを大きめにして余裕を持たせるこ とで補正できる場合があ り ます。

大きなレポート を印刷する場合は、 あらかじめデータ量が少ない状態でレポート をテス ト してみるこ とをお勧めします。

52 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

レポートの印刷

データウ ィン ド ウ オブジェ ク ト を構築し、 印刷に関する指定を行ったら、 ウ ィ ン ド ウまたはフォームのデータウ ィ ンド ウ コン ト ロールにそのデータウ ィ ン ド ウ オブジェ ク ト を配置できます (15 ページの「 データウィ ンド ウ オブジェク ト のコント ロールへの取り 込み」 を参照)。

ユーザがレポー ト を印刷できるよ うにするには、 印刷ロジッ クを実行するコードがアプ リ ケーシ ョ ンに必要にな り ます。 たとえば、 ウ ィ ンド ウ またはフォームにボタンを配置して、 ユーザがそのボタンを クリ ッ ク したと きに実行されるコードを作成できます。

1 つのデータウ ィ ン ド ウ コン ト ロールまたはデータス ト アの内容を印刷するには、 Print メ ソ ッ ド を呼び出します。 た とえば、 PowerBuilderの次の文では、データウ ィン ド ウ コン ト ロール dw_Sales のレポー ト を印刷します。

dw_Sales.Print(TRUE)

Print メ ソ ッ ドについては、 『データウ ィ ン ド ウ リ ファ レンス』 マニュアルを参照して く ださい。 ネステ ィ ッ ド レポー ト を使用して複数のデータ ウ ィ ン ド ウ を印刷する方法については、 54 ページの「 ネスティ ッ ド レポート の使い方」 を参照して ください。

複数の異なるデータウィ ンドウ コン トロールを 1 つの印刷ジ ョ ブで印刷する

PowerBuilder アプリケーシ ョ ン専用 ウ ィ ン ド ウ内に複数のデータウ ィン ド ウ コン ト ロールがある場合、スク リプ ト で複数の PrintDataWindowメ ソ ッ ド呼び出しを使用する と、 すべてのデータ ウ ィ ン ド ウ コン トロールの内容を 1 つの印刷ジ ョブで印刷できます。

次の文では、 1 つの印刷ジ ョブで 3 つのデータウ ィ ン ド ウ コン ト ロールの内容を印刷します。

int job

job = PrintOpen("作業員レポート ")// 各データウィ ンドウが新規ページの印刷を開始します。PrintDataWindow(job, dw_EmpHeader)PrintDataWindow(job, dw_EmpDetail)PrintDataWindow(job, dw_EmpDptSum)PrintClose(job)

印刷用の PowerBuilder システム関数については、 『PowerScript リ フ ァレンス』 マニュアルを参照して ください。

データウィンドウ プログラマーズ ガイ ド 53

ネステ ィ ッ ド レポートの使い方

ネステ ィ ッ ド レポートの使い方レポート用のデータウ ィン ド ウ オブジェ ク トのデザイン時に、 レポート内にほかのレポート (データウ ィ ン ド ウ オブジェク ト ) をネス トできます。 アプ リ ケーシ ョ ンでネスティ ッ ド レポート を使用するための基本的な手順は、 ほかの種類のレポー ト の場合と同じです。 ただし、ネスティ ッ ド レポートに関して、 把握しておかなければならない点がいくつかあ り ます。

使用できる環境

コンポジッ トおよびネスティ ッ ド レポートは、 Web データウ ィン ド ウでは使用できません。

ネスティ ッ ド レポートのデザイン方法については、『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

更新可能な複数のデータウィン ドウを 1 ページに印刷する

コンポジッ ト レポート を使用する と、 1 ページに複数のレポート を印刷できます。ただし、コンポジッ ト レポートは更新可能ではないので、更新可能な複数のデータウ ィン ド ウを 1 ページに直接印刷する こ とはできません。 この場合は、 次のよ う な間接的な方法を使用します。

コンポジッ ト レポー ト内の名前が付けられたネステ ィ ッ ド レポー トに対して GetChild メ ソ ッ ドを使用する こ とで、ネスティ ッ ド レポー トの参照を取得できます。 ネステ ィ ッ ド レポー ト の参照を取得すれば、ほかのデータウ ィン ド ウ と同じよ うに、 実行時にネスティ ッ ド レポート を操作できます。

この方法では、 ShareData メ ソ ッ ド を呼び出して、 更新可能な複数のデータ ウ ィ ン ド ウ コ ン ト ロールと コンポジ ッ ト レポー ト 内のネステ ィ ッ ド レポート間でデータを共有できます。 このため、 コンポジット レポー ト を介して、 1 ページに更新可能な複数のデータウ ィン ド ウを印刷できます。

❖ コンポジッ ト データウィ ンドウを使用して、 複数のデータウィン ドウを 1 ページに印刷するには

1 更新可能な複数のデータウ ィ ン ド ウ オブジェ ク ト があるデータウ ィ ン ド ウ コン ト ロールをウ ィン ド ウまたはフォームに配置します。

2 印刷するウ ィ ン ド ウまたはフォーム内の各データウ ィ ン ド ウに対応したレポート から構成されるコンポジッ ト レポート を定義します。 この際、 コンポジッ ト レポート内の各ネスティ ッ ド レポー トには名前を付けておいて ください。

54 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

ネステ ィ ッ ド レポートの命名

ネステ ィ ッ ド レポートで GetChild を使用するには、 ネスティ ッ ドレポー トに名前がなければな り ません。 データウ ィ ン ド ウ ペインタでネステ ィ ッ ド レポー トに名前を付けるには、 ワークスペースで目的のレポート をダブルク リ ッ ク し、[全般] プロパティ ページの [名前] ボッ クスにレポート名を入力します。

3 ウ ィン ド ウまたはフォームにコンポジッ ト レポート を追加します。非表示のままでもかまいません。

4 アプリ ケーシ ョ ンで、 次の作業を行います。

a データを検索して、 更新可能なデータウ ィ ンド ウ コン ト ロールに取り込みます。

b GetChild を使用して、 コンポジッ ト レポー ト内のネステ ィ ッド レポー トの参照を取得します。

c ShareData を使用して、 更新可能なデータウ ィン ド ウ オブジェク ト とネステ ィ ッ ド レポートの間でデータを共有します。

d 上記の処理が完了したら、 コンポジッ ト レポート を印刷します。

レポー トには、 更新可能なデータウ ィ ン ド ウ オブジェ ク ト の情報が取り込まれます。

データの再検索

データ を検索してコ ンポジ ッ ト レポー ト に取 り 込むたびに、 ネステ ィ ッ ド レポー ト のすべての参照 (ハン ドル) が無効にな り、 ネステ ィ ッ ド レポー ト とのデータの共有は解除されます。 このため、 データを検索した場合は、 そのつど GetChild と ShareData を呼び出して ください。

実行段階でのネステ ィ ッ ド レポートの作成および破棄

実行時に、データウ ィン ド ウ オブジェ ク ト内にネスティ ッ ド レポートを動的に作成した り破棄した りするには、 データウ ィン ド ウ オブジェク ト内にオブジェ ク ト を作成した り破棄した りする場合と同じ方法を使用します。

ネステ ィ ッ ド レポートの作成 ネステ ィ ッ ド レポー ト を作成するには、Modify メ ソ ッ ド と一緒に CREATE キーワードを使用します。 この際、ネステ ィ ッ ド レポートのプロパティに適切な値を指定します。

データウィンドウ プログラマーズ ガイ ド 55

クロスタブの使い方

ネステ ィ ッ ド レポートを作成するための構文の表示

ネステ ィ ッ ド レポー ト を動的に作成するための構文を簡単に確かめるには、ネステ ィ ッ ド レポートが含まれる既存のデータウ ィン ド ウ オブジェク ト をエクスポート します。 エクスポート ファ イルに、 必要な構文が取り込まれます。

ラ イブ ラ リ ペイ ン タでの構文のエ ク スポー ト の詳細については、『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

ネスティ ッ ド レポート を作成する際には、 データを検索し直して、 レポー ト を表示する必要があ り ます。 コンポジ ッ ト レポー ト では、 レポート全体のデータを検索するか、 または GetChild を使用して、 新しいネステ ィ ッ ド レポートの参照を取得し、 そのデータを直接検索できます。 ほかのレポー ト のネステ ィ ッ ド レポー ト の場合は、 ベース レポートのデータを検索する必要があ り ます。

ネステ ィ ッ ド レポートの破棄 ネステ ィ ッ ド レポー ト を破棄するには、Modify メ ソ ッ ド と一緒に DESTROY キーワードを使用します。 これによって、 ただちにネスティ ッ ド レポート が消去されます。

データ ウ ィ ン ド ウ オブジェ ク ト またはレポー ト内のコン ト ロールの作成および破棄の詳細については、 第 3 章「 データ ウ ィ ンド ウ オブジェク ト の動的変更」 を参照して ください。

ネスティ ッ ド レポート のプロパテ ィ リ ス トについては、 『データウ ィン ド ウ リ ファレンス』 マニュアルを参照して ください。

クロスタブの使い方特定の種類のデータ分析を行 う 場合、 ク ロ ス タブ提示様式でデータウ ィ ン ド ウ オブジェ ク ト をデザインした方が望ましいとい う こ とがあ り ます。 アプ リ ケーシ ョ ンでク ロスタブを使用するための基本的な手順は、 ほかのタイプのデータウ ィ ン ド ウの場合と同じです。 ただし、ク ロスタブに関するい くつかの注意事項を把握しておく必要があ り ます。

ク ロスタブのデザインについては、 『PowerBuilder ユーザーズ ガイ ド』マニュアルを参照して ください。

56 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

元になるデータの表示

ユーザがク ロスタブ提示様式のデータだけでな く元のデータも参照できるよ うにするには、 次のいずれかの作業を行います。

• ウィ ンド ウまたはフォームに、2 つのデータウィ ンド ウ コント ロールを配置し、 一方のデータウィ ンド ウ コント ロールはク ロスタブに、 も う 一方のデータウィ ンド ウ コント ロールは検索したデータを表示するデータウィ ンド ウ オブジェク ト に関連付けます。

• 2 つのレポート を含むデータウィ ンド ウ オブジェク ト を作成し、一方のレポート には元のデータ、も う 一方のレポート にはク ロスタブを表示します。

2 つのデータウィン ドウ オブジェク ト またはレポート間でデータを共有しない

この 2 つは SQL SELECT データ定義は同じであっても、結果セッ トは異な り ます。

コンポジッ ト データウ ィ ン ド ウの詳細については、『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

ユーザによるクロスタブの再定義

使用できる環境

この方法は、 PowerBuilder および Web ActiveX で使用できます。

CrosstabDialog メ ソ ッ ドを使用する と、検索されたデータのどのカラムをク ロスタブのカラムや行、 値と関連付けるかをアプリ ケーシ ョ ンの実行時にユーザに再度定義させるこ とができます。

CrossTabDialog メ ソ ッ ドを使用する と、 ク ロスタブの定義 ダイアログボッ ク スが表示され、 ユーザがク ロスタブのカラムや行、 値に対するデータを定義できます。 このと きの定義方法は、 データウ ィン ド ウ ペインタで使用する方法と同じです。 このダイアログボッ クスでユーザが [OK] を ク リ ッ クする と、 その新しい指定に基づいて、 ク ロスタブが再構築されます。

データウィンドウ プログラマーズ ガイ ド 57

クロスタブの使い方

情報メ ッセージの表示 実行時にク ロスタブを再構築したと きは、CrosstabDialog の呼び出しの結果と して情報メ ッセージを表示できます。 このメ ッセージは、 データウ ィン ド ウ ペインタでク ロスタブを構築する際に表示される 「デー

タを検索しています」 や 「クロスタブを構築しています」 などのメ ッセージと同じです。 処理しなければならない行の数が非常に多く、 ク ロスタブの再構築に時間がかかる場合に、 メ ッセージを表示させる と便利です。

PowerBuilder PowerBuilder では、 ユーザ イベン ト を使用して、 ク ロスタブの情報メ ッセージを表示させます。

❖ クロスタブの再構築時に情報メ ッセージを表示させるには

1 クロスタブが含まれるデータウィ ンド ウ コント ロールにユーザ イベント を定義します。そのイベント にイベント ID pbm_dwnmessagetextを付けます。

2 ユーザ イベン トのスク リプ ト で、 Text 引数 (データウ ィン ド ウ ペインタでのク ロスタブの構築時に表示される メ ッセージが格納される) の値を取得して、 ユーザに表示します。

Web ActiveX Web ページでは、 データウ ィ ン ド ウの onMessageText イベン ト を使用して、 情報メ ッセージを制御します。

❖ クロスタブの再構築時に情報メ ッセージを表示させるには

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)

58 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

ク ロスタブが再構築される間、 MDI アプリ ケーシ ョ ンの MicroHelp に情報メ ッセージが表示されます。

詳細情報 PowerBuilder のユーザ イベン ト の詳細については、『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

CrosstabDialog メ ソ ッ ドおよび MessageText イベン ト の詳細については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

実行段階でのクロスタブのプロパティの修正

ほかのデータウ ィン ド ウ オブジェ ク トの場合と同じよ うに、Modify メソ ッ ド を使用するこ とで、 実行時にク ロスタブのプロパテ ィ を修正できます。 場合によっては、 データウ ィ ンド ウ コン ト ロールでク ロスタブを動的に再構築しなければならないと きもあ り ます。 元のク ロスタブが静的である場合、 再構築によ り動的なク ロスタブに変わ り ます。

使用できる環境

この方法は、 すべてのデータウ ィ ン ド ウ環境で使用できます。

再構築の必要がない変更

次のプロパテ ィは、 データウ ィ ンド ウ コン ト ロールでク ロスタブを再構築しな くても変更できます。

データウィンドウ プログラマーズ ガイ ド 59

HTML の生成

表 2-11: 再構築せずに変更できるクラスタブ データ ウィ ンド ウのプロパティ

再構築が必要な変更 これら以外のプロパテ ィ を変更する と、 Modify メ ソ ッ ドが呼び出された際に、 データウ ィン ド ウ コン ト ロールはク ロスタブの構造を再構築します。 ク ロスタブの再構築が 1 回だけで済むよ うに、 必要なすべての式を 1 つの Modify 呼び出しにま とめておく必要があ り ます。

プロパテ ィのデフォルト値

既存のカラムを基にした計算の場合、 デフォル ト ではデータウ ィ ン ドウ コン ト ロールは、 既存のカラムのプロパテ ィ を使用します。 新しいカラムの場合、 プロパティ (フォン ト 、 色など) には、 既存のク ロスタブの 初のカラムのプロパテ ィがデフォル ト設定されます。 ヘッダのテキス ト のプロパテ ィには、 既存のク ロスタブの先頭ヘッダ行にある 初のテキス ト コン ト ロールのプロパテ ィがデフォル ト設定されます。

Modify メ ソ ッ ドの詳細については、 第 3 章「 データ ウィ ンド ウ オブジェ ク ト の動的変更」 を参照して く ださい。 データ ウ ィ ン ド ウ オブジェ ク ト のプロパテ ィの詳細については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

HTML の生成データウィ ンド ウ オブジェク ト のデータを使用して、HTML(HyperTextMarkup Language) 構文を作成できます。 作成した HTML は、 Web ブラウザに表示できます。

プロパテ ィ オブジェク ト

Alignment Column、 Compute、 TextBackground Column、 Compute、 Line、 Oval、 Rectangle、

RoundRectangle、 TextBorder Column、 Compute、 TextBrush Line、 Oval、 Rectangle、 RoundRectangleColor Column、 Compute、 TextEdit styles (dddw、 ddlb、checkbox、 edit、 editmask、radiobutton)

Column

Font Column、 Compute、 TextFormat Column、 ComputePen Line、 Oval、 Rectangle、 RoundRectanglePointer Column、 Compute、 Line、 Oval、 Rectangle、

RoundRectangle、 Text

60 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

Web データウィ ンドウ

この節では、 Web データ ウ ィ ン ド ウについては説明し ません。 Webデータウ ィン ド ウは、 データウ ィン ド ウ オブジェ ク トのプロパテ ィ を使用します (第 6 章「 Web データウィ ンド ウの使い方」 および 『データ ウ ィ ン ド ウ リ フ ァ レ ン ス』 マニ ュ アルを参照し て く だ さい) 。Data.HTML および HTMLGen などのプロパティ を使用します。

使用可能な方法 データウ ィ ン ド ウ オブジェ ク ト またはデータス ト アから HTML を生成するには、 いくつかの方法があ り ます。

ペインタを使用 データウ ィ ン ド ウ ペインタ と、 データベース ペインタの出力ビューではどちらでも、検索したデータを HTML 形式で保存でき ます。 データ ウ ィ ン ド ウ ペイ ン タでその保存を行 う には、 メニューから [フ ァ イル|名前を付けて行を保存] を選択します。 データベース ペインタでは、 出力ビューを開き、 メニューから [行|名前を付けて行を保存] を選択します。 どちらのペインタでも、 ファ イル形式と して 「HTML Table」 を指定します。

アプリケーシ ョ ン コードを使用 Data.HTMLTable プロパテ ィから、 データウ ィ ン ド ウの提示様式やデータの HTML 文字列を取得します。 この文字列を変数内に保存し、文字列処理操作によって HTML を修正するこ とができます。 PowerBuilder では、 FileOpen 関数と FileWrite 関数を使用して、 HTML をファ イルに保存する こ と もできます。

HTMLTable プロパテ ィ には、 Table HTML 要素に関連付け られるHTML 属性やス タ イル シー ト を制御するために設定でき る固有のプロパテ ィがあ り ます。

PowerBuilder のみ PowerBuilder では、さ らに以下の 2 つの方法も使用できます。

• SaveAs メ ソ ッ ド を呼び出して、 データ ウ ィ ン ド ウの内容を直接ディ スク上のファ イルに保存する。 データを HTML 形式で保存するには、 SaveAs を呼び出す際にファ イルの種類と して HTMLTableを指定する必要がある

• GenerateHTMLForm メ ソ ッ ド を呼び出して、フ リーフォームまたはタブラ提示様式を使用しているデータウ ィ ン ド ウ オブジェ ク トが含まれるデータウ ィ ン ド ウ コン ト ロールまたはデータス ト ア内のデータから HTML フォームを作成する

提示様式の選択 データウ ィン ド ウの提示様式によっては、 HTML に変換するのが好ましい場合もあ り ます。 以下の提示様式は、 優れた結果を生成します。

タブラグループ

データウィンドウ プログラマーズ ガイ ド 61

HTML の生成

フ リーフォームク ロスタブグ リ ッ ド

コンポジッ ト 、 グラフ、 リ ッチテキス ト 、 および OLE2.0 提示様式の場合は、 データだけが HTML 化され、 提示様式は反映されません。 コン ト ロールが重複しているデータウ ィン ド ウでは、 期待どおりの結果が得られない場合もあ り ます。 ネステ ィ ッ ド レポー トは無視され、 生成される HTML には含まれません。

例 次の例に、データウ ィ ン ド ウで生成された HTML をアプ リ ケーシ ョ ンでどのよ うに使用するかを示します。

このコードでは、 HTMLTable プロパテ ィ を参照して、 データウ ィン ドウから HTML を取り込みます。以下に各環境におけるコード例を示します。 PowerBuilder では、Describe メ ソ ッ ド またはプロパティ式を使用できます。Web ActiveX の場合は、 Describe を使用しなければな り ません。

PowerBuilder

ls_htmlstring = dw_1.Object.DataWindow.Data.HTMLTable

Web ActiveX

str_html = dw_1.Describe("DataWindow.Data.HTMLTable");

後で示す例は、 PowerBuilder に実装されています。

62 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

下のウ ィ ンド ウには、 表形式のデータウ ィ ン ド ウ オブジェ ク トに顧客データが表示されています。 ユーザは [参照] ボタンを押すと、 このデータウ ィン ド ウ オブジェ ク トの内容を HTML 形式に変換して、Webブラウザに HTML 出力を表示する こ とができます。 また、 [ブラウザの選択] ボタンを押すと、 どの Web ブラ ウザを使用するかをアプ リケーシ ョ ンに指定できます。

[ブラウザの選択] ボタンのスク リプ ト [ブラ ウザの選択] ボタンのスクリプ トでは、ユーザが Web ブラウザの実行ファ イルを選択するためのダイアログボッ クスを表示します。実行ファ イルのパスは、 is_Browser(ウ ィ ン ド ウに定義されている インスタンス変数) に格納されています。

String ls_BrowserNameInteger li_Result

// ブラウザを選択するためのダイアログボッ クスを開きます。li_Result = GetFileOpenName(" ブラウザの選択 ", &

is_Browser, ls_BrowserName, &

"exe", "実行ファイル (*.EXE),*.EXE")

IF li_Result = -1 THEN

MessageBox(" ブラウザを選択 ", " ブラウザが選択されていません ")END IF

データウィンドウ プログラマーズ ガイ ド 63

HTML の生成

[参照] ボタンのスクリプ ト [参 照] ボ タ ン の ス ク リ プ ト で は、Data.HTMLTable プロパティ を文字列変数に割り当てるこ とで、データウ ィ ン ド ウ内のデータから HTML 文字列を作成し ます。 こ う し てHTML 文字列を構築したら、 その HTML 文字列にヘッダを追加します。 その後、 この HTML をファ イルに保存し、 Web ブラウザを実行して、 出力を表示します。

String ls_HTML, ls_FileName, ls_BrowserPathInteger li_FileNumber, li_Bytes, Integer li_RunResult, li_Result

// HTML を生成します。ls_HTML = dw_1.Object.DataWindow.Data.HTMLTableIF IsNull(ls_HTML) Or Len(ls_HTML) <= 1 THEN

MessageBox (" エラー ", "HTML 生成エラーが発生しました!")

ReturnELSE

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) THENli_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(" ブラウザの選択 ", &" ブラウザが見つかりません ")

RETURNEND IF

END IFli_RunResult = Run(is_Browser + " file:///"+&

ls_FileName)IF li_RunResult = -1 THEN

MessageBox(" エラー ", " ブラウザの実行時にエラー発生 !")

END IF

64 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

ELSE

MessageBox ("書き込みエラー ", &" ファイルが正常に書き込めませんでした ")

END IFELSE

MessageBox (" フ ァイル エラー ", " ファイルがオープンできません ")END IF

表示の制御

テーブル表示およびスタイル シート の使用は、HTMLTable.GenerateCSSプロパテ ィ を介して制御します。 HTMLTable.GenerateCSS プロパテ ィは、 HTMLTable プロパテ ィ の HTML の下位互換性を制御し ます。HTMLTable.GenerateCSS プロパテ ィ が FALSE であ る と、 HTMLTableプロパテ ィ で書式 (ス タ イル シー ト の参照) は参照されません。HTMLTable.GenerateCSS プロパティ がTRUE であると 、HTML.StyleSheetで指定されたカスケード スタイル シート を参照する要素が HTMLTableプロパテ ィに取り込まれます。

次の画面は、 カス タムの表示機能を使用してブラ ウザに表示されたHTML テーブルを示したものです。

HTMLTable.GenerateCSS が TRUE の場合

HTMLTable.GenerateCSS プロパティが TRUE である と、 HTMLTable プロパテ ィの HTMLTable 要素はさ らに別のプロパティ を使用して、テーブル表示をカスタマイズします。 たとえば、 次のプロパテ ィ を指定したと します。

HTMLTable.NoWrap=YesHTMLTable.Border=5

データウィンドウ プログラマーズ ガイ ド 65

HTML の生成

HTMLTable.Width=5HTMLTable.CellPadding=2HTMLTable.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.GenerateCSS が 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>

HTMLTable とスタイル シートのマージ

HTMLTable プロパテ ィ に含まれる HTML 構文は不完全なものです。<HTML> 要素と </HTML> 要素で囲まれていない上に、 スタ イル シートが含まれていません。アプ リ ケーシ ョ ン内にスク リプ ト を記述して、完全な HTML ページを表す文字列を構築できます。

PowerBuilder の例 次の例では、 データウ ィ ン ド ウ プロパテ ィ を設定し、 HTML 文字列を作成して、 それをブラウザに戻します。

66 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

String ls_htmlds_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.StyleSheetls_html += "<BODY>"

ls_html += "<H1> スタイルシート付きのデータウィ ンドウ </H1>"ls_html += ds_1.Object.DataWindow.data.HTMLTablels_html += "</BODY>"ls_html += "</HTML>"return ls_html

この方法を使用する と、 HTML ページの内容を制御できます。 HTMLを動的に作成する場合、 HTMLTable! を引数に SaveAs メ ソ ッ ドを呼び出す方法の代替方法と して使用できます。

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;FONT-STYLE:normal;FONT-WEIGHT:normal;FONT:9pt "Arial", sans-serif;TEXT-DECORATION:none}

.3{COLOR:#000000;BACKGROUND:#ffffff;FONT-STYLE:normal;FONT-WEIGHT:normal;FONT:8pt "MS Sans

データウィンドウ プログラマーズ ガイ ド 67

HTML の生成

Serif", sans-serif;TEXT-DECORATION:none}

.3{COLOR:#000000;BACKGROUND:#ffffff;FONT-STYLE: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>

データウィ ンドウ オブジェク トの HTML フォームとしての表示

GenerateHTMLForm メ ソ ッ ドは、 データ ウ ィ ン ド ウ オブジェ ク ト のHTML フォームの構文を生成します。 指定されている数の行に指定されている数のカラムを表示する HTML フォームを作成できます。以下の点に注意して ください。

• HTML フォームの構文を作成するには、 データウ ィン ド ウ コン トロールまたはデータス ト アに対して GenerateHTMLForm メ ソ ッ ドを呼び出す

• GenerateHTMLForm メ ソ ッ ドで HTML フォームの構文が作成されるのは、 詳細区域のみ

• 埋め込みネステ ィ ッ ド データウ ィン ド ウは無視され、 生成されるHTML には含まれない

提示様式 GenerateHTMLForm メ ソ ッ ドでは、 すべての提示様式に対応する構文を生成できますが、HTML に適したフォームを作成できるのは、フ リーフォーム様式と タブラ様式だけです。

68 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

次の HTML ページは、 GenerateHTMLForm メ ソ ッ ドによって生成された構文を使用して、 フ リーフォーム提示様式のデータウ ィ ンド ウ オブジェ ク ト をフォームに変換した例です。

編集様式の変換 GenerateHTMLForm メ ソ ッ ド を使用する と、 カラムの編集様式が適切な HTML 要素に変換されます。

表 2-12: カラムの編集様式に対して生成される HTML 要素

構文の生成 HTML フォームの構文を生成するには、 GenerateHTMLForm メ ソ ッ ドを呼び出します。

instancename.GenerateHTMLForm ( syntax, style, action { , startrow, endrow, startcolumn, endcolumn { , buffer } } )

このメ ソ ッ ドでは、 Form 要素の構文が syntax 引数に、HTML スタ イルシートが style 引数に取り込まれます (いずれも参照渡し)。

カラムの編集様式 HTML 要素

CheckBox TYPE=CHECKBOX を指定する入力要素

DropDownDataWindow 1 つの Option 要素を持つ選択要素

DropDownListBox DropDownListBox 内の項目ごとに 1 つの Option 要素を持つ選択要素

Edit TYPE=TEXT を指定する入力要素

RadioButton TYPE=RADIO を指定する入力要素

データウィンドウ プログラマーズ ガイ ド 69

HTML の生成

フリーフォーム様式のデータウィン ドウ オブジェク ト内のスタテ ィ ッ ク テキスト

生成された HTML フォームの構文には、 詳細区域内のすべてのスタテ ィ ッ ク テキス トが渡されます。 startcolumn 引数と endcolumn 引数を使用して、 変換するカラムの数を制限する場合は、 詳細区域から除外するカラムのヘッダを削除して ください。

以下に GenerateHTMLForm メ ソ ッ ドの例を示します。

String ls_syntax, ls_style, ls_actionString ls_htmlInteger li_returnls_action = &

"/cgi-bin/pbcgi90.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 &

(ls_syntax, ls_style) END IF

GenerateHTMLForm メ ソ ッ ド を呼び出すと、ls_syntax 変数に Form 要素が取り込まれます。 以下に例を示します。

<FORM ACTION="/cgi-

bin/pbcgi90.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="芳樹 ">

70 PowerBuilder

第 2 章 データウィ ンドウ オブジェ ク トの使い方

<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;FONT-STYLE:normal;FONT-WEIGHT:normal;FONT:9pt "Arial", sans-serif;TEXT-DECORATION:none}

.3{COLOR:#000000;BACKGROUND:#ffffff;FONT-STYLE:normal;FONT-WEIGHT:normal;FONT:8pt "MS Sans Serif", sans-serif;TEXT-DECORATION:none}

.5{COLOR:#000000;BACKGROUND:#ffffff;FONT-STYLE:normal;FONT-WEIGHT:normal;FONT:8pt "MS Sans Serif", sans-serif;TEXT-DECORATION:none}--></STYLE>

一意の要素名

GenerateHTMLForm メ ソ ッ ド を呼び出すと、 フォーム内のすべての要素に対して、 _nextsequentialnumber 接尾辞が付けられ、一意の要素名が作成されます。 1 つのフォームに複数の行が表示されている場合も同じです。

データウィンドウ プログラマーズ ガイ ド 71

HTML の生成

HTML ページの作成 GenerateHTMLForm メ ソ ッ ドで返された構文やスタイル シー ト を使用するには、それを HTML ページにマージするためのスク リプ ト を記述しなければな り ません。完全な HTML ページには、スタ イル シートや構文を取り込むために、 <HTML> 要素や <BODY> 要素が必要です。

このためには、GenerateHTMLForm メ ソ ッ ドで生成された Form 要素とStyle 要素を引数と して取り込み、完全な HTML ページを返すグローバル関数またはオブジェ ク ト関数を作成します。 このよ う な関数には、次のよ う なコードが含まれます。

// 関数名 : of_MakeHTMLPage// 引数 : String as_syntax, String as_style// 戻り値 : String//***********************************String ls_htmlIF as_syntax = "" THEN

RETURN ""END IF

IF as_style = "" THENRETURN ""

END IF

ls_html = "<HTML>"ls_html += as_stylels_html += "<BODY>"

ls_html += "<H1>従業員情報 </H1>"ls_html += as_syntaxls_html += "</BODY></HTML>"RETURN ls_html

72 PowerBuilder

第 3 章 データウィ ン ドウ オブジェク トの動的変更

この章について この章では、 実行中にデータウ ィ ン ド ウ オブジェ ク ト を修正および作成する方法について説明します。

内容

動的なデータウィ ンドウの処理について基本事項 データウ ィ ン ド ウ オブジェ ク ト とそのエンティテ ィ (カラム、 テ

キス ト 、グラフ、ピクチャなど) には、それぞれのプロパティ セット が割り当てられています。 データウ ィ ン ド ウ メ ソ ッ ド またはプロパテ ィ式を使用して、 これらのプロパテ ィの値を実行時に参照した り変更した りできます。 また、 実行時にデータウ ィン ド ウ オブジェ ク ト を作成する こ と もできます。

実行時に修正または作成するデータウ ィ ン ド ウ オブジェ ク ト は、動的データウ ィン ド ウ オブジェ ク ト と呼ばれます。

項目 ページ

動的なデータウィ ンド ウの処理について 73

データウィ ンド ウ オブジェク ト の修正 74

データウィ ンド ウ オブジェク ト の作成 76

ユーザへのク エリ 機能の提供 79

ヘルプ ボタンの使用 83

データウィ ンド ウ オブジェク ト の再利用 84

データウィンドウ プログラマーズ ガイ ド 73

データウィ ンドウ オブジェク トの修正

プロパテ ィ式について

プロパテ ィ式は、 PowerBuilder、 Web データウ ィ ン ド ウで使用できます。 プロパテ ィ式にド ッ ト (.) 表記を使用して、 プロパテ ィを直接アドレス指定します。 プロパテ ィ式は、 Web データウ ィン ド ウのサーバコンポーネン トで評価されます。

Web ActiveX ではプロパテ ィ式を使用できません。 かわりに、 Describeおよび Modify メ ソ ッ ド を使用します。

機能 この動的機能を使用する と、 ユーザ側では、 データ ウ ィ ン ド ウ オブジェ ク トの外観 (テキス トの色、 フォン ト など) を変更した り、 データ ソースを再定義してアドホッ ク クエ リ を作成した りできます。動的データウ ィン ド ウ オブジェ ク トの作成後、 ユーザ側でも希望の外観とデータの表示結果が得られた場合は、 その内容をレポート と して印刷できます。

データウィ ンドウ オブジェク トの修正以下のいずれかの方法を使用する と、 実行時にデータウ ィ ン ド ウ オブジェ ク トの外観と動作を修正できます。

• プロパテ ィの値を変更する

• データウ ィン ド ウ オブジェ ク ト に対してコン ト ロールの追加、 削除を行う

プロパテ ィ値の変更 Modify メ ソ ッ ド またはプロパテ ィ式を使用する と、 プロパテ ィ値を設定できます。 この操作を行う と、 開発時にデータウ ィン ド ウ ペインタで指定したオ リ ジナルの設定を変更できます。

プロパテ ィ を変更する前に、 現行の値を変数に保存しておく と、 後で元の値に戻すこ とができます。 データウ ィ ン ド ウ オブジェ ク ト またはデータ ウ ィ ン ド ウ オブジェ ク ト 内の要素の現行のプロパテ ィに関する情報を取得するには、 Describe メ ソ ッ ド またはプロパテ ィ式を使用します。

プロパテ ィ値での式の使い方

データウ ィ ン ド ウの一部のプロパテ ィには、 値を直接割り当てるのではな く、 実行時にデータウ ィン ド ウで評価される式に基づいて値を割り当てるこ とができます。 たとえば、 次の文では、 給与が 120 万円未満の場合は赤字で表示され、 それ以外の場合は黒字で表示されます。

dw_1.Modify("salary.Color &= '0 ~t if(salary <1200000,255,0)' ")

74 PowerBuilder

第 3 章 データウ ィン ドウ オブジェク トの動的変更

詳細情報 データウ ィン ド ウ ペインタで指定する式と コード内の式では、 構文が異な り ます。 正しい構文および式の割り当てが可能なプロパテ ィについては、 『データウ ィ ン ド ウ リ フ ァ レンス』 マニュアルを参照して ください。

プロパテ ィ式とデータウ ィ ン ド ウ オブジェ ク トのプロパテ ィ、 およびDescribe メ ソ ッ ド と Modify メ ソ ッ ドの使用例の詳細については、『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

データウィンドウ オブジェク トに対するコン ト ロールの追加と削除

Modify メ ソ ッ ド を使用する と、 次の作業を行う こ と もできます。

• データウ ィン ド ウ オブジェ ク トに新しいコン ト ロールを作成する

データ ウ ィ ン ド ウ オブジェ ク ト にデータ ウ ィ ン ド ウ コン ト ロール (テキス ト 、 ビ ッ ト マップ、 グ ラフ ィ ッ ク コン ト ロールなど)を動的に追加できます。

正しい Create 構文を理解するには、 76 ページの「 データウィ ンドウ オブジェク ト の構文の指定」 を参照して ください。

• データウ ィン ド ウ オブジェ ク ト内のコン ト ロールを破棄する

不要になったコン ト ロールを動的に削除できます。

データウィンドウ構文記述用の PowerBuiler ツール

PowerBuilder のみ PowerBuilder には、 DWSyntax とい う ツールがあ ります。 このツールを使用する と、 プロパテ ィ式、 Describe、 Modify、 および SyntaxFromSQL 文の構文を正し く簡単に記述でき ます。 データウ ィン ド ウの目的のプロパテ ィを、ボタンをク リ ッ ク して指定する と、DWSyntax が自動的に適切な構文を作成するので、 その構文をアプ リケーシ ョ ン コード内にコピーして貼り付ける こ とができます。

DWSyntax にア ク セスするには、 [フ ァ イル|新規作成] を選択し、[ツール] タブを選択します。

PowerBuilder でのデータウィンドウ オブジェク トのプロパテ ィの表示

PowerBuilder のみ PowerBuilder ブラウザを使用する と、データウ ィ ンド ウのプロパテ ィの一覧を表示できます。 [DataWindow] タブの左側のペインで、 データウ ィン ド ウ オブジェ ク ト を選択し、 右側のペインでプロパティ を選択します。 データウ ィン ド ウ オブジェ ク トのコン トロールのプロパテ ィ を表示するには、 目的のデータ ウ ィ ン ド ウ オブジェ ク ト名をダブルク リ ッ ク し、 コン ト ロールを選択します。

データウィ ンドウ オブジェク トの作成この節では、 アプリ ケーシ ョ ンで Create メ ソ ッ ドを呼び出して、 データウ ィ ン ド ウ オブジェ ク ト を作成する方法について説明します。

データウィンドウ プログラマーズ ガイ ド 75

データウィ ンドウ オブジェク トの作成

データウィン ドウ ペインタ

こ こで説明する、 構文からデータウ ィ ン ド ウを作成する方法は、 データウ ィ ン ド ウ ペインタで必要な作業を行 う こ とができない場合に限り使用して く ださい。 データウ ィ ン ド ウ オブジェ ク ト を作成するには、 データウ ィ ン ド ウ ペインタを使うのが一般的な方法です。

データウ ィ ン ド ウ ペインタでデータウ ィ ン ド ウ オブジェ ク ト を作成する方法については、『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

実行時に動的にデータ ウ ィ ン ド ウ オブジ ェ ク ト を作成するには、Create メ ソ ッ ド を使用します。Create メ ソ ッ ドは、指定したソース コードを基にデータウ ィ ン ド ウ オブジェ ク ト を生成します。 指定したデータウ ィ ン ド ウ コン ト ロール内にあるデータウ ィ ン ド ウ オブジェ ク トは、 新しいデータウ ィ ン ド ウ オブジェ ク ト で置き換えられます。

ト ランザクシ ョ ン オブジェク トのリセッ ト

Create メ ソ ッ ドを使用する と、 データウ ィ ン ド ウ コン ト ロールと ト ランザクシ ョ ンの間の関連付けが破棄されます。そのため、Create メ ソ ッド を呼び出した後は、SetTransObject または SetTrans メ ソ ッ ド を呼び出して、データウ ィン ド ウ コン ト ロールの ト ランザクシ ョ ン オブジェ クト を リ セッ トする必要があ り ます。

Web ActiveX SetTransObject または SetTrans メ ソ ッ ド を使わずに接続している場合は、 Create メ ソ ッ ド を呼び出した後に、 これらのメ ソ ッド を呼び出す必要はあ り ません。

データウ ィ ン ド ウ コン ト ロールと ト ランザクシ ョ ン オブジェ ク ト の関連付け方法については、第 2 章「 データウィ ンド ウ オブジェク ト の使い方」 を参照して ください。

データウィン ドウ オブジェク トの構文の指定

Create メ ソ ッ ドに必要な構文を指定または生成するには、 いくつかの方法があ り ます。 ただし、 方法によっては、 一部の環境では使用できない場合もあ り ます。

PowerBuilder では、 次の方法を使用できます。

• ト ランザクシ ョ ン オブジェ ク トの SyntaxFromSQL メ ソ ッ ドを使用する

• PowerScript の LibraryExport 関数を使用する

次の方法は、 すべての環境で使用できます。

76 PowerBuilder

第 3 章 データウ ィン ドウ オブジェク トの動的変更

• データウ ィン ド ウ オブジェ ク トの DataWindow.Syntax プロパテ ィを使用する

• 構文を自分で作成する

SyntaxFromSQL の使い方 ほとんどの動的データウ ィン ド ウ オブジェク ト では、 SyntaxFromSQL を使用して構文を作成します。SyntaxFromSQL を使用する と、 SELECT 文と提示様式を指定するだけで構文を作成できます。

PowerBuilder では、 SyntaxFromSQL は ト ランザクシ ョ ン オブジェ ク トのメ ソ ッ ドです。 そのため、 このメ ソ ッ ド を呼び出す場合は、 ト ランザクシ ョ ン オブジェ ク トが接続状態でなければな り ません。

ネイテ ィブ ド ライバの USERID の設定

PowerBuilder では、 ネイテ ィブ ド ラ イバを使用する場合は、 所有者の名前に基づいてテーブル名が自動的に修飾されます。 アプ リ ケーシ ョンでも同じ結果を得るには、 テーブル名が正し く修飾され、 拡張属性を検索できるよ うに、 ト ランザクシ ョ ン オブジェ ク トに USERID プロパティ を設定しなければな り ません。

SyntaxFromSQL には、 以下の 3 つの引数を必ず指定します。

• データウ ィン ド ウ オブジェ ク トの SELECT 文を格納する文字列

• 提示様式などの設定を識別する文字列

• エラーが発生した場合に、 エラー メ ッセージを取り込む文字列の名前

SyntaxFromSQL は、 指定された SELECT 文を使用して構築されたデータウ ィ ン ド ウ オブジェ ク トの完全な構文を返します。

Adaptive Server Enterprise での SyntaxFromSQL の使い方

DBMS と して Adaptive Server Enterprise を使用する環境で SyntaxFromSQLを呼び出す場合、 PowerBuilder では、 テーブルが一意なインデッ ク スを介し て更新可能であ る かど う かを判断し なければな り ません。PowerBuilder でこのよ う な処理が可能となるのは、 次に示すよ う に、SyntaxFromSQL を呼び出す前に AutoCommit を TRUE に設定している場合のみです。

sqlca.autocommit=TRUEsqlca.syntaxfromsql (sqlstmt, presentation, err)sqlca.autocommit=FALSE

データウィンドウ プログラマーズ ガイ ド 77

ユーザへのクエリ機能の提供

PowerBuilder での LibraryExport の使い方 PowerScript の 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 メ ソ ッ ド、およびデータウ ィン ド ウ オブジェク ト のプロパテ ィ と構文の詳細については、 『データ ウ ィ ン ド ウ リフ ァレンス』 マニュアルを参照して ください。

ユーザへのクエリ機能の提供データウ ィ ン ド ウ コン ト ロールから Retrieve メ ソ ッ ド を呼び出すと、そのデータウ ィ ン ド ウ オブジェ ク ト の SELECT 文に指定されている行が検索されます。 データウ ィン ド ウをクエ リ モードに切り替えることで、 どの行を検索するかを実行時にユーザに指定させるこ とができます。 この処理には、 Modify メ ソ ッ ド またはプロパテ ィ式を使用します。 この節の例では Modify メ ソ ッ ドを使用します。

78 PowerBuilder

第 3 章 データウ ィン ドウ オブジェク トの動的変更

制限事項

UNION キーワード または入れ子の SELECT 文を含むデータウ ィ ン ドウ オブジェ ク トでは、 クエ リ モードは使用できません。

クエリ モードの仕組み

データウ ィン ド ウがクエ リ モードになる と、Quick Select でデータ ソースを定義する場合と同じよ うに、 ユーザはクエ リの検索条件を指定できます。 検索条件を定義する と、 次にデータが検索される と きに、 その検索条件が SELECT 文の WHERE 句に追加されます。

以下の 3 つの図に、 クエ リ モードを使用した場合のそれぞれの検索結果を示します。

まず、 データが検索され、 データウ ィ ン ド ウに取り込まれます。 こ こでは、 36 個の行があ り ます。

データウィンドウ プログラマーズ ガイ ド 79

ユーザへのクエリ機能の提供

次に、 クエ リ モードをオンにします。 それまで検索されていたデータが消去され、 検索条件を指定するための空の行が表示されます。 こ こでは、 行の検索条件と して、 Quarter = Q1 と Units > 15 とい う条件を指定しています。

次に、 Retrieve を呼び出して、 クエ リ モードをオフにします。 データウ ィ ン ド ウ コン ト ロールは、 指定された条件を SELECT 文に追加し、その条件を満たす 3 つの行を検索してユーザに表示します。

クエ リ モードを再度オンにする と、 ユーザは検索条件を修正して、 もう一度検索するこ とができます。

クエリ モードの使い方

❖ 実行時にユーザにクエリ モードを提供するには

1 次のスク リプ ト を記述して、 クエ リ モードをオンにします。

PowerBuilder の場合

dw_1.Modify("datawindow.querymode=yes")

JavaScript の場合

dw_1.Modify("datawindow.querymode=yes");

80 PowerBuilder

第 3 章 データウ ィン ドウ オブジェク トの動的変更

データ ウ ィ ン ド ウに表示されていたすべてのデータが消去され、ユーザが選択条件を入力でき る よ うにな り ます。 ただし、 データウ ィ ン ド ウから消去されたデータは、 データ ウ ィ ン ド ウ コン トロールの主バッファ内に残っています。

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 句に追加した後、 指定された行を検索して表示します。

修正後の SELECT 文検索条件に従ってデータを検索する際、 DBMS に送られる修正後のSELECT 文を確認できます。 その確認には、 データウ ィ ン ド ウ コン トロールの SQLPreview イベン ト で、 sqlsyntax 引数を参照します。

検索条件が SELECT 文に与える影響

ユーザが指定した検索条件は、 本来、 データウ ィ ン ド ウ オブジェ ク トを定義するために使用される SELECT 文に追加されます。

たとえば、 本来の SELECT 文と して、 次のスク リプ トが記述されていたと します。

SELECT printer.rep, printer.quarter, printer.product, printer.units

データウィンドウ プログラマーズ ガイ ド 81

ユーザへのクエリ機能の提供

FROM printerWHERE printer.units < 70

こ こに、 次の条件を指定します。

この場合、 SELECT 文は次のよ うにな り ます。

SELECT printer.rep, printer.quarter, printer.product, printer.unitsFROM printerWHERE printer.units < 70AND (printer.quarter = 'Q1'AND printer.product = 'Stellar'OR printer.quarter = 'Q2')

検索条件の消去 検索条件を消去するには、 QueryClear プロパティ を使用します。

PowerBuilder の場合

dw_1.Modify("datawindow.queryclear=yes")

JavaScript の場合

dw_1.Modify("datawindow.queryclear=yes");

クエリ モードでのソート

QuerySort プロパテ ィを使用してクエ リ モードで条件を指定する際に、データウ ィ ン ド ウ内の行のソート をユーザが指定できるよ うにする ことができます。 次の文では、 データウ ィ ン ド ウの先頭行をソー ト条件の指定用に確保します。 これはデータウ ィ ン ド ウ ウ ィザードの QuickSelect と同じです。

PowerBuilder の場合

dw_1.Modify("datawindow.querysort=yes")

JavaScript の場合

dw_1.Modify("datawindow.querysort=yes");

82 PowerBuilder

第 3 章 データウ ィン ドウ オブジェク トの動的変更

クエリ モードでのカラムのプロパテ ィの上書き

デフォル ト では、 クエ リ モードは、 編集様式やそのほかのカラム定義(使用可能な文字数など) を使用します。 これらのプロパテ ィ をクエ リモードで上書きし、 カラムに標準的なエディ ッ ト コン ト ロールを指定する場合は、それぞれのカラムに Criteria.Override_Edit プロパティ を使用します。

PowerBuilder の場合

dw_1.Modify("mycolumn.criteria.override_edit=yes")

JavaScript の場合

dw_1.Modify("mycolumn.criteria.override_edit=yes");

また、 この指定をデータ ウ ィ ン ド ウ ペインタで行 う には、 カラ ムの[全般] プロパテ ィ ページの [カラムの編集様式を無視] をオンにします。 検索条件に対してプロパテ ィ を上書きする と、 ユーザはセルに文字をいくつでも指定できるよ うにな り ます。 また、 データベース内のカラムに対する許容文字数の制約も受けません。

ユーザに対するカラムの条件指定の強制

次のスク リプ ト を記述する と、 クエ リ モードで、 ユーザに強制的にカラムの条件を指定させるこ とができます。

PowerBuilder の場合

dw_1.Modify("mycolumn.criteria.required=yes")

JavaScript の場合

dw_1.Modify("mycolumn.criteria.required=yes");

また、 この指定をデータ ウ ィ ン ド ウ ペインタで行 う には、 カラ ムの[全般] プロパテ ィ ページの [等号のみ使用] をオンにします。 これによって、 ユーザはカラムに必ず条件を指定し、 カラムの条件には <や >= などの演算子ではな く、 = が使用されるよ うにな り ます。

ヘルプ ボタンの使用データウ ィン ド ウ オブジェ ク トには、オンライン ヘルプに関連したプロパテ ィがあ り ます。 DataWindow.Help.File プロパテ ィにヘルプ ファイル名を初期設定する こ とで、 実行時にデータウ ィ ン ド ウで表示されるダイアログボッ クスに [ヘルプ] コマン ドボタンを表示できます。

データ ウ ィ ン ド ウ オブジェ ク ト のヘルプ関連のプロパテ ィの詳細については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照してください。

データウィンドウ プログラマーズ ガイ ド 83

データウィ ンドウ オブジェク トの再利用

データウィ ンドウ オブジェク トの再利用

PowerBuilder のみ

この方法では、 PowerScript メ ソ ッ ドを使用しますが、 このメ ソ ッ ドはほかのデータウ ィン ド ウ環境では使用できません。

データウ ィン ド ウ オブジェ ク ト を再利用するには、 データウ ィン ド ウオブジェ ク ト が格納されている ライブラ リから構文を検索し、 その構文を使って、データウ ィン ド ウ コン ト ロール内にデータウ ィン ド ウ オブジェク ト を動的に作成します。

以下に、アプ リケーシ ョ ンでこの作業を行う一般的な方法を示します。

• LibraryDirectory 関数を使用して、 現行のラ イブラ リ内にあるデータウ ィ ン ド ウ オブジェ ク ト とそのほかのラ イブラ リ エン ト リ のリ ス ト を取り出します。

• DropDownListBox を使用して、 ラ イブラ リ内のデータウ ィン ド ウオブジェ ク ト を リ ス ト し、 その リ ス ト からデータ ウ ィ ン ド ウ をユーザが選択できるよ うにします。

• LibraryExport 関数を使用して、 選択されたデータウ ィ ン ド ウ オブジェ ク トの構文を文字列変数にエクスポート します。

• Create メ ソ ッ ドでデータウ ィ ン ド ウ構文を使用して、 指定されたデータ ウ ィ ン ド ウ コン ト ロール内にデータ ウ ィ ン ド ウ オブジェク ト を作成します。

• Describe メ ソ ッ ド を使用して、 現行のデータウ ィ ン ド ウ オブジェク ト の構文を取り出します。 たとえば、 次のよ うに指定します。

string dwSyntaxdwSyntax = dw_1.Describe("datawindow.syntax")

• Modify メ ソ ッ ドを使用して、ユーザがデータウ ィン ド ウ オブジェク ト を修正できるよ うにします。

• LibraryImport 関数を使用して、 ユーザが修正したデータウ ィン ドウ オブジェ ク ト をラ イブラ リ内に保存します。

PowerScript 関数については、 『PowerScript リ フ ァレンス』 マニュアルを参照して ください。 Create、 Describe、 Modify の各データウ ィン ド ウメ ソ ッ ドについては、 『データウ ィ ン ド ウ リ フ ァ レンス』 マニュアルを参照して ください。

84 PowerBuilder

第 4 章 データストア オブジェク トの使い方

この章について この章では、 アプリ ケーシ ョ ンでのデータス ト ア オブジェ ク トの使い方について説明します。

内容

はじめに この章では、データウ ィ ン ド ウ ペインタでのデータウ ィン ド ウ オブジェ ク ト の構築方法を把握している こ とが前提にな り ます。 これについては、『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

データス トアについてデータス ト アは、 非ビジュアルなデータウ ィ ン ド ウ コン ト ロールです。 データス ト アはデータウ ィ ン ド ウ コン ト ロールとほとんど同じ働きをしますが、 データス ト アにはデータウ ィ ン ド ウ コン トロールにある よ う な多くのビジュアルな特性はあ り ません。 データウ ィ ン ド ウ コン ト ロールと同じ よ うに、 データス ト アにはデータウ ィ ン ド ウ オブジェ ク トが関連付けられます。

項目 ページ

データス ト アについて 85

データス ト アの操作 89

カスタム データス ト ア オブジェ ク ト の使い方 89

データス ト アにおけるデータのアクセス と操作 91

データの共有 94

データウィンドウ プログラマーズ ガイ ド 85

データストアについて

使用できる環境

PowerBuilder では、データス ト アは非ビジュアルなオブジェク ト です。Web コン ト ロール ActiveX では、 データス ト アはサポート されていません。

Web データウ ィ ン ド ウ サーバ コンポーネン トは、 カスタム データスト ア オブジェ ク トのインスタンスを使用して、 データウ ィン ド ウ定義とデータを保管します。 89 ページの「 カスタム データスト ア オブジェク ト の使い方」 を参照して ください。

データス トアを使用する場合

データス ト アは、 データにアクセスする必要はあるが、 データウ ィ ンド ウ コン ト ロールのビジュアル表示は不要である場合に便利です。データス ト アには以下のよ う な機能があ り ます。

• ウィ ンドウでデータウィン ドウ コン ト ロールを非表示にしな く ても、データベースに対してバックグラウンド処理を実行できる

データ ウ ィ ン ド ウ コン ト ロールに表示される データ ウ ィ ン ド ウオブジェ ク ト がオンラ イン表示には適しているが、 印刷には適していないと します。 この場合、 同じ結果セッ ト を持つ、 も う 1 つ別のデータウ ィン ド ウ オブジェ ク ト を印刷用に定義し、 このオブジェ ク ト をデータス ト アに割り当てる こ とができます。 これにより、データス ト ア と データウ ィ ン ド ウ コン ト ロールとの間でデータを共有できます。 ユーザがウ ィ ン ド ウ内のデータを印刷する ときは、 常にデータス ト アの内容が印刷されます。

• 同じ情報に関して複数のビューを表示するために使用するデータを保持できる

ウ ィ ン ド ウに同じ情報の複数のビューを表示する場合、 データスト アを使用して結果セッ ト を保持できます。 データス ト ア と 1 つまたは複数のデータウ ィン ド ウ コン ト ロールとの間でデータを共有する こ とで、 何度もデータを検索する こ とな く、 同じ情報に関する異なるビューを表示できます。

• 埋め込み SQL 文を使用しな く てもテーブル行を操作できる

アプ リ ケーシ ョ ンで行の操作が必要ではあるが、 行を表示する必要はない場合は、 データス ト アを使用する と、 埋め込み SQL 文のかわ りにデータベース処理を制御できます。 一般的には、 データス ト アを使用した方が、 埋め込み SQL 文を使用するよ り も実行時の処理速度が速く な り ます。また、データス ト アの使用時には SQLが データウ ィン ド ウ オブジェ ク ト と一緒に格納されるので、 SQLを簡単に再利用できます。

86 PowerBuilder

第 4 章 データストア オブジェ ク トの使い方

• アプリケーシ ョ ン サーバ上でデータベースにアクセスできる

階層型アプ リ ケーシ ョ ンの場合、 リモート サーバのオブジェ ク トは、 データス ト アを使用してデータベース と対話できます。 データ ス ト アを使用する こ と で、 サーバ マシンで提供される コ ンピュータ リ ソースを活用でき、 各ク ライアン ト でデータベース操作を行う必要がな くな り ます。

データス トアのメ ソッド

データ ウ ィ ン ド ウで使用可能なほ とんどの メ ソ ッ ド と イベン ト が、データス ト アでも使用できます。 ただし、 ユーザとのオンラ イン対話処理を扱う一部のメ ソ ッ ドは、 データス ト アでは使用できません。 たと えば、 データ スト アは、 Retrieve、 Update、 InsertRow、 DeleteRow メソ ッ ド はサポート していますが、GetClickedRow や SetRowFocusIndicatorメ ソ ッ ド はサポート していません。

情報を求めるプロンプトの表示

データス ト アの使用時は、 ダイアログボッ クスを表示してユーザに詳細情報の入力を求める機能は使用できません。 以下に、 この制限の解決方法をいくつか示します。

SetSort および SetFilter データ ウ ィ ン ド ウ コン ト ロールの場合と同じよ うに、 SetSort および SetFilter メ ソ ッ ドを使用して、 データス ト アオブジェ ク ト に対してソート条件やフ ィルタ条件を指定できます。 ただし、 データ ウ ィ ン ド ウ コ ン ト ロールの使用中に、 SetSort またはSetFilter のいずれかに NULL 値を渡した場合、 データ ウ ィ ン ド ウはユーザに対して情報入力を求めるプロンプ ト を表示します。 これに対し、 データス ト アの場合は、 これらのメ ソ ッ ドの呼び出しには、 有効な書式を使用しなければな り ません。また、データス ト ア とデータウ ィン ド ウ コン ト ロールとの間でデータを共有する場合も、 有効な書式を使用しなければな り ません。 データス ト アではな く、 データウ ィ ン ドウ コン ト ロールに NULL 値を渡すこ とはできません。

条件を求めるプロンプ ト データ ウ ィ ン ド ウでデータを検索する前に、ユーザに検索条件をたずねるプロンプ トが表示されるよ うに、 データウ ィン ド ウ オブジェ ク ト を定義できます。 この機能は、 データウ ィ ンド ウ コン ト ロールでのみ使用できます。 データス ト アではサポー ト されていません。

SaveAs データ ウ ィ ン ド ウ オブジェ ク ト で SaveAs を使用する場合に、 ユーザに保存先のファ イル名をたずねるプロンプ トが表示されるよ うに、 ファ イル名引数と して空の文字列を渡すこ とができます。 これに対し、 データス ト アの場合は、 ファ イル名引数を指定しなければな り ません。

データウィンドウ プログラマーズ ガイ ド 87

データストアについて

印刷に関するプロンプ ト データウ ィ ン ド ウ コン ト ロールでは、 データウ ィン ド ウ オブジェ ク トの [印刷の仕様] プロパティ ページで [印刷前にプ リ ンタを設定] チェ ッ クボッ クスをオンにするか、 スク リプ トでデータウ ィ ン ド ウ オブジェ ク ト の Print.Prompt プロパテ ィ を設定する こ とで、 実行時にプリ ンタの設定 ダイアログボッ クスを表示できます。 この機能はデータス ト アではサポート されていません。

検索引数 引数が必要なデータウ ィ ン ド ウ オブジェ ク ト があるデータウ ィ ン ド ウ コン ト ロールに対して、 引数を指定しないで Retrieve メソ ッ ド を呼び出すと、 データウ ィ ン ド ウはユーザに対して検索引数をたずねるプロンプ ト を表示し ます。 この機能はデータス ト アではサポート されていません。

データス トアのビジュアル メ ソ ッ ド

データウ ィ ン ド ウ内のデータのビジュアル表示に関連した メ ソ ッ ドやイベン トの多くは、 データス ト アには適用されません。 ただし、 データス ト アの内容は印刷可能であ り、 また、 データス ト アにデータをインポートする こ と もできるので、 データス ト アにもビジュアル指向のい くつかのイベン トやメ ソ ッ ドがあ り ます。 たとえば、 データス ト アは SetBorderStyle および SetSeriesStyle メ ソ ッ ド をサポート しているので、 印刷時のデータの表示形式を制御できます。 また、 文字列やファイルからインポー ト されたデータがカラムの入力条件則を満たしていない場合は、ItemError イベン トが発生するため、 この ItemError イベント もデータス ト アはサポート しています。

データ ス ト ア オブジェ ク ト のメ ソ ッ ド と イベン ト の一覧および各メソ ッ ドについては、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

データス トアにはビジュアル オーバーヘッ ドがない

データウ ィン ド ウ コン ト ロールとは異な り、 データス ト アではウ ィ ンド ウのビジュアル オーバーヘッ ドが発生しません。 そのため、 ウ ィ ンド ウでデータウ ィン ド ウ コン ト ロールを非表示にするよ り も、 データス ト アを使用した方が効率的です。

88 PowerBuilder

第 4 章 データストア オブジェ ク トの使い方

データス トアの操作データス ト アを使用するには、 まず、 スク リプ ト で データス ト ア オブジェ ク トのインスタンスを作成し、 そのデータス ト アに データウ ィ ンド ウ オブジェ ク ト を割り当てる必要があ り ます。 次に、 データ検索を目的にデータ ス ト アを使用する場合は、 データ ス ト アに ト ラ ンザクシ ョ ン オブジェ ク ト を設定する必要があ り ます。 これらの手順が終了する と、 データを検索してデータス ト アに取り込んだり、 別のデータス ト アや データウ ィ ン ド ウ コン ト ロールとデータを共有するなどの作業を行う こ とができます。

例 次のスク リプ トでは、データス ト アを使用して、データベースからデータを検索します。 まず、 データス ト ア オブジェ ク トのインスタンスを作成し、そのデータス ト アに データウ ィン ド ウ オブジェ ク ト を割り当てます。 次に、 ト ランザクシ ョ ン オブジェ ク ト を関連付けて、 検索したデータをデータス ト アに取り込みます。

datastore lds_datastorelds_datastore = CREATE datastorelds_datastore.DataObject = "d_cust_list"lds_datastore.SetTransObject (SQLCA)lds_datastore.Retrieve()

/* データ処理を実行します。 */

カスタム データス トア オブジェク トの使い方この節では、ユーザ オブジェ ク ト を作成して PowerBuilder のデータスト アを拡張する方法について説明します。

特別な処理を実行する、カスタム バージ ョ ンのデータス ト ア オブジェク ト を使用できます。 カスタム データス ト アを定義するには、 ユーザオブジェ ク ト ペインタを使用します。 ユーザ オブジェ ク ト ペインタでは、 データス ト アにデータウ ィ ン ド ウ オブジェ ク ト を指定します。また、 イベン ト用のスク リプ ト を記述した り、 独自のメ ソ ッ ド、 ユーザ イベン ト 、 およびインスタンス変数を定義した りできます。

カスタム データス ト アを使用するには、 2 つの手順に従います。

1 ユーザ オブジェ ク ト ペインタで、組み込みデータス ト ア オブジェク ト から継承する標準ク ラス ユーザ オブジェ ク ト を定義して保存します。

データウィンドウ プログラマーズ ガイ ド 89

カスタム データス トア オブジェク トの使い方

2 PowerBuilder アプ リ ケーシ ョ ンで、 カスタム データス ト アを使用します。

ユーザ オブジェ ク ト ペインタで、 カスタム データス ト アをいったん定義すれば、 ユーザ オブジェ ク ト を使用して目的の処理を実行するためのスク リプ ト を記述できます。

PowerBuilder でのユーザ オブジェ ク ト ペインタの使い方については、『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

❖ 標準クラス ユーザ オブジェ ク ト を定義するには

1 新規作成 ダイアログボッ クスの [PB オブジェ ク ト ] タブで、 [標準ク ラス] を選択します。

2 ユーザ オブジェ ク ト の継承元の組み込みシステム オブジェ ク トのデータ型と して、 「datastore」 を選択し、 [OK] ボタンを選択します。

カスタム オブジェ ク ト を定義できるよ うに、ユーザ オブジェ ク トペインタのワーク スペースが表示されます。

3 プロパテ ィ ビューの [データ オブジェ ク ト ] ボッ クスに、 データウ ィ ン ド ウ オブジェ ク ト の名前を指定し、 [OK] を ク リ ッ ク します。

4 オブジェ ク ト のイベン ト のス ク リ プ ト を記述するか、 メ ソ ッ ド、ユーザ イベン ト 、 およびインスタンス変数を定義して、 データスト アをカスタマイズします。

5 オブジェ ク ト を保存します。

❖ アプリケーシ ョ ンでユーザ オブジェク ト を使用するには

1 ス ク リプ ト を記述するオブジェ ク ト またはコン ト ロールを選択します。

2 スク リプ ト ビューを開き、 スク リプ ト を記述するイベン ト を選択します。

3 ユーザ オブジェ ク ト を使用して必要な処理を実行するために必要なコードを記述します。

次の例では、 カスタム データス ト アを使用して、 データベースからデータを取得する方法を示します。 この例では、 まず、 カスタム データ ス ト ア オブジェ ク ト のインス タンスを作成します。 次に、ト ランザクシ ョ ン オブジェ ク ト を設定し、データス ト アにデータを取り込みます。

90 PowerBuilder

第 4 章 データストア オブジェ ク トの使い方

uo_cust_dstore lds_cust_dstorelds_cust_dstore = CREATE uo_cust_dstorelds_cust_dstore.SetTransObject (SQLCA)lds_cust_dstore.Retrieve()

/* データ処理を実行します。 */

この例では、データス ト アに データウ ィ ンド ウ オブジェ ク ト を関連付けないこ とに注意して ください。 データウ ィ ン ド ウ オブジェク トは、 ユーザ オブジェ ク トの定義で指定されているからです。

実行時のデータウィン ドウ オブジェク トの変更

ユーザ オブジェ ク ト ペインタで、データウ ィ ン ド ウ オブジェ ク トをデータス ト アに関連付ける と、 データス ト アのデータオブジェク ト プロパティの初期値が設定されます。 実行時に、 データス トアに関連付けたデータウ ィ ン ド ウ オブジェ ク ト を変更するには、データオブジェ ク ト プロパテ ィの値を変更します。

4 スク リプ ト をコンパイルして、 変更を保存します。

データス トアにおけるデータのアクセスと操作データス ト アを使用してデータにアクセスするには、 データ ソースからデータス ト アにデータを読み込む必要があ り ます。

データ ソースがデータベースの場合

データス ト アのデータがデータベースから取得されている (つま り 、データ ソースが外部ソース以外に定義されている場合) 、 データを取得するためにデータベースにア クセスする必要があ り ます。 データベースにアクセスする手順は、 データウ ィ ン ド ウ コン ト ロールで使用する手順と同じです。

データベースへのアクセスの詳細については、 22 ページの「 データベースへのアク セス 」 を参照して ください。

データ ソースがデータベースでない場合

データ ウ ィ ン ド ウのデータがデータベース以外から取得されている(つま り、 データ ソースがデータウ ィン ド ウ ペインタで外部ソースに定義されている)場合、次のメ ソ ッ ド を使用して、データス ト アにデータをインポー トできます。

ImportClipboardImportFileImportString

データウィンドウ プログラマーズ ガイ ド 91

データストアにおけるデータのアクセスと操作

また、 データ ウ ィ ン ド ウ データ式や SetItem メ ソ ッ ド を使用しても、データス ト アにデータを設定できます。

データス ト アにおけるデータへのアクセスの詳細については、『データウ ィン ド ウ リ ファレンス』 マニュアルを参照して ください。

データス トア オブジェク トのバッフ ァについて

データウ ィン ド ウ コン ト ロールと同じよ うに、 データス ト アは、 データを管理するために 3 つのバッファを使用します。

表 4-1: データス トアのバッフ ァ

エディ ッ ト コン トロールについて

データス ト ア オブジェ ク ト には、 エディ ッ ト コン ト ロールがあ り ます。ただし、データス ト アの エディ ッ ト コン ト ロールとデータウ ィ ンド ウの エディ ッ ト コン ト ロールでは、機能に違いがあ り ます。データウ ィ ンド ウの エディ ッ ト コン ト ロールは、 現行のセル (行とカラム)にユーザが入力したテキス ト を追跡します。 一方、 データス ト アの エディ ッ ト コン ト ロールは、 ク リ ップボードやファ イルなどの外部ソースから インポート されたデータの管理に使用します。 データス ト アのエディ ッ ト コン ト ロールに保持されるテキス トは、 ユーザが直接変更する こ とはできません。 スク リプ トで操作しなければな り ません。

データス トアによるプログラ ミ ング

データ ス ト ア オブジェ ク ト を操作するための多く のメ ソ ッ ドがあ ります。 それらのメ ソ ッ ドの う ち、 以下に一般的に使用される メ ソ ッ ドを示します。

バッファ 内容

主バッファ 削除やフ ィルタ も適用されていないデータ、 つま り表示可能な行

フ ィ ル タバッファ

フ ィルタの適用によって非表示にされたデータ

削 除 バ ッファ

ユーザまたはスク リプ トによって削除されたデータ

92 PowerBuilder

第 4 章 データストア オブジェ ク トの使い方

表 4-2: データス トア オブジェク トの一般的なメ ソ ッ ド

データス ト ア メ ソ ッ ドの詳細については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

動的なデータウィ ンドウ オブジェ ク ト 上の表にある メ ソ ッ ドは、データス ト アのデータを操作します。 ただし、 基になるデータウ ィン ド ウ オブジェ ク トの定義は変更されません。 また、 Modify および Describe メソ ッ ド を使用する と、 データウ ィン ド ウ オブジェ ク トの定義にアクセスして操作できます。 これらのメ ソ ッ ド を使用する と、 実行時にデータウ ィ ン ド ウ オブジェ ク ト を変更できます。 たとえば、 データウ ィ ンド ウの外観を変更した り、 ユーザ側で特別なレポー ト を作成できるようにした りできます。

詳細については、第 3 章「 データウィ ンド ウ オブジェク ト の動的変更」を参照して ください。

プロパテ ィ とデータ式 データウ ィ ン ド ウ コン ト ロールでも、 同じプロパティ とデータ式を使用できます。詳細については、『データウ ィ ン ドウ リ フ ァレンス』 マニュアルを参照して ください。

データス トア プロパテ ィ とイベン トの使い方 この章では、 データス ト ア操作用の一部のプロパテ ィ と イベン ト についてのみ説明しています。データス ト アのプロパティ と イベン トの詳細については、『データウ ィン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

メ ソ ッ ド 目的

DeleteRow データス ト アから指定された行を削除する

Filter 現行のフ ィルタ条件に従って、 データス ト アの行にフ ィルタを適用する

InsertRow 新しい行を挿入する

Print データス ト アの内容を現行のプ リ ンタに送信する

Reset データス ト ア内のすべての行をク リ アする

Retrieve データベースから行を検索する

RowsCopy データス ト ア間またはデータス ト アとデータウ ィ ンド ウ コン ト ロールの間で、 行をコピーする

RowsMove データス ト ア間またはデータス ト アとデータウ ィ ンド ウ コン ト ロールの間で、 行を移動する

ShareData 異なるデータス ト アまたはデータウ ィ ン ド ウ コン ト ロール間でデータを共有する。 94 ページの「データの共有」を参照

Sort 現行のソー ト条件に従って、 データス ト アの行をソー トする

Update 前回の Update 実行後に行われたすべての挿入、 変更、 および削除の内容をデータベースに送信する

データウィンドウ プログラマーズ ガイ ド 93

データの共有

データの共有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 メ ソ ッ ド を呼び出した場合、 その更新処理は主データウ ィン ドウにも適用されます。

94 PowerBuilder

第 4 章 データストア オブジェ ク トの使い方

データ共有の解除 データの共有を解除するには、ShareDataOff メ ソ ッ ド を使用します。主データウ ィン ド ウに対して ShareDataOff メ ソ ッ ドを呼び出すと、 どの2 次データウ ィ ン ド ウから もデータ共有が解除されるので、 共有データにア ク セスでき な く な り ます。 2 次データ ウ ィ ン ド ウに対し てShareDataOff メ ソ ッ ド を呼び出すと、 その 2 次データウ ィン ド ウにはデータが格納されな くな り ますが、 主データウ ィン ド ウ とそのほかの2 次データウ ィ ン ド ウには影響しません。

ウ ィ ン ド ウを閉じて、 そのウ ィ ン ド ウに関連付けられているデータウ ィン ド ウ コン ト ロール (またはデータス ト ア) が破棄される と、 自動的にデータの共有は解除されます。 したがって、ほとんどの場合、開発者側でデータの共有を解除する必要はあ り ません。

クロスタブ ク ロ スタブ提示様式が指定されたデータウ ィ ン ド ウ オブジェ ク ト では、 データを共有できません。

例 : データストアからのデータの印刷

w_employees とい う ウ ィ ン ド ウがある と します。 このウ ィ ン ド ウでは、データベースから従業員データを検索、 更新、 および印刷する こ とが可能です。

データウィンドウ プログラマーズ ガイ ド 95

データの共有

データウ ィ ン ド ウ コン ト ロールに表示されるデータウ ィ ン ド ウ オブジェ ク トは表示には適していますが、 印刷には適していません。 この場合、 表示用に使用されるデータウ ィ ン ド ウ オブジェ ク ト と同じ結果セッ ト を持つ、 も う 1 つ別のデータウ ィン ド ウ オブジェ ク ト を印刷用に定義し、 データス ト アに関連付けます。 これによ り 、 データス ト アと データ ウ ィ ン ド ウ コン ト ロールとの間でデータを共有でき ます。ユーザがウ ィン ド ウ内のデータを印刷する と きは、 常にデータス ト アの内容が印刷されます。

ウィ ンドウまたはフォームのオープン時

コードの記述は、 データウ ィ ン ド ウ コン ト ロール 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 datastoreids_datastore.DataObject = "d_employees"dw_employees.ShareData(ids_datastore)

[更新] ボタンのコード

cb_update ボ タ ンのコー ド では、 データ ウ ィ ン ド ウ コ ン ト ロールdw_employees に更新処理を適用します。

これは、 [更新] ボタンの Clicked イベン トのコードです。

IF dw_employees.Update() = 1 THENCOMMIT using SQLCA;MessageBox("保存 ","保存に成功しました ")

ELSEROLLBACK using SQLCA;MessageBox("保存 ","保存に失敗しました ")

END IF

[印刷] ボタンのコード

cb_print ボタンの Clicked イベン トのコードでは、 ids_datastore の内容を印刷します。 データス ト アに関連付けられたデータウ ィ ン ド ウ オブジェ ク トは d_employees なので、 印刷出力にはこのオブジェ ク ト に指定された印刷形式が使用されます。

これは、 [印刷] ボタンの Clicked イベン トのコードです。

ids_datastore.Print()

96 PowerBuilder

第 4 章 データストア オブジェ ク トの使い方

ウィ ンドウまたはフォームのクローズ時

ウ ィン ド ウが閉じ る と、 データス ト アは破棄されます。

これは、 ウ ィ ン ド ウの Close イベン トのコードです。

destroy ids_datastore

例 : 2 つのデータストア オブジェク トによるデータ処理

w_multi_view とい う ウ ィ ン ド ウには、 同じ結果セッ トの複数のビューが表示される と し ます。 [従業員一覧] ラジオ ボタンを選択する と、ウ ィ ン ド ウにデータベースから検索された従業員の一覧が表示されます。

[従業員給与情報] ラジオ ボタンを選択する と、 ウ ィ ン ド ウには、 部門別に従業員給料情報がグラフで表示されます。

データウィンドウ プログラマーズ ガイ ド 97

データの共有

このウィ ンド ウには、dw_display と いう データウィ ンド ウ コント ロールがあり ます。このデータウィ ンド ウ コント ロールは、 2 つのデータストアを使用して、 データベースから検索したデータを処理します。 1 つ目のデータスト ア ids_emp_list は、2 つ目のデータスト ア ids_emp_graph と結果セッ ト を共有します。 2 つのデータスト アに関連付けられたデータウィ ンド ウ オブジェク ト の結果セッ ト は同じです。

ウィ ンドウまたはフォームのオープン時

ウ ィ ン ド ウまたはフォームを開く と、 アプ リ ケーシ ョ ンではマウスポインタが砂時計に変わり ます。 次に、 コードでは、 2 つのデータス トアを作成し、 それらのデータス ト アにデータウ ィ ン ド ウ オブジェ ク トを設定します。その後、 ids_emp_list に ト ランザクシ ョ ン オブジェ ク トを設定し、 Retrieve メ ソ ッ ド を呼び出してデータを検索します。

データを取得した後、 ids_emp_list の結果セッ ト を ids_emp_graph と共有します。 ス ク リプ ト の 後の文で、 [従業員一覧] ラジオ ボタンのClicked イベン ト を発生させます。

これは、 ウ ィ ン ド ウの Open イベン ト のコードです。

SetPointer(HourGlass!)ids_emp_list = Create DataStoreids_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.DataObjectids_emp_list.ShareData(dw_display)

98 PowerBuilder

第 4 章 データストア オブジェ ク トの使い方

[従業員給与情報] ラジオ ボタンのコード

[従業員給与情報] ラジオ ボタン (rb_graph) のコードは、 [従業員一覧] ラジオ ボタンのコード と類似しています。 このコードでは、 データ ウ ィ ン ド ウ コン ト ロールに関連付けられたデータウ ィ ン ド ウ オブジェ ク ト が、 ids_emp_graph に関連付けられたデータウ ィ ン ド ウ オブジ ェ ク ト と 同 じ にな る よ う に設定 し ます。 次に、 デー タ ス ト アids_emp_graph の結果セッ ト をデータウ ィ ン ド ウ コン ト ロールと共有するこ とによって、 データを表示します。

これは、 [従業員給与情報] ラジオ ボタンの Clicked イベン トのコードです。

dw_display.DataObject = ids_emp_graph.DataObjectids_emp_graph.ShareData(dw_display)

ウィ ンドウまたはフォームのクローズ時

ウ ィン ド ウを閉じ る と、 データス ト アは破棄されます。

これは、 ウ ィ ン ド ウの Close イベン トのコードです。

Destroy ids_emp_listDestroy ids_emp_graph

ガベージ コレクシ ョ ンの使用

これらのオブジェ ク ト を別のプロセスで使用する場合は、 破棄するかわりに、 ガベージ コレクシ ョ ンを使用します。

データウィンドウ プログラマーズ ガイ ド 99

データの共有

100 PowerBuilder

第 5 章 グラフの操作

この章について この章では、 実行時に、 アプ リ ケーシ ョ ンのグラフにアクセスして変更するためのコードの記述方法について説明します。

内容

グラフの使い方

サポート環境

PowerBuilder および Web ActiveX グ ラ フがサポー ト されています。 データス ト アを印刷できるので、 PowerBuilder はデータを視覚的に提示するためのデータス ト ア用のイベン ト と関数を提供します。 しかし、CategoryCount、CategoryName、GetData、SeriesCountなどのグ ラ フ関数は、 データ ス ト アに関しては作成されないビジュアル グラ フ コ ン ト ロールに依存し ます。 これらの関数は、データス ト ア オブジェ ク トで使用される際に、 エラー値また空の文字列を返します。

Web データウィ ンドウ グラフはサポー ト されていません。 グラフを含むデータウ ィ ン ド ウ オブジェ ク ト を使用しても、 グラフは無視されます。 グラフ提示様式を持つデータウ ィ ン ド ウ オブジェ クト を使用しても、 何も表示されません。

開発時に、 1 つまたは複数のグラフを持つデータウ ィ ン ド ウ オブジェク ト を作成できます。データをすぐに把握して分析するには、棒グラフ、 線グラフ、 円グラフが効果的です。

グラフ作成の詳細については、 『PowerBuilder ユーザーズ ガイ ド』マニュアルを参照して ください。

項目 ページ

グラフの使い方 101

グラフのプロパティの修正 102

データのプロパティへのアクセス 105

ポイン ト アン ド ク リ ッ クの使い方 113

データウィンドウ プログラマーズ ガイ ド 101

グラフのプロパテ ィの修正

コードによるグラフ操作

以降の節では、 実行時にス ク リプ トでグラフのプロパティ を操作するこ とによって、 グラフにアクセス (および修正) する方法について説明します。 グラフのプロパテ ィには次の 2 種類があ り ます。

• グラフ定義自体のプロパテ ィ これは、グラフを作成する と きにデータウ ィ ン ド ウ ペインタで 初に設定するプロパテ ィです。 グラフの種類、 タ イ ト ル、 および軸ラベルの設定、 軸に目盛を付けるかど うかの指定などがあ り ます。

• データのプロパテ ィ これは、 グラフにデータが読み込まれる と きの、実行時にだけ関係するプロパテ ィです。グラフ内の系列数 (系列は実行時に作成される) 、 系列の横棒または縦棒の色、 系列がオーバレイかど うか、項目の文字 (項目は実行時に作成される) などを設定します。

そのほかの PowerBuilder コン ト ロールでのグラフの使用

ほとんどの場合、 グラフはデータウ ィ ン ド ウ内で使用しますが、 ウ ィン ド ウにグラフ コン ト ロールを追加する こ と もでき、 グラフ コン トロールで使用する PowerScript メ ソ ッ ド と イベン ト もあ り ます。

詳細については、 PowerBuilder の 『アプ リ ケーシ ョ ン テクニッ ク』 マニュアルを参照して ください。

グラフのプロパティの修正データ ウ ィ ン ド ウまたはウ ィ ン ド ウ ペインタでグラフを定義する ときは、 その動作と表示方法を指定します。 たとえば、 なんらかのタ イトルを持つ縦棒グラフ と してグラフを定義し、 数値軸を 4 つの目盛りに分割します。 各入力項目は、 グラフのプロパテ ィに対応します。 どのグラフにも、 グラフの種類を指定する GraphType プロパテ ィがあ ります。

グラフの種類の動的な変更

グラフの種類を変更する場合、新しいグラフを正し く定義するために、必要に応じてほかのプロパテ ィ を変更する必要があ り ます。

実行時にこれらのグラフ プロパテ ィを変更するには、 コードでグラフプロパテ ィに値を割り当てます。

102 PowerBuilder

第 5 章 グラフの操作

プロパテ ィ式 PowerBuilder プロパティ式を使って、 プロパテ ィの修正ができます。た とえば、 グラフ gr_emp の種類を縦棒グラフに変更するには、 次のコードを使用します。

dw_empinfo.Object.gr_emp.GraphType = ColGraph!

実行時にグラフのタイ トルを変更するには、次のコードを使用します。

dw_empinfo.Object.gr_emp.Title = "新しいタイ トル "

Modify メ ソ ッ ド どの環境でも、 Modify メ ソ ッ ド を使ってグラフの一部を参照できます。

PowerBuilder の例 たとえば、データウィ ンド ウ コント ロール dw_empinfoのグラフ gr_emp のタイト ルを変更するには、次のコード を使用できます。

dw_empinfo.Modify("gr_emp.Title = '新しいタイ トル '")

Web ActiveX の例 たとえば、データウィ ンド ウ コント ロール dw_empinfoのグラフ gr_emp で、 数値軸のラベル文字を変更するには、 次のコード を使用します。

dw_empinfo.Modify("gr_emp.Values.Label = '新しいラベル'");

グラフのプロパテ ィの一覧については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

グラフ要素の表示

グラフは、 タ イ トル、 凡例、 および軸で構成されます。 これらの要素には、 それぞれ表示プロパティがあ り ます。 これらの表示プロパテ ィは、 grDispAttr とい う名前の、 Graph のサブオブジェ ク ト (構造体) にプロパテ ィ と して格納されます。

たとえば、 グラフには、 タ イ トルの文字を指定する Title プロパテ ィがあ り ます。 また、 grDispAttr 型の TittleDispAttr プロパテ ィには、 フォン ト 、 サイズ、 斜体などタイ トル文字の特性を指定するプロパテ ィが入っています。

同様に、グラフにはそれぞれプロパティ を備えた 2 本の軸があ り ます。軸のプロパテ ィは、 grAxis とい う名前の、 Graph のサブオブジェ ク ト(構造体) に格納されます。 たとえば、 グラフには、 grAxis 型の Valuesプロパテ ィがあ り ます。 このプロパテ ィは、 値の自動スケーリ ングの有無、 大小の区分の数、 軸ラベルなど、 数値軸のプロパテ ィ を指定します。

データウィンドウ プログラマーズ ガイ ド 103

グラフのプロパテ ィの修正

以下にグラフのプロパティ を示します。

Graphint Heightint DepthgrGraphType GraphTypeboolean Borderstring Title…

grDispAttr TitleDispAttr, LegendDispAttr, PieDispAttrstring FaceNameint TextSizeboolean Italic…

grAxis Values, Category, Seriesboolean AutoScaleint MajorDivisionsint MinorDivisionsstring Label…

グラフ要素の参照

グラフの各部分の表示プロパティ を参照するには、 ド ッ ト (.) 表記または Describe および Modify メ ソ ッ ド を使用します。 たとえば、 グラフタ イ トルのプロパテ ィの 1 つに、 その文字が斜体かど うかを指定するものがあ り ます。 この情報は、 グラフの TitleDispAttr プロパテ ィにある boolean 型の Italic プロパテ ィに格納されています。

たとえば、データウィ ンド ウ コント ロール dw_empinfo のグラフ gr_empで、 数値軸のラベル文字を変更するには、 次のコードを使用します。

dw_empinfo.Object.gr_emp.Values.Label="新しいラベル "

グラフのプロパテ ィの一覧については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

グラフを含むデータウィ ンド ウ オブジェク ト のプロパティ は、PowerBuilderのオブジェ ク ト ブラ ウザで調べる こ とができます。 詳細については、『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

104 PowerBuilder

第 5 章 グラフの操作

データのプロパテ ィへのアクセス実行時に、グラフのデータに関連するプロパテ ィにアクセスするには、データウ ィン ド ウのグラフ用メ ソ ッ ド を使用します。 データには、 以下の 3 種類のメ ソ ッ ドが関連付けられています。

• グラフのデータに関する情報を提供する メ ソ ッ ド

• グラフからのデータを保存する メ ソ ッ ド

• データの色や模様などの表示プロパティ を変更する メ ソ ッ ド

メ ソ ッ ドの使い方 データ ウ ィ ン ド ウ コン ト ロール内のグラフに対する メ ソ ッ ド を呼び出すには、 次の構文を使用します。

DataWindowName.methodName ( "graphName", otherArguments… )

たとえば、 CategoryCount とい う メ ソ ッ ドがあ り ます。 これはグラフ内の項目数を返します。 したがって、 データ ウ ィ ン ド ウ コン ト ロールdw_sales 内にあるグラフ gr_printer の項目数を取得するには、次のよ うに記述します。

Ccount = dw_sales.CategoryCount("gr_printer")

データの情報の取得

データ ウ ィ ン ド ウ コン ト ロール内にあるグラフのデータに関する情報を、 実行時に取得するためのメ ソ ッ ドが多く用意されています。 どのメ ソ ッ ド を使用する場合でも、 データウ ィ ン ド ウ内のグラフに 初の引数と しての名前が与えられます。 データウ ィ ン ド ウ ペインタにグラフ コン ト ロールを挿入する と きは、 独自の名前を付けるこ とができます。 提示様式がグラフの場合、 そのグラフに名前を付ける必要はあり ません。

PowerBuilder 以下のメ ソ ッ ド を使用して、 データ とその表示に関する情報を取得できます。 これらのう ち一部のメ ソ ッ ドでは、 引数が参照渡しで、 要求された情報が保管されます。

データウィンドウ プログラマーズ ガイ ド 105

データのプロパテ ィへのアクセス

表 5-1: PowerBuilder データウィ ンドウ内のグラフで使用する一般的なメソ ッ ド

Web ActiveX 以下のメ ソ ッ ドを使用して、データ とその表示に関する情報を取得できます。PowerBuilder でも使用される メ ソ ッ ドの う ち、引数を参照渡しする メ ソ ッ ドでは、 追加の helper メ ソ ッ ド も使用できます。 これら helper メ ソ ッ ドは、 表の 2 列目に示されています。 詳細については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照してください。

メ ソ ッ ド 受け取る情報

CategoryCount グラフ内の項目数

CategoryName 指定された項目番号に対応する項目名

DataCount 系列内のデータ ポイン ト数

FindCategory 指定された項目名に対応する項目番号

FindSeries 指定された系列名に対応する系列番号

GetData 指定された系列と位置に対応するデータ ポイン ト値。 GetDataValue の方が柔軟性が高い

GetDataPieExplode 円グラフのスライスの展開割合

GetDataStyle 指定されたデータ ポイン トの色や模様など表示関係のプロパティ

GetDataValue 指定された系列と位置に対応するデータ ポイン ト値

GetSeriesStyle 指定された系列の色や模様などの表示関係のプロパティ

ObjectAtPointer マウスがク リ ッ ク されたと きにポイン ト されていたグラフの要素

SeriesCount グラフ内の系列数

SeriesName 指定された系列番号に対応する系列名

106 PowerBuilder

第 5 章 グラフの操作

表 5-2: Web ActiveX データウィ ンドウ内のグラフで使用する一般的なメソッ ド

メ ソ ッ ド 受け取る情報

CategoryCount グラフ内の項目数

CategoryName 指定された項目番号に対応する項目名

DataCount 系列内のデータ ポイン ト数

FindCategory 指定された項目名に対応する項目番号

FindSeries 指定された系列名に対応する系列番号

ObjectAtPointer マウスがク リ ッ ク されたと きにポイン ト されていたグラフの要素。 さ らに詳細な情報を取得する と きは、ObjectAtPointerSeries と ObjectAtPointerDataPoint を呼び出す

SeriesCount グラフ内の系列数

SeriesName 指定された系列番号に対応する系列名

データ ポイン トの外観に関する情報の取得

GetDataPieExplode 円グラフのス ラ イスの展開割合。 必要な値を検索する と きは、 GetSeriesStyleColorValue を呼び出す

GetDataStyleColor 指定データ ポイン トの色。 必要な値を検索する と きは、 GetDataStyleColorValue を呼び出す

GetDataStyleFill 指定データ ポイン トの模様。 必要な値を検索する ときは、 GetDataStyleFillPattern を呼び出す

GetDataStyleLine 指定データ ポイント の線種と 幅。 必要な値を呼び出すと きは、GetDataStyleLineWidth と GetDataStyleLineStyleを呼び出す

GetDataStyleSymbol 指定データ ポイン トのシンボル。 必要な値を検索する と きは、 GetDataStyleSymbolValue を呼び出す

データ ポイン トの値の取得

GetDataDate 指定された系列、 位置に対応する日付を持つデータポイン トの値。必要な値を検索する と きは、 GetDataDateVariagle を呼び出す

GetDataNumber 指定された系列、 位置に対応する数値データ ポイントの値。必要な値を検索する と きは、 GetDataNumberVariableを呼び出す

GetDataString 指定された系列、 位置に対応する文字列データ ポイン トの値。必要な値を検索する と きは、 GetDataStringVariable を呼び出す

データウィンドウ プログラマーズ ガイ ド 107

データのプロパテ ィへのアクセス

グラフのデータの保存PowerBuilder 以下のメ ソ ッ ド を使用して、 グラフからのデータを保存できます。

表 5-3: グラフからデータを保存するための PowerBuilder メ ソッ ド

Web ActiveX グラフの画像を、 ク リ ップボードに保存するこ とはできますが、 ファ イルにデータを保存する こ とはできません。 ファ イル システムへの書き込みは、 Active X コン ト ロールのセキュ リテ ィ違反とな り ます。

系列の外観に関する情報の取得

GetSeriesStyleColor 指定系列の色。必要な値を検索する と きは、GetSeriesStyleColorValueを呼び出す

GetSeriesStyleFill 指定系列の模様。必要な値を検索する と きは、 GetSeriesStyleFillPatternを呼び出す

GetSeriesStyleLine 指定系列で使用する線種と線幅。必要な値を検索する と きは、 GetSeriesStyleLineWidthと GetSeriesStyleLineStyle を呼び出す

GetSeriesStyleOverlay グラフの系列がオーバレイがど うか (線がほかのグラフの種類の上に表示されているかど うか) を示す。必要な値を検索すると きは、GetSeriesStyleOverlayValueを呼び出す

GetSeriesStyleSymbol 指定系列のシンボル。 必要な値を検索する と きは、GetSeriesStyleSymbolValue を呼び出す

メ ソ ッ ド 受け取る情報

メ ソ ッ ド 動作内容

Clipboard 特定のビッ ト マップ イ メージをク リ ップボードにコピーする

SaveAs 基になるグラフ内のデータをク リ ップボード またはさまざまな書式のファ イルに保存する

108 PowerBuilder

第 5 章 グラフの操作

表 5-4: グラフからデータを保存するための Web Active X メソ ッ ド

色、 模様、 そのほかのデータの修正PowerBuilder 以下のメ ソ ッ ド を使って、 グラフ内のデータの表示方法を修正できます。

表 5-5: データの表示方法を修正するための PowerBuilder メ ソ ッ ド

Web ActiveX 以下のメ ソ ッ ドを使って、グラフ内のデータの表示方法を修正します。

メ ソ ッ ド 動作内容

Clipboard 特定のビ ッ ト マ ップ イ メ ージを ク リ ップボー ド にコピーする

メ ソ ッ ド 動作内容

ResetDataColors 指定データ ポイン トの色を リ セッ トする

SetDataStyle 指定データ ポイン トの色や模様などの表示関係のプロパティ を設定する

SetSeriesStyle 系列の色や模様などの表示関係のプロパティ を設定する

データウィンドウ プログラマーズ ガイ ド 109

データのプロパテ ィへのアクセス

表 5-6: データの表示方法を修正するための Web ActiveX メ ソ ッ ド

グラフ メ ソ ッ ドの使い方

データ アクセス メ ソ ッ ドは、 グラフを作成し、 データを表示した後で呼び出します。 一部のグラフ (ページ内のデータを表示するグラフ、グループ化されたデータを表示するグラフなど)はいったん破棄され、ユーザがデータのページを進めるにつれて内部的に再作成されます。グラフの表示方法 (系列の色など) を変更しても、 グラフが再作成されたと きには、 その変更内容は失われます。

グラフ作成時のイベント

グラフが作成されてデータが表示されたと きに、 必ずデータ アクセスメ ソ ッ ドが起動されるよ うにするには、 グラフが作成されたと きに発生する イベン ト のコードで、 データ アクセス メ ソ ッ ド を呼び出します。 イベン トは次のとおりです。

• PowerBuilder イベン ト ID pbm_dwngraphcreate。 これは、 データウ ィ ン ド ウ コン ト ロールのユーザ イベン ト に割 り当てる こ とができる (後述)

• Web ActiveX onGraphCreate イベン ト

グラフ作成イベン トが発生するタイ ミ ングは、 データウ ィ ン ド ウ コント ロールによってグラフが作成されてデータが与えられた後、 そのグラフが表示される前です。 このイベン トでグラフ内のデータにアクセスすれば、 現行のデータに確実にアクセスし、 データを希望どおりに表示できます。

PowerBuilder ユーザ イベン トの設定

PowerBuilder のイベン ト ID pbm_dwngraphcreate は、データウ ィン ド ウコン ト ロールのユーザ イベン トに割り当てるこ とができます。

メ ソ ッ ド 動作内容

ResetDataColors 指定データ ポイン トの色を リセッ トする

SetDataColor 指定データ ポイン トの色を設定する

SetDataFill 指定データ ポイン トの模様を設定する

SetDataLine 指定データ ポイン トの線種と線幅を設定する

SetDataPieExplode 円グラフの扇状の部分を展開する

SetDataSymbol 指定データ ポイン トのシンボルを設定する

SetSeriesColor 指定系列の色を設定する

SetSeriesFill 指定系列の模様を設定する

SetSeriesLine 指定系列で使用する線種と線幅を設定する

SetSeriesOverlay グラフの系列がオーバレイかど うか(線がほかのグラフの種類の上に表示されているかど うか)を指定する

SetSeriesSymbol 指定系列のシンボルを設定する

110 PowerBuilder

第 5 章 グラフの操作

❖ データウィンドウ コン ト ロール内のグラフのデータ プロパテ ィにアクセスするには

1 データウ ィン ド ウ コン ト ロールをウ ィ ンド ウ内またはユーザ オブジェ ク ト内に配置し、 それをグラフが入っているデータウ ィ ンド ウ オブジェ ク トに関連付けます。

次に、 データウ ィ ン ド ウ コン ト ロールに対して、 そのデータウ ィン ド ウ コン ト ロール内にグラフが作成または変更されたと きに発生させるユーザ イベン ト を作成します。

2 メニュー バーから [挿入|イベン ト ] を選択します。

スク リプ ト ビューが表示されます。 このビューには、 新しいイベン ト を追加するためのプロ ト タ イプ フ ィールドが含まれます。

3 プロ ト タ イプ ウ ィン ド ウの 1 番目のド ロ ップダウン リ ス ト でデータウ ィ ン ド ウ コン ト ロールを選択します。

2 番目のド ロ ップダウン リ ス ト にも既存のデータウ ィ ン ド ウ イベン ト プロ ト タ イプが表示されたら、 リ ス トの先頭にスク ロールして移動し、 [( 新規イベン ト )] を選択するか、 メニュー バーからも う一度 [挿入|イベン ト ] を選択します。

4 作成するイベン トに名前を付けます。

こ こでは GraphCreate と します。

データウィンドウ プログラマーズ ガイ ド 111

データのプロパテ ィへのアクセス

5 イベン ト ID と して pbm_dwngraphcreate を選択します。

6 [OK] ボタンを選択して、 新しいユーザ イベン ト を保存します。

7 新しい GraphCreate イベン ト に対して、グラフのデータにアクセスするスク リプ ト を記述します。

GraphCreate イベン ト でデータ アクセス メ ソ ッ ド を呼び出すこ とによって、 データウ ィ ン ド ウ内のグラフが作成または変更されるたびに、 必ずデータ アクセスが発生する こ とにな り ます。

例 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)

Web ActiveX 次の文は、 データコン ト ロール dw_report 内にあるグラフ gr_quarter の系列の 1 つの前景 (塗りつぶし) 色を黒に設定します。この文は、 onGraphCreate イベン トに記述します。

dw_report.SetSeriesStyleColor("gr_quarter", 1, 0, 0);

詳細情報 グラフのデータ アクセス メ ソ ッ ドの詳細については、 『データウ ィ ンド ウ リ ファレンス』 マニュアルを参照して ください。

PowerBuilder ユーザ イベン ト の詳細については、 『PowerBuilder ユーザーズ ガイ ド』 マニュアルを参照して ください。

112 PowerBuilder

第 5 章 グラフの操作

ポイン ト アンド ク リ ッ クの使い方ユーザは、 実行時にグラフをク リ ッ クできます。 データウ ィン ド ウ コン ト ロ ールには、 ク リ ッ ク さ れた対象に関す る情報を格納するObjectAtPointer メ ソ ッ ドがあ り ます。マウス イベン ト では、このメ ソ ッド を さ まざまな方法で使用できます。 たとえば、 ObjectAtPointer 情報を使用してほかのグラフ メ ソ ッ ドを呼び出し、ク リ ッ ク したデータ ポイン ト の値をユーザに知らせる こ とができます。 この節では、 その方法について説明します。

マウス イベン ト とグラフ

ユーザがグラフをク リ ッ ク したと きにアクシ ョ ンが起動されるよ うにするには、 以下のよ うにします。

• PowerBuilder データ ウ ィ ン ド ウ コン ト ロールの Clicked ス ク リプ ト を記述する

• 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 変数に格納する (これも参照渡し される引数)

Web ActiveX 2 つの対応メ ソ ッ ドで ObjectAtPointer を使用して、 すべての情報を取得します。 ObjectAtPointer の構文は次のとおりです。

データウィンドウ プログラマーズ ガイ ド 113

ポイン ト アンド ク リ ッ クの使い方

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, DataNumdouble ValuegrObjectType ObjectTypestring SeriesName, ValueAsStringstring GraphNameGraphName = "gr_sale"

// 次のメ ソ ッ ドは、 ク リ ッ クされた系列の番号を

114 PowerBuilder

第 5 章 グラフの操作

// SeriesNum に格納し、 ク リ ッ クされたデータ ポイン トの番号を// DataNum に格納します。ObjectType = &

dw_printer.ObjectAtPointer (GraphName, &SeriesNum, DataNum)

IF ObjectType = TypeSeries! THENSeriesName = &

dw_printer.SeriesName (GraphName, SeriesNum)

MessageBox(" グラフ ", &SeriesName + "系列がク リ ッ クされました。 ")

ELSEIF ObjectType = TypeData! THENValue = 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( );

alert(dw_sales.GetSeriesName(GraphName,

データウィンドウ プログラマーズ ガイ ド 115

ポイン ト アンド ク リ ッ クの使い方

SeriesNum) +" 値は " + Value + " です。");

}}

}

116 PowerBuilder

第 6 章 Web データウィ ンドウの使い方

この章について この章では、 データベースを使った Web アプ リ ケーシ ョ ンでのWeb データウ ィ ン ド ウの使い方について説明します。

内容

Web データウィ ンドウとはWeb データウ ィ ン ド ウでは、 HTML でデータウ ィ ン ド ウを作成します。 この環境では、 Web ク ラ イアン ト上に PowerBuilder DLL やプラグインを必要とする こ とな く、 PowerBuilder データウ ィ ン ドウのデータ操作機能、 表示機能、 およびスク リプ ト機能の大部分を提供するシン ク ラ イアン ト ソ リ ューシ ョ ンを実現でき ます。Web ブラウザに表示される際のデータウ ィ ン ド ウの外観は、 データウ ィ ン ド ウ ペインタでの設計時の外観とほとんど同じです。

HTML データウィン ドウ

Web データウ ィ ン ド ウは、以前は HTML データウ ィン ド ウ と呼ばれていました。 両方と も同じテク ノ ロジを指しています。

Web データ ウ ィ ン ド ウのも っ と も簡単な使用方法は、 Web ターゲッ トの Web ページ テンプレートに Web データウ ィ ン ド ウ DTCを配置するこ とです。 Web データウ ィ ン ド ウ DTC の使い方については、『Web ターゲッ ト と JSP ターゲッ ト での作業』 マニュアルを参照して ください。

項目 ページ

Web データウ ィ ンド ウ とは 117

データウ ィ ンド ウ オブジェク ト の設計 122

データベース接続の設定 136

データウ ィ ン ド ウ オブジェ ク ト のコンポーネン ト サーバへの配布

138

Web ページ テンプレートの作成 142

ク ラ イアン ト サイ ド スク リプ トの記述 144

データウィンドウ プログラマーズ ガイ ド 117

Web データウ ィン ドウとは

Web データウィンドウの機能

Web データウ ィ ン ド ウでは、ト ランザクシ ョ ン サーバ(EAServer、MTSなど) で動作するコンポーネン ト を使用します。 この ト ランザクシ ョン サーバは、動的ページ サーバ(PowerDynamo、IIS の Microsoft ActiveServer Pages、 Tomcat の Java Server Pages など) と連動し、 Web サーバを介して Web ク ラ イアン ト と通信します。

PowerDynamo Personal Web サーバ

PowerDynamo は、 開発時の使用を目的と した Personal Web Server を備えています。 実働時には、 PowerDynamo 動的ページ サーバで CGI、NSAPI、 または ISAPI を利用する Web サーバを使用できます。

データウ ィン ド ウ COM コンポーネン トは、 ト ランザクシ ョ ン サーバを使用しないで PowerDynamo または ASP (Active Server Pages) から直接呼び出すこ と も可能ですが、 ト ランザクシ ョ ン サーバを使用するとデータベース接続と コンポーネン トのインスタンスをプールした りキャ ッシュした りできるので、一般にはパフォーマンスが向上します。

コンポーネン トのプール プロパテ ィの変更

開発中、 プール機能をオフにしておく こ とができます。 プールをオンにしている場合、 ト ランザクシ ョ ン サーバは データウ ィ ン ド ウ オブジェ ク トへの接続を保持し ます。 そのため、 データ ウ ィ ン ド ウ オブジェ ク ト の修正は、 サーバをいったん停止して再起動しないとできません。 コンポーネン トのプール プロパテ ィの変更については、 サーバの マニュアルを参照して ください。

Web データウ ィ ン ド ウで必要となる要素を開発して配布する と、 以下のよ うな処理が行われます。

1 Web ブラウザで、 ユーザがページの URL を要求します。

2 Web サーバは、 その要求をページ サーバに渡します。 ページ サーバは、 要求されたページのテンプレー ト を見つけ、 テンプレー ト内のサーバ サイ ド スク リプ ト を実行します。

3 サーバ サイ ド スク リプ トが実行される と、 ( ト ランザクシ ョ ン)サーバ コンポーネン トへの接続が確立され、サーバ コンポーネントにデータウ ィ ン ド ウ とデータベース接続に関する情報が渡されます。

118 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

4 サーバ コンポーネン ト上のメ ソ ッ ドによって、 データウ ィン ド ウに必要なデータがデータベースから読み出され、 データウ ィ ン ドウ定義、データ、および状態が HTML と JavaScript に変換されます。

5 サーバ コンポーネン トが HTML と JavaScript をページ サーバに返します。

6 ページ サーバは、 要求された Web ページのサーバ サイ ド スク リプ ト を生成された HTML と JavaScript で置き換え、 そのページをWeb サーバを介して Web ブラウザに返します。

7 ユーザは、 データウ ィ ン ド ウで対話操作を行って、 次のページを要求した りデータを更新した り します。

8 Web サーバは、 アクシ ョ ン パラ メータが追加された URL をページ サーバに渡します。

図 6-1: Web データウィ ンドウの仕組み

Web データウィンドウのサーバ コンポーネントとクライアント コントロール

Web データウ ィン ド ウには、 サーバ コンポーネン ト と ク ラ イアン ト コン ト ロールとい う主要な 2 つのコンポーネン トがあ り ます。

データウィンドウ プログラマーズ ガイ ド 119

Web データウ ィン ドウとは

サーバ コンポーネント

Web データウ ィ ン ド ウ のサーバ コンポーネン トは、データベースからデータを読み出し、そのデータ と データウ ィ ン ド ウ オブジェ ク トの定義を表す HTML と JavaScript をページ サーバに返します。 サーバ コンポーネン ト とは、 PowerBuilder のカスタム ク ラスのユーザ オブジェ クトです。 このユーザ オブジェ ク トは、 データス ト アを使用して検索と更新を行い、 EAServer または COM コンポーネン ト と して配布されます。 PowerBuilder で提供される汎用コンポーネン ト またはカスタム コンポーネン ト を使用できます。

汎用 EAServer コンポーネン トである HTMLGenerator90 は、 EAServer の DataWindow とい うパッケージにプ リ インス トールされています。また、 PowerBuilder は、 汎用 COM コンポーネン トである PowerBuilder.HTMLDataWindow を備えています。 この COM コンポーネン トは、 登録後に IIS、 MTS、 または EAServer で使用できます。 COM コンポーネン トは、 ファ イル PBDWR90J.DLL 内にあ り ます。 COM コンポーネン トの使い方については、 149 ページの「 サーバ構成の詳細」 を参照して ください。

旧バージ ョ ンの汎用コンポーネン トの使い方

旧バージ ョ ンの汎用コ ンポーネン ト HTMLGenerator も EAServer のDataWindow パッケージにインス トールされています。 EAServer は複数の PowerBuilder VM をサポート しているので、 HTMLGenerator を使用する旧バージ ョ ンの Web データウ ィ ン ド ウ アプ リ ケーシ ョ ンを実行できます。

汎用コンポーネン トには、 Web ページ テンプレート で呼び出してコンポーネン ト をインスタンス化および設定するためのメ ソ ッ ドがあ り ます。 また、 汎用コンポーネン トは、 PowerBuilder データウ ィン ド ウ コン ト ロールで使用可能なほとんどの メ ソ ッ ド を備えています。 Webデータウ ィ ン ド ウを初めて使用する と きには、 汎用コンポーネン ト を使用するこ とをお勧めします。 その後、 汎用 EAServer コンポーネン トインタフェースのメ ソ ッ ドや、 コンポーネン ト用に設計した メ ソ ッ ドのみを使用するカス タム コンポーネン ト を構築して配布でき ます。167 ページの「 カスタム サーバ コンポーネント の使い方」 を参照してください。

次の表に、全種類のデータウ ィン ド ウ サーバ コンポーネン ト を示します。

120 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

表 6-1: データウィ ンドウ サーバ コンポーネン ト とサポート されているプラッ ト フォーム

クライアン ト コン トロール

クライアン ト サイ ド スク リプ トの埋め込み Web データ ウ ィ ン ド ウのクラ イアン ト コン ト ロールとは、サーバ コンポーネン トによって生成される JavaScript と HTML です。 これらは、 Web ク ラ イアン トに返されるページに埋め込まれます。 Web ページ テンプレー ト に追加してSCRIPT タグで指定するク ラ イアン ト サイ ド スク リプ トは、 ク ラ イアン ト コン ト ロールに JavaScript と して埋め込まれます。

データ ウ ィ ンド ウ サーバコ ンポーネント

プラ ッ ト フォーム (サーバ コンポーネン ト名) 説明

汎用 EAServer(DataWindow::HTMLGenerator90)またはCOM(PowerBuilder.HTMLDataWindow)

構築済み(汎用 COM コンポーネン ト は構築済み ActiveX) 。 スタブの生成およびコンパイルは不要

コ ン テナ (複数 の デ ー タウ ィ ン ド ウ定義を含める ことが可能)

EAServer(PackageName::ComponentName、汎用 DataWindow::HTMLGenerator90 インタフェースを使用する)

Web DW コンテナ プロジェ ク ト ウ ィザードを使 用 し て 配 布 す る。サーバへの呼び出し回数を減らすこ とによ りパフォーマンスが向上する。 ス タブの生成およびコンパイルは不要

カスタム ( ハイブ リ ッド)

EAServer(PackageName::ComponentName、汎用 DataWindow::HTMLGenerator90 インタフェースを使用する)

汎用コンポーネン ト の柔 軟 性 が 向 上 す る。PowerBuilder オブジ ェク ト またはプロジェ クト ウ ィザードを使用して構築 と 配布が可能。汎用メ ソ ッ ド も使用可能

カ ス タ ム(ユ ーザ デザイン)

EAServer(PackageName::ComponentName)またはCOM(PackageName.ComponentName)

パ フ ォ ーマ ン ス と スケーラビ リ テ ィ の面では 善。 不要な汎用 メソ ッ ドがク ラ イアン トにダウンロード されないよ う にする こ とができる

データウィンドウ プログラマーズ ガイ ド 121

データウィ ンドウ オブジェク トの設計

JavaScript キャ ッシュ ク ラ イアン ト コン ト ロールで使用可能な イベン ト 、 メ ソ ッ ド、 データの更新と妥当性確認、 および新規入力データの表示書式などの機能は省略できます。 ク ラ イアン ト サイ ドの機能を追加する と、 それだけ生成される JavaScript のサイズが大き く な り ます。 ク ラ イアン ト サイ ドのメ ソ ッ ド を Web サーバの JavaScript ファ イルにキャッシュするこ とで、 Web データウ ィ ン ド ウ のページに対して生成される HTML のサイズを小さ くするこ とができます。 ブラウザがキャ ッシュ ファ イルを使用するよ うに設定されていれば、 ク ラ イアント マシンのパフォーマンスも向上します。

JavaScript キャ ッシュ を使用でき る よ う にする方法については、 132ページの「 Web データウィ ンド ウ メ ソ ッ ド への JavaScript キャッ シュの使い方」 および 『データ ウ ィ ン ド ウ リ フ ァ レンス』 マニュアルのHTMLGen プロパテ ィの説明を参照して ください。

クライアン ト サイ ド イベン トの使い方 ク ラ イアン ト コン ト ロール上で呼び出されるイベン ト と、 ク ラ イアン ト コン ト ロールの一部のメ ソ ッドでは、 サーバ コンポーネン トがページを リ ロードする必要がないので、 通常はサーバ上での処理速度よ り ク ラ イアン ト上での処理速度の方が高速です。

ク ラ イアン トの機能を有効にする方法については、124 ページの「 データウィ ンド ウ ペインタでの HTML プロパティ の設定」および 158 ページの「 HTML の生成内容の制御」 を参照して ください。 ス ク リプ トの記述については、 144 ページの「 ク ラ イアント サイ ド スク リ プト の記述」 を参照して ください。

サーバ コンポーネン ト と ク ラ イアン ト コン ト ロールで使用可能なイベン ト と メ ソ ッ ドの詳細については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルあるいは PowerBuilder のオンライン ヘルプを参照してください。

データウィ ンドウ オブジェク トの設計Web データウ ィ ン ド ウでは、 PowerBuilder データウ ィ ン ド ウの機能の大部分をサポート しています。 この節では、 Web データウ ィ ン ド ウを

大限に利用するために使用する機能について説明します。

122 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

既存のデータウィ ンドウ オブジェ ク トの使い方

既存のデータウ ィン ド ウ オブジェ ク トの多くは、 Web データウ ィ ン ドウ内で動作します。 Web データウ ィン ド ウがサポート していない機能をデータウ ィ ン ド ウ オブジェ ク ト で使用しても、 その機能は無視されます。 サポー ト されている機能だけで十分であれば、 そのデータウ ィン ド ウ オブジェ ク ト を使用してもかまいません。 例えば、 データウ ィン ド ウにグラフ コン ト ロールが含まれている場合、 グラフは無視されます。 データウ ィ ン ド ウがグラフ提示様式を使用している場合、 このデータウ ィン ド ウ オブジェ ク トは実用的とは言えません。

サポート されている機能とサポート されていない機能

表 6-2: Web データウィ ンドウでサポート されている機能とサポート されていない機能

項目 サポート されている機能

提示様式 グラフ、 リ ッチテキス ト 、 OLE、 コンポジッ ト を除くすべて。 サポー ト されていない提示様式ではデータの検索を行うだけで何も表示されない

ネ ス テ ィ ッ ドレポート

サポート されない

コン ト ロール サポー ト される コン ト ロールは、 カラム、 計算フ ィールド、 テキス ト 、 ピ クチャ、 ボタン

参照先

• 計算フ ィールド用の式については、 126 ページの 「式の使い方」 を参照

• ピクチャ コン ト ロール用の画像については、 131 ページの 「ピクチャ コン ト ロールの使い方」 を参照

• コン ト ロールへの有効な HTML の取り込みについては、 128 ページの 「コン ト ロールに有効な HTML を取り込む」 を参照

• ボタン とサポー ト されているア クシ ョ ンについては、129 ページの 「ボタン コン ト ロールの使い方」 を参照

無視されるコン ト ロールは、 グラフ、 OLE オブジェ ク ト 、OLE データベース Blob、 レポー ト 、 直線、 長方形、 丸長方形、 楕円、 グループボッ クス

データの検索 指定できる検索引数の数の上限は 16 個。 Modify メ ソ ッ ドでプロパティ を設定するか、 サーバ コンポーネン トでメソ ッ ド を呼び出すこ とによ り、フ ィルタ機能と ソート機能がサポー ト される。 ソー ト 機能はク ラ イアン ト コ ン トロールのメ ソ ッ ドによっても指定できる

QueryMode プロパテ ィ を使用したユーザ指定のクエ リ はサポート されない

データの更新 PowerBuilder におけるデータ ウ ィ ン ド ウ コン ト ロールの場合と同じ。 データウ ィ ン ド ウ オブジェ ク ト に編集可能なカラムを含めなければならない

データウィンドウ プログラマーズ ガイ ド 123

データウィ ンドウ オブジェク トの設計

データウィ ンドウ ペインタでの HTML プロパテ ィの設定

データウ ィン ド ウ ペインタでは、 4 種類の HTML プロパティ を設定できます。 初の 3 種類のプロパティは、 データウ ィ ン ド ウ オブジェ クト そのものに適用されます。 後のプロパテ ィは、 データウ ィ ン ド ウオブジェ ク ト内のビッ ト マップ、 カラム、 計算フ ィールド、 およびテキス ト コン ト ロールに適用されます。 これらのプロパテ ィはすべてスク リプ トで設定するこ と もできます。

各プロパティの詳細については、『データウ ィ ン ド ウ リ フ ァレンス』マニュアルまたはオンラ イン ヘルプで、 左列に示すプロパティ名を参照して ください。

編集様式 エディ ッ ト マス ク を除くすべてがサポー ト される。 データウ ィ ン ド ウでエディ ッ ト マス ク編集様式を使用する場合、 指定した様式は表示書式と して扱われる

ド ロ ップダウンデータウ ィ ン ドウ

ド ロ ップダウン データウ ィ ン ド ウは、 それが使用されるデータウ ィ ン ド ウ と同じ PBL 内になければならない。 ドロ ップダウン データウ ィ ン ド ウのデータはサーバ上で検索され、 表示カラムの値は HTML セレク ト リ ス ト ボッ クスに変換される

表示書式 サポート される。 色の使用も可能

入力条件則 式は、その種類によって、 ク ラ イアン ト またはサーバ上で評価できる

詳細については、 126 ページの 「式の使い方」 を参照

プロパティ式 サーバ上で評価される

レイアウ ト 高さまたは幅の自動調整を指定するプロパティ、またはコン ト ロールのサイズ変更や移動をユーザに許可するプロパティは無視される

タブ順序 HTML 4 対応のブラウザでサポート される

項目 サポート されている機能

124 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

表 6-3: データウィ ンドウ ペインタで設定できる HTML のプロパテ ィ

生成されるコードのサイズの制御

サポート されている機能によっては、 生成されるコードのサイズが大き くなる場合があ り ます。 表示書式、 入力条件則、 ク ラ イアン ト サイド スク リプ ト などの機能を使用しない場合は、 不要な機能に対応するコード をサーバ コンポーネン ト で生成しないよ う にしてパフォーマ

プロパテ ィユーザ インタ フ ェースフ ィールド 機能

HTMLDW オブジェ ク ト のプロパテ ィ ビ ューの [全般]ページ に あ る [HTMLデ ー タ ウ ィ ン ド ウ]チェ ッ ク ボ ッ ク ス。 このチェ ッ ク ボ ッ ク スを選択する と、プロパティが [Yes] に設定される

[デザイン| HTML のプレビュー] を選択して HTMLを ブラウザに表示する (つま り、 オブジェ ク ト と Webデータ ウ ィ ン ド ウのカス タム サーバ コンポーネン ト を併用する場合)。 汎用サーバコンポーネン ト によ り、 このプ ロ パテ ィ は自動的に[Yes] に設定される

HTMLTable.property

オブジェ ク ト のプロパテ ィ ビ ューの [HTMLテーブル]ページにあるすべてのフ ィールド

罫線様式、 セル幅、 パデ ィングなど、 HTML テーブルの表示特性を変更する

HTMLGen.property オブジェ ク ト のプロパテ ィ ビ ューの [HTML生 成] ペ ー ジ と[JavaScript 生成]ページにあ るすべてのフ ィールド ([JavaScript 生成]ペー ジ の ボ タ ン か らJavaScript 生成ウ ィザード を起動する こ と も可能)

ページに表示する 行数を指定、 特定のブラ ウ ザまたはHTML バージョ ン用の HTMLを生成、ページに組み込むクラ イアント サイ ド の機能を選択、および JavaScript キャッシュ を設定し てパフォーマンスを向上させる

HTML.property オブジェ ク ト 内のカ ラム、計算フ ィールド、テキス ト、またはピクチャコン ト ロールのプロパティ ビューの [HTML]ページにあ るすべてのフ ィールド

Web ページのマスタまたは詳細ページの作成時に一般的に使用するハイパー リ ンク と検索引数を設定、 コント ロールの内容を HTML 形式に変換して挿入するかどう かを指定、 およびコン トロールに追加する HTML を指定する

データウィンドウ プログラマーズ ガイ ド 125

データウィ ンドウ オブジェク トの設計

ンスを向上させる こ とができます。 これらの機能のオン / オフを切り替えるには、 データウ ィ ン ド ウ ペインタの [HTML 生成] プロパテ ィページかス ク リ プ ト を使用し ます。 詳細については、 158 ページの

「 HTML の生成内容の制御」 を参照して ください。

ク ラ イアン ト サイ ドのメ ソ ッ ド を JavaScript (JS) フ ァ イルにキャ ッシュして、 生成されるコードのサイズを小さ く し、 サーバ サイ ド と クラ イアン ト サイ ドのパフ ォーマンスを向上させる こ と もでき ます。JavaScript キャ ッシュを使用しない場合には、Web データウ ィ ン ド ウがク ラ イアン ト ブラウザに取り込まれるたびに、 データ ウ ィ ン ド ウ メソ ッ ドに対応する JavaScript コードがサーバ上で生成されて、 ク ラ イアン トにダウンロード されます。キャ ッシュ された JS ファ イルを参照するよ うにデータウ ィ ン ド ウ プロパテ ィ を設定する と、 ファ イル内に定義された メ ソ ッ ドは、 ページ サーバ (およびク ライアン ト ブラウザ) に送信される Web データウ ィン ド ウ ページ内で HTML 形式で生成されません。

詳細については、 132 ページの「 Web データウィ ンド ウ メ ソ ッ ド へのJavaScript キャッ シュの使い方」 を参照して ください。

式の使い方

通常、入力条件則と計算フ ィールドに対する式は、 JavaScript に変換されて、 ク ラ イアン ト ブラウザ内で評価されます。 データ入力の検証として、 新規データに関するフ ィードバッ クが直ちにユーザに返されます。

式の中にはサーバ上での評価が必要なものがあ り ます。 これは、 評価に現在のページのデータだけでな く全体の行が必要なためか、 または式が JavaScript に変換されないこ とによ り ます。

次の関数が含まれる式は、 サーバ上で評価されます。

• Sum、 Max、 Average、 First などの集計関数

• Case 関数

• External 関数

計算フ ィールドの中で集計関数を使用している場合、 その値はサーバ側で計算され、 ク ラ イアン ト上に表示されます。 ユーザがデータの編集を行っても、 値は更新されません。 ページを リ ロードするアクシ ョンが発生した場合、 変更されたデータを基に値が再度計算されます。

126 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

ProfileInt 関数と ProfileString 関数はデフォルト値を返す

データウ ィン ド ウの式関数 ProfileInt と ProfileString は、 ク ラ イアン ト側で式を評価する場合にはユーザの INI ファ イルを検査しません。 この検査を行う とセキュ リ テ ィ違反になるためです。 これらの関数は常にデフォル ト値を返します。

外国語文字セッ トの使い方

Web データ ウ ィ ン ド ウのデータ ソースでアクセン ト記号のある外国語が使用されている場合、 文字が適切に表示されるよ うに、 生成される HTML ページの文字セッ ト を変更しなければならないこ とがあ ります。 これは、 外国語テキス トでデータを更新する場合にも当てはまり ます。 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 プロパテ ィ によ って変更する こ と も可能です。 デフォル ト では、 サーバのコードセッ トが使用されます。

データのリンクの実現

カラム、 テキス ト 、 計算フ ィールド、 およびピクチャ コン ト ロールをハイパーリ ンクにするためのプロパティ を設定できます。ペインタで、コン ト ロールを選択し、 プロパティ ビューで [HTML] タブを選択します。アプ リ ケーシ ョ ンを配布する と きには、指定した URL が有効でなければな り ません。

ペインタで リ ンク情報を設定するのではな く、 サーバ コンポーネン トのメ ソ ッ ドを呼び出して、カラムに HTML プロパテ ィ を設定するこ ともできます。 詳細については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルの 「SetColumnLink メ ソ ッ ド」 を参照して ください。

データウィンドウ プログラマーズ ガイ ド 127

データウィ ンドウ オブジェク トの設計

Web データウィンドウ内のコン トロールに対応する HTML の挿入コン トロールに有効な HTML を取り込む

テキス ト コン ト ロール、 カラム、 計算フ ィールドなど、 データウ ィ ンド ウ オブジェ ク トの一部のコン ト ロールに、有効な HTML を取り込むこ とができます。 データウ ィン ド ウに対応する HTML の生成時に、 コン ト ロールの内容を HTML 形式に変換して挿入するには、 コン ト ロールの ValueIsHTML プロパテ ィ を TRUE に設定します。 たとえば、 テキス ト コン ト ロールのテキス ト プロパテ ィが <I>Name</I> である と します。 次の表に、 このテキス トが、 生成される HTML にどのよ うに挿入され、ブラウザではどのよ うに表示されるのかをそれぞれ示します。

表 6-4: ValueIsHTML プロパテ ィの表示テキス トへの影響

検査は行われない

HTML ジェネレータは、データウ ィ ン ド ウ オブジェ ク ト のコン ト ロールに取り込む HTML の有効性を検査しません。HTML が有効でない場合、 データウ ィ ン ド ウは正し く表示されないこ とがあ り ます。

コン ト ロールへの HTML の追加

AppendedHTML プロパティ を使用する と、 HTML ジェネレータによ り生成される HTML に独自の HTML を追加できます。 この機能を使用する と、 属性と イベン ト アクシ ョ ンを指定できます。 AppendedHTMLプロパテ ィ値に指定した HTML は、データウ ィン ド ウ コン ト ロールの挿入時に生成された構文に追加されます。 追加される位置は、 データウ ィン ド ウ コン ト ロールの HTML 要素の右山カッコ (>) の前です。

検査は行われない

HTML ジェネレータは、データウ ィ ン ド ウ オブジェ ク ト のコン ト ロールに追加する HTML の有効性を検査しません。HTML が有効でない場合、 データウ ィ ン ド ウは正し く表示されないこ とがあ り ます。

また、 データウ ィ ン ド ウ コン ト ロールに対してすでに生成されているイベン ト ハンド ラ名が、 ク ラ イアン ト サイ ドのイベン ト ハンド ラ として使用されないよ うにしておく必要があ り ます。 これらには次のものがあ り ます。

ValueIsHTML 生成される HTML ソース ブラウザでの表示

TRUE <I>Name</I> NameFALSE &lt;I&gt;Name&lt;/I&gt; <I>Name</I>

128 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

表 6-5: 生成済みイベン ト ハンドラ名

ボタン コン ト ロールとピクチャ コン ト ロールの使い方ボタン コン ト ロールの使い方

データウ ィ ン ド ウ オブジェ ク ト にボタン コン ト ロールが含まれている場合、そのボタンは Web データウ ィン ド ウ ク ラ イアン ト コン ト ロールの Form 要素において HTML の button 要素とな り ます。ボタン アクシ ョ ンは、 ボタンの Clicked イベン トに対する JavaScript コード とな ります。 コードを自分で記述する必要はあ り ません。

次の処理に対するボタン コン ト ロールを使用できます。

• ナビゲーシ ョ ン 初のページ、 後のページ、 次のページ、 前のページ ア ク シ ョ ンが関連付けられたボタ ンを使用する こ とで、ユーザは結果セッ トにおいてほかの行に移動できます。

• データの取得と編集 検索、 更新、 行の挿入、 行の削除、 および行の追加ア ク シ ョ ンが関連付けられたボタ ンを使用する こ と で、ユーザはデータを管理するこ とができます。 データウ ィン ド ウ オブジェ ク ト の中に更新可能なカラムが存在していなければな り ません。

次のボタンはサポー ト されていないため無視されます。

データウィ ンドウ コン ト ロール 生成済みイベン ト ハンド ラ名

エディ ッ ト 、 エディ ッ ト マス ク、 ドロ ップダウン リ ス ト ボッ クス、 またはド ロ ップダウン データウ ィ ン ド ウ

onFocus、 onClick、 onChange、 およびonBlur

チェ ッ クボッ クスまたはラジオボタン

onFocus、 onClick、 および onBlur

テキス ト ボッ ク ス、 リ ンクが指定されたピクチャ、 またはボタン

onClick

キャンセル クエ リ消去

フ ィルタ クエ リ モード

プレビュー クエ リ ソート

プレビュー ルーラー 名前を付けて行を保存

印刷 ソー ト

データウィンドウ プログラマーズ ガイ ド 129

データウィ ンドウ オブジェク トの設計

SelfLink プロパテ ィ を設定してナビゲーシ ョン ボタンを有効にする

ボタン アクシ ョ ンによって情報がサーバに送り返される と、 サーバのスク リプ ト がアクシ ョ ンをデータウ ィン ド ウ データに適用します。 その後、 HTML ページが リ ロード されます。 このループを完全なものにするために、 データウ ィ ン ド ウ オブジェ ク トに SelfLink プロパティ を設定して、 リ ロードするページをサーバが認識できるよ うにする必要があ り ます。

この設定は、 データウ ィ ン ド ウ ペインタのデータ ウ ィ ン ド ウ プロパテ ィ ビューの [HTML 生成] タブで行うか、 スク リプ ト で行う こ とができます。 指定する値は、 リ ロード されるアプ リ ケーシ ョ ン サーバのテンプレート またはファ イルの名前 (一般には、 現行のドキュ メ ン トの名前) にな り ます。 データウ ィ ン ド ウで検索引数を使用する場合、その検索引数は SelfLinkArgs プロパテ ィの中で指定されていなければな り ません。

詳細については、 162 ページの「 リ ロ ード さ れたページにページ固有のデータを渡す」 および 『データウ ィン ド ウ リ フ ァレンス』 マニュアルの 「SetSelfLink メ ソ ッ ド」 を参照して ください。 PowerBuilder HTMLエディ タでの データウ ィ ン ド ウ オブジェ ク ト (ボタン、 カラムなど)への リ ンクの設定については、『Web ターゲッ ト と JSP ターゲッ ト での作業』 マニュアルの Web データウ ィ ン ド ウ DTC に関する章を参照して ください。

ボタン用の GIF および JPEG 画像

データウ ィン ド ウ オブジェ ク トのボタンに使用する画像は、 Web ブラウザには JPEG、 GIF、 または BMP 画像と して取り込まれます。 JPEGまたは GIF 画像を使用すれば、 画像はすべてのブラウザで表示されます。 PowerBuilder には、 Retrieve、 Update、 PageNext など一般的に使用する ボ タ ン用に GIF 画像が用意されています。 これ ら の画像は、Sybase¥Shared¥PowerBuilder ディ レ ク ト リ の DWACTION.JAR フ ァ イル内にあ り ます。

Web ブラ ウザの HTML ページで画像を使用でき る よ う にするには、JAR ファ イルを解凍し、その画像ファ イルをページ サーバに配置して、ファ イルが格納されるディ レ ク ト リ を HTMLGen.ResourceBase プロパテ ィに設定します。

ボタンの代替方法 :クライアン ト コン トロールのメ ソ ッ ドの使用

ボタン コン ト ロールがない既存のデータウ ィ ン ド ウ オブジェ ク ト を使用する場合は、データウ ィ ン ド ウ オブジェ ク ト を編集し、ボタン コン ト ロールがある新しいバージ ョ ンを保存するこ とができます。 ただし、 データウ ィ ン ド ウ オブジェ ク ト を既存のアプ リ ケーシ ョ ン と共有し、 データウ ィ ン ド ウ オブジェ ク ト を編集するこ とが現実的でない場合には、Web データウ ィン ド ウ ク ラ イアン ト コン ト ロールのメ ソ ッ ドを呼び出すための HTML ボタンを Web ページに含める こ とができます。

130 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

サポー ト されている各ボタン アクシ ョ ンに対応する ク ラ イアン ト コン ト ロールのメ ソ ッ ドがあ り ます。 詳細については、144 ページの「 クラ イアント サイ ド スク リ プト の記述」 を参照して ください。

ピクチャ コン ト ロールの使い方

ブラウザがサポー トするタ イプの画像を使用できます。 もっ と も一般的なものは JPEG や GIF です。 相対パスを使用する と、 画像の配布が簡単に行えます。

Web ブラウザの HTML ページで画像を使用できるよ うにするには、その画像ファ イルを Web サーバ上のディ レク ト リ に配置し、 そのディ レク ト リ を HTMLGen.ResourceBase プロパティに設定します。 この設定は、データウ ィ ン ド ウ ペインタのデータウ ィ ンド ウ プロパティ ビューの [JavaScript 生成] ページで行うか、 次のよ うにスク リプ ト を使用して行う こ とができます。

dwMine.Modify("DataWindow.HTMLGen.ResourceBase='C:¥Sybase¥MyApp¥Images'")

また、ResourceBase プロパティには、 JavaScript インクルード ファ イルの場所も指定します。 132 ページの「 Web データウィ ンド ウ メ ソ ッ ドへの JavaScript キャッ シュの使い方」 を参照して ください。

画像ファイルの配布場所

画像ファ イルは、 コンポーネン ト サーバではな く、 Web サーバに配布する必要があ り ます。 これらのサーバが別々のコンピュータにインストールされている場合は、画像ファ イルは データウ ィン ド ウ オブジェク ト を含む PBL ではな く、アプ リ ケーシ ョ ンのテンプレート と HTMLファ イルに属します。

特定のブラウザ用の HTML 生成の指定ブラウザと HTML バージ ョ ンについて

Web データウ ィ ン ド ウでは、各種ブラウザに対して 適な HTML を生成できます。データウ ィン ド ウ プロパテ ィ シー トの [HTML 生成] タブの [ブラウザ] オプシ ョ ンを使用すれば、 データウ ィ ン ド ウが各種ブラウザでどのよ うに表示されるかをプレビューできます。 ブラウザが認識されない場合は、HTML 生成で使用する HTML バージ ョ ンを指定するこ と もできます。

実行時に、サーバ サイ ド スク リプ トは現在ク ライアン トが使用しているブラウザを特定し、 それに関する情報をサーバ コンポーネン トに渡す必要があ り ます。 詳細については、 159 ページの「 SetBrowser」 および 『データ ウ ィ ン ド ウ リ フ ァ レンス』 マニュアルの 「SetBrowser メソ ッ ド」 を参照して ください。

データウィンドウ プログラマーズ ガイ ド 131

データウィ ンドウ オブジェク トの設計

Netscape の絶対位置の使い方

Netscape は、 Internet Explorer とは異な り、絶対位置を実装しています。Netscape ブラウザの絶対位置を使用してデータウ ィ ン ド ウの書式設定をするには、データウ ィ ン ド ウ HTMLGen.NetscapeLayers プロパティ をTRUE に設定する必要があ り ます。 この設定を行うには、データウ ィ ンド ウ ペインタで、 データウ ィン ド ウ プロパテ ィ ビューの [HTML 生成] ページにある [Netscape 用のレイヤを使用] チェ ッ クボッ クスを選択します。 また、 スク リプ トで、 HTML ジェネレータ (PowerBuilderに付属する PBDWRMT.PBL の nv_remote_datawindow) の Generate メソ ッ ド を呼び出す前にデータウ ィ ン ド ウ Modify メ ソ ッ ド を呼び出し設定するこ と もできます。

デフォルト のデータウ ィン ド ウ HTML ジェネレータは、 ク ラ イアン トブラ ウザの種類とバージ ョ ンを判断する コード を生成します。 バージ ョ ン 4.0 よ り前の Netscape ブラウザでは、NetscapeLayers プロパテ ィの設定の有無にかかわらず、データウ ィ ン ド ウは HTML テーブルと して設定されます。

Netscape での制約

絶対位置を使用する Netscape ブラ ウザの一部の機能は、 InternetExplorer で使用でき る機能と一致しない場合があ り ます。 た とえば、NT マシン上で動作する Netscape ブラウザでは、 データウ ィ ン ド ウ カラム間を 〔Tab〕 で移動する こ とはできませんが、 Solaris マシン上で動作する Netscape ブラウザでは 〔Tab〕 で移動できます。

Web データウィンドウ メ ソ ッ ドへの JavaScript キャッシュの使い方

Web データウ ィ ン ド ウの JavaScript ジェネレータ ウ ィザードを使用する と、 Web データウ ィ ン ド ウの ク ラ イアン ト サイ ドの JavaScript メソ ッ ドをすべて含む JS ファ イルを設計時に作成できます。ウ ィザードは、 新規作成 ダイアログボッ クスの [ツール] タブか、 データウ ィ ンド ウ ペインタのデータウ ィン ド ウ プロパテ ィ ビューの [JavaScript 生成] ページから起動できます。

サーバ サイ ド とクライアン ト サイ ドでのパフォーマンスの向上

キャ ッシュ された JS フ ァ イルを参照するよ うにデータウ ィ ン ド ウ プロパテ ィ を設定する と、 ページ サーバ と ク ラ イアン ト ブラウザに送信される Web データウ ィン ド ウ ページにおいて、ファ イル内に定義されたメ ソ ッ ドは、 HTML 形式では生成されません。

132 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

JavaScript キャ ッシュを使用する と、 ク ラ イアン ト ブラウザがキャ ッシュ ファ イルを使用するよ うに設定されている場合には、 ク ラ イアント マシンのパフォーマンスが向上します。 その場合、 ブラウザは Webサーバから JS ファ イルをキャ ッシュにロード し、アプ リ ケーシ ョ ン内の Web データウ ィ ン ド ウ ページすべてでこれらのファ イルが使用可能にな り ます。ブラウザがそのキャッシュから JS ファ イルを検出できない場合には、ブラウザは Web サーバからファ イルを リ ロードするため、 ク ラ イアン ト サイ ドでのパフォーマンスの向上は得られません。

Web データウィ ンドウの JavaScript ジェネレータ ウィザード

Web データウ ィン ド ウの JavaScript ジェネレータ ウ ィザードでは、 JSファ イルを一度に 1 つだけ作成できます。ウ ィザードには、1 つのファイルにすべての Web データウ ィ ン ド ウ メ ソ ッ ド を含めるオプシ ョ ンが用意されていますが、ウ ィザードを使用するたびに各 JS ファ イルに含める メ ソ ッ ドの種類を指定する こ と もできます。 各メ ソ ッ ドは、 次のデータウ ィ ン ド ウ HTML プロパティに対応します。

表 6-6: キャ ッシュ フ ァイルに対して JavaScript ジェネレータ ウィザードによって生成されるメ ソ ッ ド

以上のプロパテ ィはすべて省略できます。 データ ウ ィ ン ド ウ プロパテ ィ ビューの [JavaScript 生成] ページで各プロパテ ィ を設定して、ウ ィザードで作成するフ ァ イルを値と して選択する こ とができます。作成されたファ イルはウ ィザードによって登録され、 データウ ィ ン ドウ プロパテ ィ ビューのド ロ ップダウン リ ス ト から選択できるよ うにな り ます。

HTMLGen. プ ロパテ ィ キャッシュ ファ イルの内容

CommonJSFile すべてのデータウ ィ ンド ウで使用される メ ソ ッ ド

DateJSFile 日時の書式設定を持つ、 データウ ィ ン ド ウで使用される メ ソ ッ ド

NumberJSFile 数値の書式設定を持つ、 データウ ィ ン ド ウで使用される メ ソ ッ ド

StringJSFile 文字列の書式設定を持つ、 データウ ィ ン ド ウで使用される メ ソ ッ ド

UserJSFile ユーザによ り 定義された、 ク ラ イ アン ト サイ ドのJavaScript メ ソ ッ ド。 これらは、 Web データウ ィ ンドウの JavaScript ジェネレータ ウ ィザードでは作成できない (以下の 「ユーザ定義 JavaScript メ ソ ッ ド」 を参照)

データウィンドウ プログラマーズ ガイ ド 133

データウィ ンドウ オブジェク トの設計

ResourceBase プロパテ ィの使い方

Web アプリ ケーシ ョ ンのキャ ッシュ ファ イルはすべて、Web サーバに配布する必要があ り ます。 キャ ッ シュ された JS フ ァ イルの場所を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'")

ユーザ定義 JavaScript メ ソ ッ ド

独自の、クライアント サイド の JavaScript メ ソ ッ ド を格納したファイルを参照するこ と もできます。 この機能を使用するには、 そのファ イル名をデータウィ ンド ウの HTMLGen.UserJSFile プロパティ に指定し、 そのファイルが Web サーバで使用できるよ う にしておく 必要があり ます。 ウ ィザード で作成した JavaScript ファイルの場合は、 HTMLGen.ResourceBase プロパティ を使用してファイルの場所を設定するか、 ファ イルへの完全パスをプロパティ 値と して設定すること ができます。

完全パスをプロパティ値と して設定する場合は、 データウ ィン ド ウ ペインタかスク リプ ト を使用します。 次のスク リプ トは、 ユーザ定義 JSファ イルを MyMethods.JS に設定します。

134 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

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 構文の生成またはコン ト ロールへの追加については、 128 ページの「 Webデータウィ ンド ウ内のコント ロールに対応する HTML の挿入」 を参照して ください。

データウィ ンドウのプレビュー

Web データ ウ ィ ン ド ウ アプ リ ケーシ ョ ンでデータ ウ ィ ン ド ウがどのよ うに表示されるかを確認するには、HTML プレビューを使用します。

❖ Web データウィ ンドウの HTML プレビューを取得するには

1 データウ ィン ド ウ プロパティ シート の [全般] ページで、 [HTMLデータウ ィン ド ウ] チェ ッ クボッ クスをオンにします。

[HTML データウ ィン ド ウ] チェ ッ クボッ ク スをオンにしていない場合、 プレビューでは、 ボタンや入力条件則、 またはそのほかのスク リプ ト を持たない HTML テーブルと してデータが表示されます。

2 [HTML 生成] ページで、 [1 ページの段の数] の値を指定します。

これによって、 データウ ィ ン ド ウ オブジェ ク トの PageSize プロパテ ィが設定されます。データを 1 段のみ表示する場合は、1 を指定します。

3 特定のク ラ イアン ト構成に応じてデータウ ィ ン ド ウをプレビューする場合は、 [ブラ ウザ] に値を指定し、 [HTML バージ ョ ン] に1 を指定します。

4 メニュ ーバーから、 [デザイン| HTML のプレビュー] を選択します。

データウィンドウ プログラマーズ ガイ ド 135

データベース接続の設定

メニュー項目が無効になっている場合は、 プレビュー ビューを開く とそのメニュー項目が有効にな り ます。

5 データを入力して、 入力条件則が期待どおりに機能するかど うかを確認します。

6 ボタンを使用して別のページに移動します。

データベース接続の設定Web データウ ィ ン ド ウを使用する場合、Web データウ ィ ン ド ウ サーバコ ンポーネン ト がデータベース と通信し ます。 そのため、 そのコ ンポーネン ト が動作するサーバ上でデータベース接続を設定する必要があ り ます。

使用するデータベース接続ソフ トウェア

EAServer をコンポーネン ト サーバと して使用する場合、 ODBC、 OpenClient、JDBC、OCI などの接続ソフ ト ウェアを使う こ とができます。その場合、 使用するデータ ソースに対して接続キャ ッシュを設定する必要があ り ます。 次の「 EAServer での接続キャッ シュの作成」 を参照して ください。

MTS をコンポーネン ト サーバと して使用する場合は、ODBC を使用して接続プール機能と ト ランザクシ ョ ン管理機能を利用しなければな りません。 その場合、 MTS と IIS はサービス と して動作するので、 データウ ィ ン ド ウ オブジェ ク ト のデータ ソースは、MTS または IIS のシステム DSN と して構成しなければな り ません。

データウ ィ ン ド ウ オブジェ ク ト を定義する際には、 『データベース との接続』 マニュアルに記載されているタイプのデータベース接続ソフト ウェアを使用できます。 サーバ上でのデータベース接続の設定を簡単にするには、 データウ ィン ド ウ ペインタで、 データウ ィン ド ウの配布時と同じ種類の接続を使用します。 たとえば、 Open Client 接続を使用して EAServer でデータウ ィ ン ド ウを使用する場合も、データウ ィ ンド ウ ペインタで Open Client を使用する と便利です。

136 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

Adaptive Server Enterprise の使い方

PowerBuilder と EAServer では、 Open Client を使用して Adaptive ServerEnterprise に接続する際の CT-Lib ソフ ト ウェアの使い方が少し異な ります。 PowerBuilder 開発環境では、 SYC ネイテ ィブ データベース インタ フ ェース を使用してデータベースに接続し ますが、 EAServer でAdaptive Server Enterprise データベースに接続する場合は、 SYJ データベース インタフェースを使用しなければな り ません。

EAServer での接続キャ ッシュの作成

EAServer で HTMLGenerator90 コンポーネン ト (または独自のカスタムコンポーネン ト ) を使用するには、 使用するデータベース用の接続キャ ッシュを定義する必要があ り ます。

❖ EAServer 接続キャ ッシュを作成するには

1 EAServer と Jaguar Manager を起動します。

ご使用のプラ ッ ト フォーム用の 『EAServer ク ッ クブッ ク』 マニュアルで説明される手順に従って ください。

2 適切なデータベース環境設定ソフ ト ウェアを使用して、 接続の種類を定義します。

Windows 環境での ODBC 接続の場合、ODBC コン ト ロール パネルを開き、 データベースに対してデータ ソース名 (DSN) を定義します。 Adaptive Server Anywhere 8 をインス トールしている場合は、定義済みのユーザ DSN を使用して ASA のサンプル データベースに接続し、 テス トする こ とができます。 EAServer がサービス と して動作している場合は、 ユーザ DSN ではな く、 システム DSN を使用しなければな り ません。UNIX 環境での操作については、 ド ライバのマニュアルを参照して ください。

3 Jaguar Manager の左側のペインで、サーバ名の下にある[ 接続キャッシュ ] ノ ード を右ク リ ッ ク し 、[ 接続キャッ シュを新規作成] を選択します。

4 接続キャ ッシュを作成 ダイアログボッ クスが表示されます。

5 キャ ッシュの名前を入力し、 [OK] を ク リ ッ ク します。 名前を後で変更するこ とはできません。

6 接続キャ ッシュのプロパテ ィ ダイアログボッ クスの [一般] タブで、 データベース接続情報を指定し、 [ド ラ イバ] タブで、 使用する ド ラ イバを指定します。

データウィンドウ プログラマーズ ガイ ド 137

データウィ ンドウ オブジェク トのコンポーネン ト サーバへの配布

Windows 環境での ODBC 接続の場合 : [一般] タブにある [データベース接続] の [サーバ名] に対して、 手順 1 で定義した DSNを指定します。 ユーザ名またはパスワードが DSN で指定されている場合は、 あらためて指定する必要はあ り ません。

[ド ラ イバ] タブで、 [ODBC] ラジオボタンを ク リ ッ ク し、 [DLLまたはク ラス名] に対して 「ODBC32.dll」 を指定します。

それ以外の接続の場合 : ご使用のプラ ッ ト フォーム用の『EAServerク ッ クブッ ク』 マニュアルを参照して ください。

7 [キャ ッシュ] タブの [名前によるキャ ッシュ ・ アクセスを許可]チェ ッ クボッ ク スを選択します。

8 [一般] タブの [ リ フレ ッシュ] をク リ ッ ク します。[ リ フレッシュ]ボタンは、 サーバ ノードからアクセスする接続キャ ッシュのプロパティ ダイアログボッ クスでのみ使用できます。

9 接続をテス トするには、 [Ping] を ク リ ッ ク します。

接続キャッシュの設定の詳細については、 EAServer のマニュアルを参照して ください。

データウィ ンドウ オブジェク トのコンポーネン ト サーバへの配布

Web データウ ィ ン ド ウ アプ リ ケーシ ョ ンを実行する場合、 使用するデータウ ィ ン ド ウ オブジェ ク ト の定義がコンポーネン ト サーバ上で使用できなければな り ません。 そのためには、 オブジェ ク トの定義を含む PBL または PBD ファ イルをサーバにコピーします。 EAServer を使用する場合は、 ファ イルはサーバのパスに存在しなければな り ません。 サーバ コンポーネン トがサービスを提供する場合は、 システム パスに存在しなければな り ません。 MTS と IIS は常にサービスを提供します。 したがって、 ファ イルは MTS または IIS サーバのシステム パスに存在しなければな り ません。

開発環境の設定の詳細については、 149 ページの「 サーバ構成の詳細」を参照して ください。

138 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

Web データウィ ンドウ コンテナ プロジェク ト ウィザード

PowerBuilder では、Web データウ ィ ン ド ウ コンテナ プロジェ ク ト ウ ィザードを使用するこ とで、ラ イブラ リ リ ス ト内のデータウ ィン ド ウ オブジェ ク ト をすべて配布 PBL に組み込んで、 カスタム バージ ョ ンのWeb データウ ィ ン ド ウ サーバ コンポーネン ト (HTMLGenerator90) をEAServer に配布できます。

プ リ インス トールされている HTMLGenerator90 コンポーネン ト ではな く、 カスタム コンポーネン ト を使用するので、 Jaguar Manager でコンポーネン トのプロパティ を設定できます。プロパテ ィ を設定する と、コンポーネン トの構成に必要なメ ソ ッ ド呼び出しの回数を減らすこ とができるので、 パフォーマンス、 管理性、 およびスケーラビ リ テ ィが向上します。

ウィザードの使い方 必要なデータウ ィン ド ウ オブジェ ク ト を定義したら、新規作成 ダイアログボッ ク スの [プロジェ ク ト ] ページから Web DW コンテナ ウ ィザードを起動して、 ウ ィザードの指示に従って操作します。

ウ ィザードで選択する項目は、ほかの EAServer コンポーネン トに対して選択する項目と類似しています。 たとえば、 インスタンスのプーリング機能をサポー トするかど うかまたは、 ラ イブ編集機能をサポートするかど うかを選択します。 パッケージと コンポーネン ト には自由に名前を付けるこ とができますが、パッケージ DataWindow (プ リ インストールされた HTMLGenerator90 コンポーネン ト を含むパッケージの名前) に名前を指定する こ とはできません。 コンポーネン トの種類または ト ランザクシ ョ ン サポー ト プロパテ ィは設定できません。

Web データウ ィ ン ド ウ コンテナ プロジェ ク ト の作成では、コンポーネン ト のい くつかのプロパテ ィ が事前に設定されます。 これらの設定は、ス ク リプ トか Jaguar Manager を使用して行う こ と もできます。ウ ィザード またはプロジェ ク ト ペインタでデータベース プロフ ァ イルを指定して、com.sybase.datawindow.trans.dbms やそのほかのデータベースト ランザクシ ョ ン プロパティ を設定できます。コンポーネン ト メ ソ ッドの呼び出しをサーバ ログに記述する場合は、 [ ト レースを有効にする] を選択して com.sybase.datawindow.trace プロパテ ィ を設定します。

接続キャ ッシュ

プロファ イルを指定する と、 コンポーネン トに対してデータベース トランザクシ ョ ン プロパテ ィが設定されますが、 そのコンポーネン トがアクセスするデータベースに対しては、 Jaguar Manager で接続キャ ッシュを作成する必要があ り ます。

データウィンドウ プログラマーズ ガイ ド 139

データウィ ンドウ オブジェク トのコンポーネン ト サーバへの配布

サービス クラス カスタム ク ラスのユーザ オブジェ ク ト をプロジェ ク トに追加して、必要と される特殊な処理を実行できます。 このオブジェ ク トは、 サービス ク ラス と して機能します。 カスタム ク ラスのユーザ オブジェ ク トは、 データウ ィ ン ド ウ オブジェク ト と同じ ラ イブラ リか、 対象のラ イブラ リ リ ス ト に存在しなければな り ません。Web データウ ィン ド ウ コンテナ プロジェ ク ト を作成する と きは、 プロジェ ク ト ペインタの オブジェク ト の選択 ダイアログボッ クスでク ラスを選択します。

詳細については、 178 ページの「 サービス ク ラ スの使い方」 を参照して ください。

コンテナ コンポーネン トのインスタンス化

コンテナ コンポーネン トのインスタンスを作成する場合は、 コンポーネン ト用の Java プロキシを提供するか、DataWindow/HTMLGenerator90を 後の引数と して CreateComponent メ ソ ッ ドに渡さなければな り ません。 これによ り、 そのコンポーネン ト では提供されたプロキシが汎用コンポーネン ト に対して使用されるよ うにな り ます。 次に例を示します。

dwObj = java.CreateComponent("ContainerPkg/ContComponent","iiop://testMachine:9000", "Jagadmin", "","DataWindow/HTMLGenerator90" );

以上の方法は、 カスタム コンポーネン ト をインスタンス化する方法と同じです。 カスタム コンポーネン トの詳細については、 174 ページの

「 カスタム コンポーネント のインスタンス化」 を参照して ください。

コンテナ コンポーネン トからのデータウィンドウの選択

コ ンテナ コ ンポーネン ト か らデータ ウ ィ ン ド ウ を選択するには、SetDWObject メ ソ ッ ドではな く SetDWObjectEx メ ソ ッ ド を使用しなければな り ません。

// データウィ ンドウのみ必要です。 パッケージは接続時に // すでに指定されています。retVal = dwObj.SetDWObjectEx("d_mydw"); document.write("SetDwObject = " + retVal);

SetDWObject メ ソ ッ ドの詳細については、 157 ページの「 データウ ィンド ウ オブジェク ト のロード 」 および 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

Web データウィ ンドウ DTC とのコンポーネン トの使い方

Web/JSP データウ ィ ン ド ウ ページ ウ ィザード を使用して新しい Webページを作成する際、 コンテナ コンポーネン ト を選択できます。 ウ ィザードの [Web DW コンポーネン ト形式の選択] ページで、 [カスタムWeb DW コンポーネン ト ] ラジオボタンを選択します。 [次へ] を クリ ッ クする と、コンポーネン ト名と、Web ページに取り込む、コンポーネン ト内のデータウ ィ ン ド ウをたずねる メ ッセージが表示されます。

140 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

Sybase Web データウ ィ ン ド ウ DTC プロパティ シー トの [データウ ィン ド ウ] ページでは、 コンテナ コンポーネン ト と、 Web ページで使用する、 そのコンテナ コンポーネン ト内のデータウ ィ ン ド ウを指定するこ と もできます。 [データウ ィ ン ド ウ] ページでコンテナ コンポーネン ト を選択する と、Sybase Web データウ ィ ン ド ウ DTC プロパテ ィ シートの [HTML ジェネレータ] ページでそのコンポーネン トが自動的に選択されます。必要であれば、コンテナ コンポーネン ト のみ使用して、PBL、 PSR、 または SRD ファ イルから選択したデータウ ィ ン ド ウに対応する HTML を生成できます。

❖ コンテナ コンポーネン ト を Web データウィ ンドウ DTC で使用するには

1 Sybase Web データウ ィン ド ウ DTC プロパテ ィ シートの [データウ ィン ド ウ]ページで、[Web データウ ィン ド ウ コンテナ コンポーネン ト ] ラジオボタンを選択します。

2 [コ ンポーネン ト ] テキス ト ボッ ク スの横の [参照] ボタン (...)を ク リ ッ ク します。

Web データウ ィ ン ド ウ コンテナ コンポーネン ト ダイアログボックスが表示されます。 このダイアログボッ クスには、 PowerBuilderに定義された各 EAServer プロファ イルのノードを持つリ ス ト ボックスがあ り ます。

3 使用するコンテナ コンポーネン ト を含むサーバおよびコンポーネン トのノードを展開します。コンテナ コンポーネン ト を選択し、 [OK] を ク リ ッ ク します。

Sybase Web データウ ィ ン ド ウ DTC プロパテ ィ シート が再表示されます。 このプロパテ ィ シー トの [データウ ィ ン ド ウ] ページの[サーバ] および [コンポーネン ト ] テキス トボッ ク スに、 サーバ名およびコンテナ パッケージ コンテナ コンポーネン ト が表示されます。

4 [データウ ィ ン ド ウ] ド ロ ップダウン リ ス トのデータウ ィ ン ド ウを選択します。

このド ロ ップダウン リ ス トには、 コンテナ コンポーネン ト内のすべてのデータウ ィン ド ウが表示されます。

5 (オプシ ョ ン) [接続] タブを ク リ ッ ク し、 コンポーネン ト によって格納されるデータベース接続プロパテ ィ を変更します。

テス ト の場合は、 この操作をお勧めします。 接続プロパテ ィは、Jaguar Manager から直接変更できます。

6 (オプシ ョ ン) [コン ト ロール] タブをク リ ッ ク し、 データウ ィ ンド ウ と と もに格納される重みを変更します。

データウィンドウ プログラマーズ ガイ ド 141

Web ページ テンプレートの作成

7 [OK] を ク リ ッ ク します。

Web ページ テンプレートの作成以下では、 Web ページ テンプレート の各種作成方法について説明します。 Web ターゲッ ト では、 以下のすべての方法を使用できます。

Web データウィ ンドウ DTC の使い方

Web データウ ィ ン ド ウ DTC を使用する と、 EAServer に接続してサーバ コンポーネン ト を構成するために必要なコードを記述しな く ても、簡単にデータウ ィン ド ウを Web ページに追加できます。DTC はサーバにアクセスし、 生成される HTML 用の Web ページ テンプレート を作成します。 ウ ィザード またはプロパテ ィ シー トで、 データウ ィン ド ウオブジェ ク ト と HTML ジェネレータ コンポーネン ト を参照する DTCを設定します。

ページに埋め込まれる Web データウ ィ ン ド ウ DTC は、 EAServer への接続、 データベース接続の確立、 および HTML へのページ変換に必要なコードを含みます。 生成されたスク リプ ト では、 Web ターゲッ ト オブジェ ク ト モデルを使用し ます。 4GL Web ページを使用する場合、Web ターゲッ ト オブジェ ク ト モデルに組み込まれる、 サーバ サイ ドスク リプティ ングへの EAServer の拡張を使用できます。 4GL Web ページで Web データウ ィ ン ド ウをハンド コードするこ とはできません。

DTC の使用方法については、 『Web ターゲッ ト と JSP ターゲッ トでの作業』 マニュアルを参照して ください。

Web ターゲッ ト オブジェク ト モデルの使い方

Web データウ ィン ド ウ DTC では、 Web ターゲッ ト オブジェク ト モデルのオブジェ ク ト セッ ト を使用します。 Web データウ ィ ン ド ウ DTCが提供する ものよ り さ らに高い柔軟性を求める場合は、 Web ターゲット オブジェ ク ト モデルを使用してサーバ コンポーネン トのインスタンス化と操作を行う、 独自のサーバ サイ ド ス ク リ プ ト を作成できます。

たとえば、 次のスク リプ ト では、 データウ ィ ン ド ウ オブジェ ク ト名とその名前を含む PBL を定義し、 データベースおよび EAServer 接続パラ メータを設定します。 次に、 サーバ コンポーネン ト をインスタンス化し、 ク ラ イアン ト コン ト ロール プロパテ ィ を指定して、HTML を生成します。

<!--SCRIPT var dwMine_pbl = "htgenex.pbl";

// データウィ ンドウの名前を // page パラ メータ (定義されていれば) から取得

142 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

var dwMine_name = psDocument.GetParam("dwName");if (dwMine_name + "" == "undefined"){

dwMine_name = "d_tabular_emp";}

// データウィン ドウ オブジェ ク トの変数を設定dwSrcLoc = new PSDataWindowSourceClass(

dwMine_pbl, dwMine_name);

// データベース接続パラ メータを設定// 接続失敗時にはエラーを返すように、// ConnectOption を設定dwDbParm = new PSConnectionParmsClass(

"ConnectString='DSN=EAS Demo DB V3;UID=dba;PWD=sql', ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT'");

// EAServer 接続パラ メータを設定dwJagParm = new PSJaguarConnection("localhost:9000",

"jagadmin", "", "DataWindow/HTMLGenerator90", false);

// Web データウィン ドウ サーバ コンポーネン ト を作成dwMine = new PSDataWindowClass("dwMine", false,

dwJagParm, dwSrcLoc, dwDbParm);

// クライアン ト コン ト ロールに含める機能を指定dwMine.SetWeight(true, true, true, true);

// 生成された HTML を取得dwMine.Generate("dwName");-->

以上の例では、 PSDataWindowClass オブジェ ク ト を使用して、 サーバコンポーネン ト を作成しています。 EAServer を使用する と、 サーバ サイ ド イベン ト と追加メ ソ ッ ド を利用できる PSWebDataWindowClass オブジェ ク ト を使用できます。

Web データウ ィ ン ド ウ DTC と Web ターゲッ ト オブジェク ト モデルの詳細については、『Web ターゲッ ト と JSP ターゲッ ト での作業』 マニュアルを参照して ください。 Web ターゲッ ト オブジェ ク ト モデル ク ラスの メ ソ ッ ド と イベン ト の詳細については、 『Web ターゲッ ト と JSPターゲッ ト リ ファレンス』 マニュアルを参照して ください。

データウィンドウ プログラマーズ ガイ ド 143

クライアン ト サイ ド スク リプ トの記述

DTC コードの拡張 Web データウ ィ ン ド ウ DTC によって生成されたコードは、データウ ィン ド ウ ペインタで データウ ィ ン ド ウ オブジェ ク ト プロパテ ィ を変更するか、 DTC プロパテ ィを変更してコードを再生成する こ とで修正できます。 コードのカスタマイズが必要な場合は、 生成されたコードをエディ タの HTML ソース ビューで変更できます。 Web ページを再生成する際に、 変更箇所が上書き されるのを防ぐには、 コードを指定する METADATA タグを削除します。

Web データウィ ンドウ サーバ コンポーネン トのメ ソ ッ ドの呼び出し

DTC または Web ターゲッ ト オブジェ ク ト モデルを使用するかわ りに、 HTML エディ タや Web ターゲッ トの HTML エディ タを使用して、サーバ コンポーネン ト を インスタンス化してそのメ ソ ッ ド を直接呼び出すコードを記述できます。 154 ページの「 サーバ コンポーネントのインスタンス化と 設定」 を参照して ください。

クライアン ト サイ ド スク リプ トの記述イベントへの応答 新たに入力されたデータの追加処理を行う場合や、 ユーザのデータ と

の対話の制御を強化する場合は、 Web データウ ィ ン ド ウ ク ラ イアン トコン ト ロール内のイベン ト を有効にします。そのためには、データウ ィン ド ウ ペインタの [HTML 生成] ページでク ラ イアン ト でのイベン ト(ClientEvents プロパティ) を設定するか、 サーバ サイ ド ス ク リプ トでSetWeight メ ソ ッ ド を呼び出します。

ク ラ イアン ト コン ト ロールは、 複数のイベン ト をサポー ト しています。

以上のイベン トには、 PowerBuilder データウ ィ ン ド ウ コン ト ロールのイベン ト と類似した引数と、 同一の リ ターン コードがあ り ます。 詳細については、 『データウ ィ ン ド ウ リ フ ァ レンス』 マニュアルまたはオンライン ヘルプを参照して ください。

イベン トの実装 ク ラ イアン ト コン ト ロールのイベン ト用のス ク リ プ ト を記述するには、 関数を定義します。 関数名は、 コン ト ロール名と イベン ト名をアンダースコアで区切って指定します。

HTMLGenObjectName_eventname ( arguments )

ButtonClicking ItemError RowFocusChangingButtonClicked ItemFocusChanged UpdateStartClicked OnSubmitItemChanged RowFocusChanged

144 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

コン ト ロール名は、 SetHTMLObjectName メ ソ ッ ド を使用するか、データ ウ ィ ン ド ウ ペイ ン タの [HTML 生成] ページでオブジェ ク ト 名(ObjectName プロパテ ィ) を使用して指定した名前です。 ス ク リ プ トは、 SCRIPT タグで囲まなければな り ません。 ク ラ イアン ト ス ク リプトが有効になっている場合、 スク リプ トにク ラ イアン ト メ ソ ッ ドを含めるこ とができます (後述)。

次の例では、 ユーザが前の行に戻ろ う と した場合に、 フォーカスが変更されないよ う に し ます。 こ こ では、 データ ウ ィ ン ド ウの名前はdwMine です。

<SCRIPT Language=JavaScript>function dwMine_RowFocusChanging(curRow, newRow){

if (newRow < curRow) { return 1; }}</SCRIPT>

スク リプ トは、 Web ページ テンプレー ト内の、 どの位置にでも配置できます。 Web ターゲッ ト を使用する場合は、 関数を定義してイベン トコード をラ ップする必要はあ り ません。 エディ タで直接ク ラ イアン トサイ ドのイベン ト用のコードを記述するには、 ツールバーの左端にある ド ロ ップダウン リ ス トのデータウ ィ ン ド ウ コン ト ロール名と、中央のド ロ ップダウン リ ス トのイベン ト名を選択します。

クライアン ト メ ソッドの呼び出し

ク ラ イアン ト コン ト ロールのメ ソ ッ ド を呼び出すためのス ク リ プ トを記述するには、 ク ラ イアン トのスク リプ ト機能を有効にする必要があ り ます。 そのためには、 データウ ィ ンド ウ ペインタでク ライアン トでのスク リプ ト利用可能 (ClientScriptable プロパテ ィ) を設定するか、サーバ サイ ド スク リプ トで SetWeight メ ソ ッ ド を呼び出します。

一部のク ライアン ト メ ソ ッ ドは、ボタン コン ト ロールのアクシ ョ ン と同じ機能を実行します。データウ ィン ド ウ オブジェ ク トがボタン コント ロールを使用して、 ス ク ロールと更新を実現する場合は、 ク ラ イアン ト ス ク リプ ト を記述する必要がないこ と もあ り ます。

ク ラ イアン ト側では次のメ ソ ッ ド を使用できます。 アスタ リ ス クが付いたメ ソ ッ ドは、 Web ページを強制的に リ ロード します。

AcceptText GetItem ScrollPriorPage *DeletedCount GetItemStatus SetItemDeleteRow * InsertRow * SetColumnGetClickedColumn ModifiedCount SetRowGetClickedRow Retrieve * SetSortGetColumn RowCount Sort *GetFullContext ScrollFirstPage * Update *

データウィンドウ プログラマーズ ガイ ド 145

クライアン ト サイ ド スク リプ トの記述

GetNextModifiedGetNextModified メ ソ ッ ドは、現在のページで変更された行のみを検索します。

以上のメ ソ ッ ドの詳細については、 『データウ ィン ド ウ リ ファレンス』マニュアルまたはオンライン ヘルプを参照して ください。

次の例では、 ボタンを持つフォームを示しています。 このボタンをクリ ッ クする と、 サーバ上でデータが更新されます。

<FORM NAME="update"><INPUT type="button" value="Update" onClick="{dwMine.Update();}">

これによ り、 データウ ィ ン ド ウ オブジェ ク ト のボタン コン ト ロールに、 更新アクシ ョ ン と同じ機能が得られます。

1 ページに複数の データウィン ドウ オブジェク トがある場合

同じ 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();

GetNextModified ScrollLastPage *GetRow ScrollNextPage *

146 PowerBuilder

第 6 章 Web データウ ィン ドウの使い方

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>

データウィンドウ プログラマーズ ガイ ド 147

クライアン ト サイ ド スク リプ トの記述

148 PowerBuilder

第 7 章 Web データウィ ンドウのサーバ サイド プロセス

この章について この章では、 設計、 プログラ ミ ング テクニッ ク、 およびサーバ サイ ドの Web データウ ィ ン ド ウ コンポーネン ト の設定要件の概要について説明します。

内容

サーバ構成の詳細Web データウ ィ ン ド ウで使用するサーバと ク ラ イアン トは、 同じマシン上でも異なるマシン上で も動作し ます。 次の図に、 Webサーバとページ サーバが同じマシン上にあ り、 コンポーネン トサーバとデータベースが別のマシン上にある一般的な構成を示します。 同じコンピュータ上で複数またはすべてのサーバが動作する こ と も可能です。 開発環境では、 ク ラ イアン ト ブラウザも同じコンピュータ上に置く こ とができます。

項目 ページ

サーバ構成の詳細 149

サーバ コンポーネン トのインスタンス化と設定 154

カスタム サーバ コンポーネン トの使い方 167

サービス ク ラスの使い方 178

データウィンドウ プログラマーズ ガイ ド 149

サーバ構成の詳細

図 7-1: Web ターゲッ トの一般的な構成

PowerDynamo での Web データウィ ンドウの使い方

EAServer と PowerDynamo を同じコンピュータにインス トールする と、ほとんどの設定は自動的に行われ、 さ らに PowerBuilder Web ターゲット ウ ィザードを使用して設定作業を追加して行えます。

ただし、 独自のカスタム ク ラス ユーザ オブジェ ク ト を設計する場合は、 ス タ ブ を生成 し て コ ンパ イ ル し、 コ ンパ イ ル後の ス タ ブがPowerDynamo のク ラ ス パスに含まれる よ う にしておかなければな りません。

CLASSPATH 環境変数

Web サーバをサービス と して実行しない場合に、 ユーザ CLASSPATH環境変数が存在する と きは、 この変数には、 Web サーバと コンポーネン ト サーバとの通信に必要なすべてのク ラ スへのパスを指定しておく必要があ り ます。 この変数には、 Sybase¥EAServer¥html¥classes ディレク ト リ と、 Web ページ (別のディ レ ク ト リ にある場合) で使用するために生成し た コ ンポーネン ト ス タ ブへのパス を指定し ます。EAServer をインス トールする と、 サーバのパス情報は、 ユーザ変数にではな く、 システム CLASSPATH 変数にのみ格納されます。

150 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

Tomcat での Web データウィンドウの使い方

Web DataWindows を使用して、 Tomcat サーバに配布する JSP ページのEAServer コンポーネン トにアクセスするには、Tomcat の起動時に使用されるク ラス パスに、次の JAR ファ イルと ク ラスを追加する必要があり ます。

• pbjdbc1290.jar

• jconn2.jar

• easclient.jar

• easj2ee.jar

• EAServer_home¥html¥classes

• EAServer_home¥java¥classes

EAServer_home は、 Web データ ウ ィ ン ド ウ コンポーネン ト がインストールされている EAServer へのフル パスを示します。 Tomcat のク ラス パスに必要なファ イルを追加するには、 Tomcat の bin ディ レ ク ト リの catalina.bat ファ イルを編集します。

COM コンポーネン トでの Web データウィンドウの使い方

Web データウ ィ ン ド ウは、 Microsoft 製サーバで使用する こ と もできますが、 その場合はよ り多くの設定作業が必要とな り ます。 MTS またはIIS では、 PowerDynamo や ASP などのページ サーバから呼び出されるオー ト メーシ ョ ン メ ソ ッ ド を使用して、 COM バージ ョ ンの汎用サーバ コンポーネン ト (PowerBuilder.HTMLDataWindow) にアクセスします。 たとえば、 ASP から汎用 COM コンポーネン ト をインスタンス化するには、 次のよ うにします。

dwMine = Server.CreateObject("PowerBuilder.HTMLDataWindow")

COM サーバ コンポーネン トは、PBDWR90J.DLL 内にあ り ます。また、PBDWRMT.PBL のサンプル ソース コードを基にして、 独自のカスタム ク ラス ユーザ オブジェ ク ト を記述するこ と もできます。

Web データウ ィン ド ウ サーバ コンポーネン ト を使用する Web ページの作成の詳細については、 154 ページの「 サーバ コンポーネント のインスタンス化と 設定」 を参照して ください。

COM サーバ コンポーネン ト を登録し、 MTS または IIS サーバ コンピュータ上のデータウ ィ ン ド ウ オブジェ ク ト を含む PBL または PBDと PowerBuilder 実行時ファ イルをインス トールする必要があ り ます。

ト ランザクシ ョ ン サーバの設定作業

次の表に、 ト ランザクシ ョ ン サーバ上で実行する必要がある設定作業の要約を示します。

データウィンドウ プログラマーズ ガイ ド 151

サーバ構成の詳細

表 7-1: ト ランザクシ ョ ン サーバの設定作業

ページ サーバの設定作業

次の表に、 ページ サーバ上で実行する必要がある設定作業の要約を示します。

サーバ タスク

EAServer、IIS、または MTS

サーバ コンポーネン トがサービスを提供できる状態にある場合、 データ ウ ィ ン ド ウ オブジェ ク ト の定義を含むPBL、 PBD、 SRD、 または PSR を、 EAServer サーバのパス またはシステム パスのディ レ ク ト リ にコ ピーする。MTS または IIS の場合は常にこの操作を行う

EAServer データソースに対して DSN と接続キャ ッシュを設定する

IIS または MTS • 以下の PowerBuilder 実行時ファ イルをシステム パスにコピーする。PBVM90J.DLL、 LIBJCC.DLL、 PBDWE90J.DLL、PBODB90J.DLL、 PBODB90.INI

• 汎用 COM サーバ コンポーネン ト を含むファ イルをシステム パスにコピーして登録する

regsvr32.exe pbdwr90J.dll

• 独自のカスタム ク ラス ユーザ オブジェ ク ト を設計し、COM サーバ コンポーネン ト を構築した場合、コンポーネン トの DLL をサーバにコピーし、登録する必要がある

• 必要であれば、 DBMS 用の ODBC ド ラ イバをインストールし、ODBC アド ミニス ト レータを使用して、データウ ィ ン ド ウ オブジェ ク ト の ODBC データ ソースをシステム DSN と して定義する

MTS MTS がサーバ コンポーネン トのホス トで、 IIS とは異なる コンピュータ上で動作している場合は、 MTS Explorerを使用してク ライアン ト インス トール パッケージを作成し、 それを IIS マシン上にインス トールする。 詳細については、 MTS のマニュアルを参照

152 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

表 7-2: ページ サーバの設定作業

サーバ タスク

PowerDynamo または ASP

HTML ページ、 スク リ プ ト 、 画像、 およびそのほかのアプ リ ケーシ ョ ン ファ イルをページ サーバにコピーする。PowerDynamo または ASP 用の Web ターゲッ ト配布コント ローラを使ってこれらのファ イルをサーバにコピーできる

JSP JSP、 カスタム タグ ラ イブラ リ、 ス ク リプ ト 、 画像、 およびそのほかのファ イルをページ サーバにコピーする。JSP 用の Web ターゲッ ト配布コン ト ローラを使ってこれらのファ イルをサーバにコピーできる

ページに追加する カス タ ム タ グ ラ イブ ラ リ は、 Web-Inf¥tld ディ レク ト リに配置され、 Web ターゲッ ト と併せて配布されますが、 タグ ラ イブラ リで必要と される ク ラスやアーカイブは手作業でコピーする必要がある。 タグライブラ リのク ラス ファ イルとアーカイブ ファ イルは、それぞれ Web-Inf¥classes ディ レク ト リ 、 Web-Inf¥lib ディレク ト リにコピーする必要がある Web データウ ィ ン ド ウのカス タム タグ ラ イブラ リ の詳細については、『Web ターゲッ ト と JSP ターゲッ ト リ ファレンス』 マニュアル 「カスタム タグ リ フ ァレンス」 の章を参照

(任 意 の コ ンポーネン ト サーバ を 使用す る)PowerDynamo

Web サイ ト を作成し、 使用するデータベース用の接続プロファイルを、URL で使用する Web サイト のパス名に関連付けるマッ ピングを Sybase Central で定義する。 PowerDynamoWeb サイ ト ターゲッ ト ウィ ザード ではこのタスク が自動的に行われる

(EAServer をコンポーネン ト サーバと して使用する)PowerDynamo

PowerDynamo と EAServer が同じコンピュータにインストールされていない場合は、 以下の操作を行う

• EAServer ク ラ イアン ト サブディ レク ト リの JAGCLIENT.EXE を PowerDynamo サーバにコピーし、そのファ イルを実行して、 Java ランタ イムを選択する

• Sybase¥Shared¥Sun¥jdknnn¥bin をシステムの PATH 環境変数に追加する

• Sybase¥Shared¥Sun¥jdknnn¥lib¥classes.zip を CLASSPATH環境変数に追加する

Sybase Central では、 PowerDynamo 環境設定ユーテ ィ リテ ィで [設定] フォルダを開き、 Sun Java VM が選択されているかど うかをチェ ッ クする。 デフォル トでは選択されている

データウィンドウ プログラマーズ ガイ ド 153

サーバ コンポーネン トのインスタンス化と設定

サーバ コンポーネン トのインスタンス化と設定Web データウ ィ ン ド ウ DTC または Web ターゲッ ト オブジェ ク ト モデルを使用しない場合は、Web データウ ィ ン ド ウ サーバ コンポーネン トのインスタンスを作成するコードを記述し、 そのサーバ コンポーネント のメ ソ ッ ド を呼び出して Web データウ ィ ン ド ウ アプ リ ケーシ ョ ンを作成できます。

Web データウ ィ ン ド ウ サーバ コンポーネン トの種類の詳細については、 119 ページの「 Web データウィ ンド ウのサーバ コンポーネント とク ラ イアント コント ロール」 を参照して ください。 Web ターゲッ ト オブジェク ト モデルとその 4GL 拡張の詳細については、 『Web ターゲット と JSP ターゲッ トでの作業』 マニュアルを参照して ください。

2 つのメ ソッ ド セット

汎用 Web データウ ィ ン ド ウ サーバ コンポーネン ト では、2 つのメ ソ ッド セッ トが使用できます。一方はほかのデータウ ィ ン ド ウ コン ト ロールに対して使用可能な メ ソ ッ ドで、 も う一方はコンポーネン トの設定と HTML の生成に使用する メ ソ ッ ドです。

EAServer をコンポーネン ト サーバと して使用する) ASP

ASP と EAServer が同じコンピュータにインス トールされていない場合は、 以下の操作を行う

• EAServer ク ラ イアン ト サブディ レク ト リの JAGCLIENT.EXE を ASP サーバにコピーし、 そのファイルを実行して、 ActiveX ランタ イムを選択する

• PowerBuilder がインス トールされているコンピュータの Sybase¥Shared¥PowerBuilder ディ レ ク ト リ から ASPサーバに、 PBDWR90.TLB と PBDWR90.REG をコピーする

• PBDWR90.REG の HKEY_CLASSES_ROOT¥TypeLib 行を編集して、ASP サーバ上で PBDWR90.TLB ファ イルの場所が正し く示されるよ うにする

• PBDWR90.REG をダブルク リ ッ ク し て、 その情報をWindows レジス ト リ にインス トールする

独自のカスタム ク ラス ユーザ オブジェ ク ト を設計した場合、 Jaguar Manager でコンポーネン ト用の TLB およびREG ファ イルを生成し、これらのファ イルを ASP サーバに登録する。 詳細については、 『EAServer プログ ラマーズ ・ ガイ ド』 マニュアルの ActiveX ク ラ イアン トの作成に関する章を参照

サーバ タスク

154 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

データウィンドウ コン ト ロールのメ ソ ッ ド

汎用サーバ コンポーネン ト でサポー ト されるデータウ ィ ン ド ウ コント ロールのメ ソ ッ ドには、 ソー ト機能、 フ ィルタ機能、 検証機能、 取得、 および設定用の各メ ソ ッ ドがあ り ます。 これらのメ ソ ッ ドのいずれかをサーバ コンポーネン ト上で呼び出すと、 サーバはブラウザ内のページを リ ロード します。

複数の構文を持つメ ソ ッ ドには、 多重定義の制限を避けるために、 構文ご とに異なるフォームがあ り ます。 たとえば、 ClearValues メ ソ ッ ドは引数と して文字列を取り、 ClearValuesByColNum メ ソ ッ ドは数値を取り ます。

サポー ト されているデータ ウ ィ ン ド ウ コン ト ロールの メ ソ ッ ドの リス ト については、 『データウ ィ ン ド ウ リ フ ァ レンス』 マニュアルまたはオンライン ヘルプを参照して ください。

サーバ コンポーネン トのメ ソ ッ ドを調べる

システム ツ リーの [コンポーネン ト ] ページまたは Jaguar Manager で、汎用 EAServer コンポーネン ト メ ソ ッ ド を表示できます。 OLE ビューアで COM サーバ コンポーネン ト の メ ソ ッ ド を調べる こ とができます。 オブジェ ク ト ブラウザの [OLE] タブにある [OLE オー ト メーシ ョン オブジェ ク ト ] リ ス ト 、 または Microsoft OLE/COM Object Viewer の[Automation Objects] リ ス ト で、 「PowerBuilder.HTMLDataWindow」 を探します。

設定および生成メ ソッド

ほかにも、 コンポーネン トの設定、 データの検索、 Web ページで必要な固定値の設定、 および HTML の生成用のメ ソ ッ ドがあ り ます。

カスタム サーバ コンポーネン ト を使用する場合は、設定作業を追加して行う必要があ り ます。 詳細については、167 ページの「 カスタム サーバ コンポーネント の使い方」 を参照して ください。

大文字と小文字を使用したメ ソ ッ ド名

汎用 EAServer サーバ コンポーネン トのメ ソ ッ ド名には、 大文字と小文字のどちらでも使用できます。 この節で示す例でも、 大文字と小文字からなる名前を使用します。 独自のサーバ コンポーネン ト を記述する場合は、 生成するコンポーネン トのメ ソ ッ ド名はすべて小文字にしま す。 こ こ で 説明す る メ ソ ッ ド が必要 な場合は、 サ ン プルのPBDWRMT.PBL を開始点と して使用できます。 汎用 COM コンポーネン トのメ ソ ッ ド名もすべて小文字にします。

スク リプ ト を記述する手順

サーバ サイ ド スク リプ トでは、 次のタスクをコード化します。

1 コンポーネン ト をインスタンス化します。

データウィンドウ プログラマーズ ガイ ド 155

サーバ コンポーネン トのインスタンス化と設定

2 データウ ィン ド ウ オブジェ ク ト をロード します。

3 生成する内容を制御します。 たとえば、組み込む機能と対象のブラウザを指定します。

4 データベース接続を指定して、 データを検索します。

5 リ ロード されたページにページ固有のデータを渡します。

6 サーバ コンポーネン トにユーザ アクシ ョ ン情報を渡します。

7 生成された HTML をページ テンプレートに挿入します。

以下の節では、 これらの各タスクに対応するサンプル コードを示します。 コード例のほとんどは、 EAServer コンポーネン トのインスタンス化と設定に使用する DynaScript コードです。 ASP の例もあ り ますが、ASP のサーバ サイ ド スク リプ トのコードは、こ こで示す DynaScript の例と類似しています。

これらの例で使用する メ ソ ッ ドの詳細については、『データウ ィン ド ウリ フ ァレンス』 マニュアルまたはオンライン ヘルプを参照して ください。

コンポーネン トのインスタンス化CreateComponent PowerDynamo では、Java オブジェクト の CreateComponentメ ソッ ド を使用して、 EAServer コンポーネント のインスタンスを作成します。 初の引数は、 EAServer パッケージとモジュールの名前です。 汎用コンポーネン ト の場合、 この値は DataWindow/HTMLGenerator90 です。 追加の引数で、 EAServer の URL およびアカウン ト の ID とパスワードを指定します。

後の引数は、 カスタム コンポーネン ト をインスタンス化する場合にのみ必要です。 カス タム コンポーネン ト のインス タンス化については、 169 ページの「 EAServer でのカスタム サーバ コンポーネント の作成」 を参照して ください。

次の文では、 dwMine と呼ばれるコンポーネン ト インスタンスを作成します。 dwMine が Null の場合、 作成は失敗し、 PowerDynamo サイ トオブジェ ク トはエラー情報を返します。

dwMine = java.CreateComponent("DataWindow/HTMLGenerator90", "iiop://testMachine:9000", "Jagadmin", "" );

if( dwMine == null ) {

document.Writeln( " エラー メ ッセージ : " +site.GetErrorInfo() + "<BR>");

156 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

}

CreateObject ASP では、登録されている COM コンポーネン トの プログラム ID を使用して、そのコンポーネン トにアクセスできます。 たとえば、 汎用コンポーネン ト を使用する場合は、 次のよ うにします。

dwMine = Server.CreateObject("PowerBuilder.HTMLDataWindow")

データウィ ンドウ オブジェク トのロードSetDWObject 次の手順では、 データウ ィ ン ド ウ オブジェ ク ト とデータウ ィ ン ド ウ オブジェ ク ト の名前を含む PBD または PBL ファ イルを指定し ます。 フ ァ イルの場所を指定する必要はあ り ませんが、 コ ンポーネン ト サーバではサーバのパス上のディ レ ク ト リ内で、 そのファイルが使用可能でなければな り ません。 また、 EAServer コンポーネントがサービスを提供できる状態にある場合、 あるいは IIS または MTSを使用している場合は、 システム パス上のディ レ ク ト リ内で使用可能でなければな り ません。

retVal = dwMine.SetDWObject ("htgenex.pbl","d_tabular_dept");

次の DynaScript の例では、 戻 り値を調べて、 HTML ページにエラーメ ッセージを書き込みます。 ASP の場合は、 document.Writeln ではな くResponse.Write を使用します。

if (retVal != 1){

document.Writeln("SetDWObject は失敗しました " + retVal + "<BR>");

}

次のファ イルを指定するこ と もできます。

• ソース定義 (SRD) ファ イル。 このファ イルには、データウ ィ ン ドウ オブジェ ク トのソースが含まれる。 ラ イブラ リ ペインタかシステム ツ リーで、 データウ ィ ン ド ウ定義を SRD フ ァ イルにエク スポートできる

• Powersoft レポート (PSR) ファ イル。 このファ イルには、 データウ ィ ン ド ウ オブジェ ク ト とデータが含まれる。 PSR フ ァ イルは、データウ ィン ド ウ ペインタから保存できる

• 複数のデータウ ィン ド ウ オブジェ ク ト定義を含む、 EAServer のデータウ ィン ド ウ コンテナ コンポーネン ト

データウィンドウ プログラマーズ ガイ ド 157

サーバ コンポーネン トのインスタンス化と設定

SRD ファ イルと PSR ファ イルには、データウ ィ ン ド ウ名と して空の文字列を指定します。

dwServer.SetDWObject("myreport.psr", "" );

データウ ィン ド ウ コンテナ コンポーネン トの場合、SetDWObjectEx メソ ッ ドを使用します。

dwServer.SetDWObjectEx ("d_emp");

HTML の生成内容の制御クライアン ト コン トロールの機能の無効化

SetWeight サーバ コンポーネン トは、 Web データウ ィ ン ド ウ ク ラ イアン ト オブジェ ク トに対応する HTML と JavaScript を大量に生成します。 ただし、 ク ラ イアン ト側でコン ト ロールのサイズを小さ くするために、 不要な機能のコードを省略するよ うにコンポーネン トに指示できます。 たとえば、 以下の機能のコードは省略できます。

• データの更新

• 新たに入力されたデータの検証

• ク ラ イアン ト サイ ド イベン ト

• ク ラ イアン ト サイ ド スク リプ ト でのク ラ イアン ト コン ト ロールのメ ソ ッ ドの呼び出し許可

• 新たに入力されたデータへの表示書式の適用

これらの機能を無効にするには、データウ ィン ド ウ ペインタの[HTML生成] プロパテ ィ ページか、 SetWeight メ ソ ッ ド を使用します。 特定の引数を False にする と、 その機能に対応する コードは生成されません。

次の文を実行する と、 すべての機能が有効にな り ます。

dwMine.SetWeight(true, true, true, true, true);

データの更新を False にする と、検証コード と表示書式コードはいずれも作成されません。 次の文では、 データ更新に関する 初の引数がFalse なので、 2 番目と 5 番目の引数にどのよ う な値が指定されていても関係あ り ません。

dwMine.SetWeight(false, false, true, true, false);

次の文では、 ク ラ イアン ト サイ ドでのス ク リ プ ト記述をオフにします。

dwMine.SetWeight(true, true, true, false, true);

158 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

データ更新と表示書式を設定する と、 大量のコードがク ライアン ト サイ ド コン ト ロールに追加されます。 また、 日付処理の場合も追加コードが生成されます。 ク ラ イアン ト コン ト ロールのサイズを 小限に抑えるには、 必要な機能のみをオンにし、 データウ ィ ンド ウ オブジェ クトで日付カラムを使用しないよ うにしておいて ください。

クライアン ト コン トロール名の指定

SetHTMLObjectName Web データ ウ ィ ン ド ウ ク ラ イ アン ト コ ン トロールに名前を付ける必要があ り ます。 この名前は、 ページ パラ メータ と ク ラ イアン ト サイ ド イベン トに使用されます。Web ページに複数の Web データウ ィ ン ド ウ ク ラ イアン ト コン ト ロールが存在する場合、各コン ト ロールの名前は一意でなければな り ません。

次のコードでは、 サーバ コンポーネン ト変数と ク ラ イアン ト コン トロールに同じ名前を使用します。

dwMine.SetHTMLObjectName ("dwMine");

ブラウザに対する HTML の 適化

SetBrowser Web データウ ィ ン ド ウは、 特定のブラウザとバージ ョ ンに 適化された HTML を生成します。特に、 Microsoft および Netscapeのブラウザ用のコードを生成できます。 異なる ク ラ イアン トによってサーバ コンポーネン トがインスタンス化されるたびに、 ブラウザが異なる場合があ り ます。 そのため、 ブラウザに関する情報をデータウ ィン ド ウ ペインタにプ リセッ ト しておく こ とはできません。サーバ サイド スク リプ ト で対象とするブラウザとバージ ョ ンを、 そのつど指定できます。 ブラウザが認識されない場合、 ペインタで [HTML バージ ョン] プロパティ を設定する こ とで、 どのレベルの HTML を生成するかを指定できます。

各種ブラ ウザに対してデータ ウ ィ ン ド ウが使用する HTML 機能については、 『データウ ィ ン ド ウ リ フ ァ レンス』 マニュアルまたはオンライン ヘルプの 「HTMLGen. property」 を参照して ください。

実行時、 ク ラ イアン ト ブラ ウザから Web サーバに送信される HTTPヘッ ダには HTTP_USER_AGENT 値が含まれています。 サーバ コ ンポーネン ト は、 この値を使用してク ラ イアン ト ブラ ウザを識別します。

PowerDynamo では、 document オブジェ ク トの GetServerVariable メ ソ ッド を使用して、 HTTP_USER_AGENT 値を取得できます。

dwMine.SetBrowser(document.GetServerVariable("HTTP_USER_AGENT"));

ASP では、 Request オブジェ ク ト の ServerVariables メ ソ ッ ド を使用して、 HTTP_USER_AGENT 値を取得できます。

var clientbrowser =Request.ServerVariables("HTTP_USER_AGENT");

dwMine.SetBrowser(clientbrowser);

データウィンドウ プログラマーズ ガイ ド 159

サーバ コンポーネン トのインスタンス化と設定

データベース接続の指定とデータ検索接続情報の指定 SetTrans SetTrans メ ソ ッ ド を使用して、 サーバ コンポーネン ト に関

する接続情報を指定します。 接続の種類によって、 指定する引数が異な り ます。Adaptive Server Anywhere 6.0 への ODBC 接続の場合、dbParm引数にすべての接続情報を指定します。

EAServer では、 コンポーネン トに対して接続キャ ッシュを設定する必要もあ り ます。 詳細については、 137 ページの「 EAServer での接続キャッ シュの作成」 を参照して ください。

データ ソースは、 サーバ マシン上で定義されていなければな り ません。 コンポーネン トがサービスを提供できる状態にある場合、 データソースは EAServer ではシステム DSN でなければな り ません。 MTS または IIS では常にシステム DSN でなければな り ません。 次の文では、サンプル データベース EAS Demo DB に接続します。

dwMine.SetTrans("ODBC", "ConnectString='DSN=EAS Demo DB

V3;UID=dba;PWD=sql'","", "", "", "", "")

Adaptive Server Enterprise の使い方

PowerBuilder と EAServer では、 Open Client を使用して Adaptive ServerEnterprise に接続する際の CT-Lib ソ フ ト ウェアの使い方が少し異な ります。PowerBuilder の開発環境では、SYC ネイテ ィブ データベース インタフェースを使用してデータベースに接続しますが、 EAServer でASE に接続する場合は、 SYJ を SetTrans への第 1 引数と して使用しなければな り ません。

データの検索 Retrieve サーバ コ ンポーネン ト にデータの検索を指示するには、Retrieve メ ソ ッ ドを呼び出します。 また、データウ ィ ン ド ウ オブジェ クト で検索引数が使用される場合は、 RetrieveEx メ ソ ッ ド を呼び出します。

次の DynaScript コードでは、Retrieve メ ソ ッ ド を呼び出します。 戻り値がエラーを返した場合は、GetLastErrorString を呼び出して、エラー メ ッセージのテキス ト を取得します。 ASP では、 document.Writeln ではなく、 Response.Write を使用します。

retVal = dwMine.Retrieve();if (retVal < 0 )

{

document.Writeln("Retrieve でエラー : " + retVal +"<BR>");

document.Writeln(dwMine.GetLastErrorString() +

160 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

"<BR>")}

検索引数の指定 RetrieveEx データウ ィ ン ド ウ オブジェ ク ト で検索引数が使用されている場合は、 RetrieveEx メ ソ ッ ドを呼び出します。

dwMine.RetrieveEx("60000");

通常、 検索引数は定数ではあ り ません。 これらの引数は、 ユーザがフォームを入力したページやハイパーリ ンクをク リ ッ ク したページから別のページに渡されるページ パラ メータです。 データウ ィ ン ド ウで複数の検索引数が使用される場合は、 引数は単一の文字列で渡されなければな り ません。 その文字列内の引数は、 改行文字 (¥n) で区切らなければな り ません。 また、 それぞれの値の一部に改行文字を使用する こ とはできません。 配列の値は、 タブ文字 (¥t) で区切らなければな り ません。

ページに渡される値は、 document オブジェ ク トの value プロパテ ィのプロパテ ィにな り ます。 たとえば、 次のフォームでは、 ユーザに給与の入力を求めます。

<FORM ACTION="salaryrpt.stm" NAME="log" METHOD="POST">

<p>給与額の上限を入力して ください :</p><P><INPUT TYPE="text" NAME="salary" SIZE="15"></p><p><Center><INPUT TYPE="Submit" VALUE="Register"></Center></p></FORM>

salaryrpt.stm 内の PowerDynamo サーバ サイ ド スク リプ トのコードは、ページ パラ メータ と して渡された給与値を使用して、 コンポーネン トサーバに対して RetrieveEX メ ソ ッ ド を呼び出します。

dwMine.RetrieveEx(document.value.salary);

別のページからの検索引数の取得は、 そのページが初めて リ ロード される際に有効にな り ます。 ページが リ ロード されるたびに、 検索引数はページ パラ メータになる必要があ り ます。 リ ロードするページのページ パラ メータを指定するには、SetSelfLink メ ソ ッ ド を使用します。詳細については、 次の節を参照して ください。

データウィンドウ プログラマーズ ガイ ド 161

サーバ コンポーネン トのインスタンス化と設定

リロード されたページにページ固有のデータを渡すセルフリンク情報の使い方

ク ラ イアン ト ブラ ウザがページ テンプレー ト を初めて要求する と きは、 GET または POST を使用してページ固有の情報を渡すこ とが可能で、そのページはそれらの値をサーバ サイ ド スク リプ ト内で使用できます。 ただし、 ユーザと Web データウ ィ ン ド ウ との対話によ りページが リ ロード される場合、 ページ固有の情報は該当するページに自動的には渡されません。

情報を使用可能な状態にするには、 selflinkargs 文字列と、 リ ロード されるページのページ パラ メータ となる値を指定します。 通常は、 セルフ リ ンク パラ メータを使用して、 次の情報を使用可能な状態に保持します。

• 別のページからのログイン情報

• データウ ィン ド ウ オブジェ ク ト名

• データウ ィン ド ウ オブジェ ク トの検索引数

ページの リ ロードの際に、以上の値を提供するには、SetSelfLink メ ソ ッド を使用します。 このメ ソ ッ ドは、 引数と してページ テンプレートのURL と selflinkargs 文字列を取り ます。

ページの URL の取得 ユーザ アクシ ョ ンに応じてページを正し く リ ロードするために、 サーバ コンポーネン トはページ テンプレート の URL を認識する必要があり ます。 その URL は、 document オブジェ ク トの name プロパテ ィ またはサーバ変数 SCRIPT_NAME から取得できます。

PowerDynamo では、 document オブジェ ク ト の GetServerVariable メ ソ ッド を使用します。

var url = document.GetServerVariable( "SCRIPT_NAME" );

ASP では、Request オブジェク ト の ServerVariables メ ソ ッ ドを使用します。

var url = Request.ServerVariables( "SCRIPT_NAME" );

セルフリンク引数文字列の作成

セルフ リ ンク引数は、 リ ロード されるページのページ パラ メータ となり ます。 スク リプ トは、 一般には既存のページ パラ メータを確認してから、 セルフ リ ン ク引数を使用してページ パラ メータを再作成します。 セルフ リ ンク引数を指定するための構文は、 次のとおりです。

pageparam1=’expr1’|pageparam2=’expr2’...|pageparamn=’exprn’

この文字列には、 ページ パラ メータ と式の 1 つまたは複数のペアを、パイプ (|) で区切って指定できます。 それぞれの式は、 評価結果が文字列となるデータウ ィン ド ウ式です。 通常は、 式ではな く、 すでにページ パラ メータ値になっている一定の文字列値を指定します。

162 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

式は引用符で囲みます。 値が定数である場合は、 その値も引用符で囲まなければな り ません。 たとえば、 logname とい う名前のページ パラメータがページに渡され、そのパラ メータに Fred とい う値が含まれている場合、 SetSelfLink メ ソ ッ ドに渡す文字列は、 次のよ うに記述します。

logname='"Fred"'

現行の logname パラ メータから、 ページに対してすでに定義されている値を取得するには、 ページ パラ メータ logname を使用して式を作成します。 式には、 一重引用符とその内側に二重引用符を使用します。logname の現在の値は、 引用符の間に挿入されます。

var linkargs = "logname='¥"" + document.value.logname + "¥"'";

式には、 内側の引用符は必要あ り ません。

var linkargs = "date='String(Today())'";

URL と引数文字列を SetSelfLink に渡す

SetSelfLink SetSelfLink メ ソッドへの引数には、サーバ変数 SCRIPT_NAMEから取得した URL と 、作成したリ ンク引数文字列を使用します。

dwMine.SetSelfLink(url, linkargs);

セルフリンク値として使用される検索引数

ページが 初にロード される と き、検索引数は次の可能性があ り ます。

• 別のページから渡されたページ パラ メータ。 ユーザが、 該当する値を含む URL をク リ ッ ク したか、該当する値をポス トするフォームに入力した場合

• 現在のスク リプ ト で計算された新しい値

値がページ パラ メータである場合は、SetSelfLink を使用してページ パラ メータを再作成できます。 値がほかのいずれかのソースの値である場合、 ページが初めてロード された と きはソースまたはページ パラメータから、 ページが リ ロード された と きはページ パラ メータから、それぞれ値を取得するためのコードを作成する必要があ り ます。

例 次の PowerDynamo の例では、前述した種類の値を操作します。それぞれの種類の値を取得し、 RetrieveEX および SetSelfLink メ ソ ッ ドの両方の呼び出しで使用します。

別のページの値 ユーザが製品の詳細情報を取得するためにフォームに製品 ID を入力する と、 製品 ID はページ パラ メータ と して製品レポート テンプレートに渡されます。ページ パラ メータは、呼び出し元ページから取得されるので通常は常に存在しますが、 このコードではデフォル ト値を提供します。

データウィンドウ プログラマーズ ガイ ド 163

サーバ コンポーネン トのインスタンス化と設定

if (exists(document.value.prodid)) {prod_id = document.value.prodid;

} else { prod_id = "1";}dwMine.RetrieveEx(prod_id);dwMine.SetSelfLink(document.name,

"prodid=" + "'¥"" + prod_id + "¥"'");

計算値 値がスク リプ トで計算される場合、ス ク リプ トが 初に実行されたと きにはページ パラ メータは存在しません。 任意のページ パラメータが存在する場合は、 ス ク リプ トでそのパラ メータから値を取得します。 それ以外の場合は、スク リプ ト で Math 関数を使用して値を計算します。

if (exists(document.value.random)) {rnd = parseInt(document.value.random);

} else {rnd = Math.random();

}dwMine.RetrieveEx(rnd);dwMine.SetSelfLink(document.name,

"random=" + "'¥"" + String(rnd) + "¥"'";

複数の値 この例では、フォームを持つ Web ページから、ユーザ名、製品カテゴ リ 、 およびユーザが表示したい詳細レベルの入力を求めるメ ッセージを表示します。 コードでは、 製品カテゴ リ を Web データウ ィ ン ド ウの検索引数と して使用します。 ス ク リプ トでは、 詳細レベルに応じて、 データウ ィ ンド ウ オブジェ ク ト を選択します。 ページがリ ロード されるたびに、 3 つの値はすべて繰り越されます。

// 製品カテゴリを検索引数として取得if (exists(document.value.category)){

retrievearg = document.value.category;} else {retrievearg = "all";}rtn = dwMine.RetrieveEx(retrievearg);if (rtn < 0) {

... // エラーをチェ ッ ク}

// ユーザ名を取得if (exists(document.value.username)){

username = document.value.username;

document.Write("<P>お客様名 " + username + "</P>");}

164 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

document.Write("<P> お客様が要求されたレポートはこちらです。

</P>");

// 詳細レベルに応じてデータウィ ンドウを選択if (exists(document.value.reportlevel)) {

rptlevel = document.value.reportlevel;if (rptlevel == "detail"){

dw = "d_product_detail";} else {

dw = "d_product_summary";}

}else if (exists(document.value.dw)){

dw = document.value.dw;} else {

document.Write("<P> レポート選択にエラー ");return;}

}dwMine.SetDWObject("productrpt.pbd", dw);

// ブラウザ用に生成された HTML で// ページ パラ メータを再作成するよ うに、サーバ コンポーネン トに指示linkargs = "username='¥"" + username + "¥"'" + "|category= '¥"" + retrievearg + "¥"'" + "|dw= '¥"" + dw + "¥"'";

dwMine.SetSelfLink( document.name, linkargs );

サーバ コンポーネン トにユーザ アクシ ョ ンを渡すSetAction ユーザがデータウ ィ ン ド ウのボタンをク リ ッ クする と、 アクシ ョ ン情報が、コンテキス ト とアクシ ョ ン ページ パラ メータ と してページ サーバに返されます。 サーバ サイ ド スク リプ ト で、 これらのページ パラ メータにアクセス して SetAction を呼び出すこ とによ り 、サーバ コンポーネン トは、生成された HTML にアクシ ョ ンを適用できます。

パ ラ メ ータの名前には、 dwMine_action、 dwMine_context の よ う に、SetHTMLObjectName メ ソ ッ ドに指定されたオブジェ ク ト 名を使用します。オブジェ ク ト名は、データウ ィ ン ド ウ ペインタの [HTML 生成]タブ ページで指定するこ と もできます。

データウィンドウ プログラマーズ ガイ ド 165

サーバ コンポーネン トのインスタンス化と設定

別のデータ ページへのスク ロール用ボタン、 データの検索および更新用ボタン、 行の挿入および削除用ボタンなどを組み込むこ とができます。 これらのボタン アクシ ョ ンが発生する と、変更内容がサーバ コンポーネン ト に送信され、 データウ ィ ン ド ウ バッファ内で変更が行われます。 ユーザが更新ボタンをク リ ッ クする と、 ほかにス ク リプ ト を記述しな くても、 コンポーネン ト で更新メ ソ ッ ドが呼び出されます。

メ ソ ッ ド を呼び出す必要はない

データの検索、 更新、 行の挿入および削除などを行う場合に、 直接呼び出すこ とができるサーバ コンポーネン ト メ ソ ッ ドがあ り ます。ただし、ボタンをク リ ッ ク しないとアクシ ョ ンは呼び出されません。メ ソ ッド を呼び出す必要もあ り ません。

次の DynaScript コードでは、 GetParm 関数を呼び出して、 パラ メータが定義されているかど うか、 つま りページが リ ロード されたものである かど う かを確認し ます。 パラ メ ータ が定義されている場合は、SetAction を呼び出して、アクシ ョ ン情報をサーバ コンポーネン トに送信します。

// ページ パラ メータが定義されているかどうかを確認する関数function GetParam( envparam ) {

if( exists(document.value[envparam] ) ) {return document.value[envparam];

}return "";

};

// アクシ ョ ンを実行する必要があるかどうかを調べるvar dwMine_action = GetParam("dwMine_action");var dwMine_context = GetParam("dwMine_context");if ("" != "" + dwMine_action) {

retVal = dwMine.SetAction(dwMine_action, dwMine_context);

if (retVal < 0 ) {

document.Write ("SetAction エラー : "+ retVal + "<BR>");

document.Write ( dwMine.GetLastErrorString()+ "<BR>");

}}

166 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

ページへの生成された HTML の挿入Generate サーバ ス ク リ プ トはすべての設定が終了した後、 Generate関数を呼び出します。 この関数は、 生成された HTML を文字列と して返します。

PowerDynamo では、 document.Write を使用して、 ページ テンプレートにコードを挿入します。

document.Write( dwMine.Generate() );

ASP では、 Response.Write を使用して、 ページ テンプレートにコードを挿入します。

Response.Write( dwMine.Generate() );

カスタム サーバ コンポーネン トの使い方EAServer をコンポーネン ト サーバと して使用する場合、汎用サーバ コンポーネン ト イ ンタ フ ェースの メ ソ ッ ド を使用するカス タ ム コ ンポーネン ト を配布できます。 また、 EAServer、 MTS、 または IIS で使用できるよ うに、 サーバ コンポーネン ト をその独自のデータウ ィ ン ドウ メ ソ ッ ドで記述するこ と もできます。

カスタム コンポーネン トの利点

カスタム コンポーネン ト を使用する と、 以下の点でメ リ ッ トがあ り ます。

• 保守性 ト ランザクシ ョ ン プロパティに値を指定する こ とで、サーバ上で接続情報を保持します。

• パフォーマンス コ ンポーネン ト のイ ンス タ ンス作成時にデータウ ィン ド ウ オブジェ ク トがロード されるよ うに、 サーバ上のソース ファ イルとデータウ ィン ド ウ オブジェ ク ト を指定します。 これによって、Web ページ内のサーバ サイ ド スク リプ ト からのメ ソ ッド呼び出しがほとんどな くな り ます。 カスタム コンポーネン トでその状態を保持するこ とでも、 パフォーマンスが向上します。

カスタム コンポーネン トの状態プロパティの変更については、176ページの「 サーバ上での状態の保持」 を参照して ください。

• スケーラビリテ ィ ソース フ ァ イルとデータウ ィ ン ド ウ オブジェク ト を指定し、 EAServer インスタンスのプール機能を使用する ことで、 コンポーネン ト を再利用してデータウ ィン ド ウ オブジェ クトのロードが一度だけで済むよ うにな り ます。

データウィンドウ プログラマーズ ガイ ド 167

カスタム サーバ コンポーネン トの使い方

データウィン ドウ ペインタと EAServer 間の競合

データウ ィ ン ド ウ ペインタでの作業中に、 EAServer で同じ PBL をテス トする と、 EAServer コンポーネン トがデータウ ィン ド ウをロード した際に PBL がロ ッ ク される こ と があ り ます。 これを避け る には、EAServer Manager でコンポーネン ト のインスタンスのプール機能を無効にします。 データウ ィ ン ド ウ オブジェ ク トのテス ト と編集が終了したら、 インスタンスのプール機能を有効にします。

複数のク ラ イアン ト に対してコンポーネン ト インス タンスの再初期化と再利用が可能な場合は、 インスタンスのプール機能を使用する と実働環境のパフォーマンスが向上します。

Web データウ ィ ン ド ウ インタフェースを使用するカスタム コンポーネン トの作成については、169 ページの「 EAServer でのカスタム サーバ コンポーネント の作成」 または 138 ページの「 データウィ ンド ウ オブジェク ト のコンポーネント サーバへの配布」 を参照して ください。

独自のカスタム コンポーネン トの記述

データ ウ ィ ン ド ウ定義およびデータ を保持するデータ ス ト ア オブジ ェ ク ト の状態 と HTML 生成を フル コ ン ト ロールする ために、PowerBuilder の独自のカスタム ク ラス ユーザ オブジェ ク ト を記述して、 EAServer または COM コンポーネン ト と して配布できます。 必要な処理のみを含むカスタム コンポーネン ト を使用すれば、 Web ク ラ イアン ト に返される ク ラ イアン ト コン ト ロールのサイズを小さ くできます。

汎用コンポーネン トのソース コードは、 PowerBuilder の code examplesディ レク ト リ内の PBDWRMT.PBL にあ り、 このソース コードを調べた り再利用した りできます。 この PBL 内のコードは修正した り追加した りする こ とができます。 また、 独自のコンポーネン ト を作成する際のベース と してサンプル PBL を使用するこ と もできます。

大文字と小文字と使用したメ ソ ッ ド名

汎用 EAServer コンポーネン トのメ ソ ッ ドの名前には、大文字と小文字のどちらでも使用できます。 この節で示す例でも、 大文字と小文字から成る名前を使用します。 独自のサーバ コンポーネン ト を記述する場合は、生成する EAServer コンポーネン トのメ ソ ッ ド名はすべて小文字にします。 ただし、 EAServer へのコンポーネン トの配布後は、 そのコンポーネン トの IDL ファ イル内のメ ソ ッ ド名の大文字と小文字を変更できます。 独自のコンポーネン ト を使用する場合は、 コンポーネン トのスタブを生成してコンパイルしなければならないので、 IDL に変更を加えた後でないと、メ ソ ッ ド名の大文字と小文字は変更できません。

168 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

サーバ コンポーネン トは、データス ト ア オブジェ ク トでメ ソ ッ ドを使用してデータを検索し、そのデータ と状態を 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 マニュアルを参照して ください。

ユーザ オブジェ ク ト を COM コンポーネン ト と して配布する場合は、その COM コンポーネン ト を登録する必要があ り ます。 COM コンポーネン トの登録については、 149 ページの「 サーバ構成の詳細」 を参照して ください。

EAServer でのカスタム サーバ コンポーネン トの作成

Jaguar Manager で、カスタム Web データウ ィン ド ウ サーバ コンポーネン ト をインス トールして設定できます。次の手順では、 Jaguar Managerで前もってセッ ト されているカスタム プロパティ を使用して、 カスタム バージ ョ ンの EAServer サーバ コンポーネン ト を作成します。

データウィンドウ プログラマーズ ガイ ド 169

カスタム サーバ コンポーネン トの使い方

Web データウィンドウ コンテナ プロジェク ト ウィザードの使い方

この節に示す手順では、 汎用 DataWindow::HTMLGenerator90 イ ン タフェースを使用するカスタム コンポーネン ト を Jaguar Manager で作成する方法について説明します。 カスタム コンポーネン トは、 Web データウ ィ ン ド ウ コンテナ プロジェ ク トでも作成できます。 詳細については、139 ページの「 Web データウィ ンド ウ コンテナ プロジェク ト ウ ィザード 」 を参照して ください。

❖ EAServer で Web データウィ ンドウ カスタム コンポーネン ト を作成するには

1 Jaguar Manager の左側のペインで、 サーバ名の下の [パッケージ]を右ク リ ッ ク し、表示されたポップアップ メニューから[パッケージの新規作成] を選択します。

2 新しいパッケージ ダイアログボッ クスで、パッケージ名を入力し、[新しいパッケージを作成] を ク リ ッ ク し ます。 こ こで入力したパッケージ名は後で変更できません。

た と えば、 EmpList アプ リ ケーシ ョ ンのパ ッ ケージ名 と し て「EmpListPkg」 と入力します。

3 パッ ケージのプロパティ ダイアログボッ クスの[一般] タブに、パッケージの説明を入力し、 [OK] を ク リ ッ ク します。

たとえば、 EmpListPkg の説明と して 「EmpList アプ リ ケーシ ョ ン用のデータウ ィン ド ウ コンポーネン ト 」 と入力して、 そのアプ リケーシ ョ ンに対してカスタマイズするパッケージである こ と を示します。

4 Jaguar Manager の左側のペインで、サーバ名の下の新しいパッケージを右ク リ ッ ク し、 表示されたポップアップ メニューから [コンポーネン ト を新規作成] を選択します。

5 ウ ィザードで、[新しいコンポーネン トの定義] ラジオ ボタンを選択し、 [次へ] をク リ ッ ク します。

6 カスタム コンポーネン トの名前を指定し、[終了] をク リ ッ ク します。 こ こで指定した名前は後で変更できません。

た と えば、 EmpListDW は、 データ ウ ィ ン ド ウ オブジェ ク トd_emplist を使用するコンポーネン ト を表します。

7 コンポーネン トのプロパティ ダイアログボッ クスの [一般] タブで、 次のよ うに指定します。

170 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

8 [すべてのプロパティ] タブで、 プ リセッ ト値が必要なプロパテ ィを追加します。

EAServer でのカスタム コンポーネン トのプロパティの設定

カスタム コンポーネン トに必要な数だけ、 次のプロパティ を追加します。 プロパテ ィは、 汎用的なプロパテ ィ とデータベース接続プロパテ ィの 2 つのグループに分類されます。

ブール プロパテ ィの場合、 値は Ture か False、 または Yes か No です。

汎用的なプロパテ ィ これらのプロパテ ィは、 コンポーネン ト のインスタンス化に影響する設定値を指定します。

説明 : DataWindow::HTMLGenerator90

コンポーネン ト ・タ イプ : PowerBuilder NVO

PowerBuilder ク ラス : nv_remote_datawindow

PowerBuilder ライブラリ・リ スト :

pbdwr90.pbd

PowerBuilder アプ リ ケーシ ョ ン :

remote_datawindow_appl

データウィンドウ プログラマーズ ガイ ド 171

カスタム サーバ コンポーネン トの使い方

表 7-3: カスタム コンポーネン トに追加する一般的なプロパテ ィ

汎用的なプロパテ ィ 説明

com.sybase.datawindow.sourceFileName

PBL、 コンポーネン トに対するデータウ ィ ンド ウオブジェ ク ト を含む PBD、またはデータウ ィ ンドウ オブジェク ト である SRD ファ イルや PSR ファイルを指定する

オンラ イン ヘルプまたは 『データウ ィ ンド ウ リファレンス』 マニュアルの 「SetDWObject メ ソ ッド」 も参照

com.sybase.datawindow.dwObjectName

sourceFileName に指定された PBL または PBD に含まれるデータウ ィ ンド ウ オブジェ ク ト の名前

「setDWObject メ ソ ッ ド」 も参照

com.sybase.datawindow.fixed

コンポーネン ト をインスタンス化するサーバ サイ ド スク リプ ト (SetDWObject、 Create、 Modify、および SetTrans メ ソ ッ ド)からコンポーネン ト プロパティ を変更できるかど うか。使用可能な値は次のとおり

• Yes ─ プロパティは固定されるため変更できない

• No ─ プロパティは変更可能

com.sybase.datawindow.serverServiceClasses

sourceFileName に指定された PBL または PBD に含まれる PowerBuilder ユーザ オブジェ ク ト 。 ク ラス名はセ ミ コロン (;) で区切る。 ユーザ オブジェク トは、データ検証のためのカスタム イベン ト を実装する

カスタム イベン トについては、 オンライン ヘルプまたは 『データ ウ ィ ン ド ウ リ フ ァ レンス』 マニュアルの 「SetServerServiceClasses メ ソ ッ ド」 を参照

com.sybase.datawindow.serverSideState

次のメ ソ ッ ドが呼び出されるまで、サーバがサーバ状態を保持するかど うかを指定する。使用可能な値は次のとおり

• Yes ─ サーバ コンポーネン トは結果集合を保持し、できる限り ト ランザクシ ョ ンを開いておく

• No ─ (デフォル ト )結果集合は保存されない。また、 サーバ コンポーネン トはク ラ イアン トから返された情報を使用して、再度結果セッ トを検索し、コ ミ ッ ト されていない変更内容を元に戻す

172 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

データベース接続プロパテ ィ デー タ ベー ス 接続 プ ロ パ テ ィ で は、com.sybase.datawindow.trans.dbms を追加しなければな り ません。 このプロパテ ィは、ほかの trans プロパティのいずれかを認識する場合に設定しなければな り ません。 trans.dbms を設定する と、指定されていない接続プロパテ ィは、 デフォル ト では空の文字列とな り ます。

データベース接続の詳細については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルの 「SetTrans メ ソ ッ ド」 を参照して ください。

com.sybase.datawindow.trace

コンポーネン ト メ ソ ッ ドの呼び出しを EAServerログに含めるかど うか。使用可能な値は次のとおり

• Yes ─ コンポーネン ト メ ソ ッ ドの呼び出しがログに一覧表示される

• No ─ コンポーネン ト メ ソ ッ ドの呼び出しはログに一覧表示されない

com.sybase.datawindow.HTMLObjectName

生成されたコード内で、Web データウ ィ ンド ウ クラ イアン ト コン ト ロールに対して使用される名前。 この名前を使用して、 ク ラ イアン ト サイ ドイベン ト を実装し、 ク ラ イアン ト側でのスク リプト記述を可能にする

Web ページ上に複数の Web データウ ィ ン ド ウが存在する場合、それらが衝突しないよ うにするために、 このプロパティ を設定する

「SetHTMLObjectName メ ソ ッ ド」 も参照

com.sybase.datawindow.modifyString

データウ ィ ン ド ウ オブジェ ク ト のプロパテ ィ を設定する Modify メ ソ ッ ドへの引数と して使用される文字列。 コンポーネン トは、 インスタンス化される と きに Modify メ ソ ッ ドを呼び出す

構文については、 「Modify メ ソ ッ ド」 を参照

汎用的なプロパテ ィ 説明

データウィンドウ プログラマーズ ガイ ド 173

カスタム サーバ コンポーネン トの使い方

表 7-4: カスタム コンポーネン トに追加するデータベース接続プロパテ ィ

カスタム コンポーネン トのインスタンス化

カスタム コンポーネン ト をサーバ サイ ド スク リプ トで使用するには、YourPackage/YourComponent の形式でパッケージ名と コンポーネン ト名を指定します。 EAServer と と もにインス トールされる汎用コンポーネン トのメ ソ ッ ドを使用する場合、 コンポーネン ト をインスタンス化する メ ソ ッ ドは DataWindow/HTMLGenerator90 インタフェースを参照しなければな り ません。

次の PowerDynamo ス ク リプ ト内のコードは、 EmpListPkg パッケージ内の EmpListDW とい う名前のカスタム コンポーネン ト をインスタンス化します。 後の引数はインタフェースを限定します。 つま り、コンポーネン ト で、汎用サーバ コンポーネン トのスタブ インタフェースを使用するこ とを指定します。

dwMine = java.CreateComponent( "EmpListPkg/EmpListDW","iiop://testMachine:9000", "Jagadmin", "","DataWindow/HTMLGenerator90" );

データ ベース接続プロパテ ィ 説明

com.sybase.datawindow.trans.dbms

データベース ベンダの識別子。PowerBuilder の 接続プロファ イル ダイアログボッ ク スに表示される

com.sybase.datawindow.trans.dbparm

DBMS 固有の接続パラ メータ

com.sybase.datawindow.trans.lock

アイ ソ レーシ ョ ン レベル。 データベース環境設定については、 オンライン ヘルプを参照

com.sybase.datawindow.trans.logid

コンポーネン ト がデータベース サーバにログオンする と きに使用するアカウン ト の名前またはID

com.sybase.datawindow.trans.logpass

データベース サーバへのログオンに使用するパスワード

com.sybase.datawindow.trans.database

コ ンポーネン ト の接続先データベースの名前。ODBC の場合は無視される

com.sybase.datawindow.trans.servername

データベースがあるサーバの名前

174 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

OneTrip メ ソ ッ ドの使用による、 コンポーネン トの設定と生成された HTML の取得 154 ページの「 サーバ コ ンポーネント のイ ンスタンス化と 設定」 では、 Web データウ ィン ド ウを正し く設定するために、 サーバ スク リプ ト に含める必要があるい くつかの項目について説明しま した。これらの項目を別々にコード化するのではな く、 EAServer コンポーネン ト がデータウ ィ ン ド ウ定義と ト ランザクシ ョ ン情報によって設定されたと きに、 1 つのメ ソ ッ ド を使用してすべての設定を行い、 生成された HTML を取得します。

次の方法は、 サーバ コ ンポーネン ト で状態を保持する こ と な く パフォーマンスを向上させる場合には、 特に便利です。

// サーバにコンポーネン ト を作成dwMine = java.CreateComponent( "EmpListPkg/EmpListDW",

"iiop://testMachine:9000", "Jagadmin", "","DataWindow/HTMLGenerator90" );

// アクシ ョ ンとコンテキス トのページ パラ メータを取得if (exists(document.value.dwMine_action))

var action = document.value.dwMine_action;else action = "";if (exists(document.value.dwMine_context))

var context = document.value.dwMine_context;else context = "";

// ブラウザを取得var browser = document.GetServerVariable

("HTTP_USER_AGENT");

// ページのリロード用に文書名を取得var selfLink = document.GetServerVariable

("SCRIPT_NAME");

// サーバに設定情報を渡し、 OneTrip から返された// HTML を文書に挿入document.Write(dwMine.OneTrip("dwMine", browser,

selfLink, "", action, context));

検索引数での OneTripEx の使い方 データウ ィ ン ド ウが検索引数を必要とする場合は、 OneTrip ではな く OneTripEx を使用します。 コードでは、 検索引数値を持つページ パラ メータが存在するかど うかをチェ ック し ます。 また、 selflinkargs 式を使用して、 リ ロード されたページ内で値がまだ有効であるかど うかについても確認します。

if (exists(document.value.retarg))var retrievearg = document.value.retarg;

else

データウィンドウ プログラマーズ ガイ ド 175

カスタム サーバ コンポーネン トの使い方

// 適当なデフォルト値を設定var retrievearg = "default";

var selflinkarg = "retarg='¥"" + retrievearg + "¥"'";

document.Write(dwMine.OneTripEx("dwMine", retrievearg,browser, selfLink, selflinkarg, action,

context));

サーバ上での状態の保持ステート レス コンポーネン トの使い方

Web データウ ィ ン ド ウは、 ステー ト レス (状態を持たない) サーバ環境で動作できます。 Web ページ内の変数は、 表示される行およびユーザが加えた変更に関する情報を保持します。 この情報は、 必要であれば、 サーバ コンポーネン トに送られるので、 コンポーネン トは呼び出されるたびに、 その状態を リ ス ト アでき ます。 状態の リ ス ト アでは、ユーザが別のページに移動するなどしてページが リ ロード されるたびに、 データベースのデータ検索などが行われます。

ステート レス モードでの運用は、サーバ リ ソースの使用を 低限に抑えますが、 パフォーマンスは低下します。 ク ラ イアン トはサーバ コンポーネン ト の状態を文字列形式で保持し、 要求があるご とに情報が受け渡されます。 また、 サーバ上で状態が保持されていない場合、 コンポーネン トは呼び出されるたびにデータベース と接続してデータを検索しなければな り ません。 コンポーネン ト サーバが接続キャ ッシュを行わない場合は、 ク ラ イアン ト の応答時間は非常に長くな り ます。

ステート フルコンポーネン トの使い方

サーバ上で状態を保持する こ とで、 パフォーマンスを向上させる こ とができます。 状態を保持するために、 ページ サーバのセッシ ョ ン オブジェ ク トはサーバ コンポーネン トへの参照を保持します。サーバ コンポーネン ト が EAServer で動作している場合、そのコンポーネン ト をステー ト フル (状態を持つ) オブジェ ク ト と してマーク し、 タ イムアウト値を設定しなければな り ません。 ステート フル オブジェ ク ト と してコンポーネン ト を使用している場合に、 タ イムアウ ト値の設定に失敗する と、 サーバ上のコンポーネン トは孤立インスタンスにな り ます。

サーバ上で状態を保持する こ とで、 同じコンポーネン トが再度アクセスされた際の応答時間を短縮できます。 ただし、 ク ラ イアン ト接続のたびに使用されるサーバ リ ソースは増大します。

176 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

サーバ リ ソースに与える影響を 小限にするために、 セッシ ョ ン時のタ イムアウ ト を短く設定して、 再要求される可能性の低いコンポーネン ト をサーバから取り除きます。 このコンポーネン トが再度呼び出された場合、 その状態はク ラ イアン ト状態情報から リ ス ト アできます。ページのヒ ッ ト数が多いと予想される場合は、 タ イムアウ ト値を短く設定する こ とで、 同時に保持する必要があるインスタンス数を減らします。

ステート フル オブジェ ク ト と してのマーク

ステート フル オブジェ ク ト と し てコンポーネント をマーク する には、Jaguar Manager でコンポーネント の com.sybase.datawindow.serverSideStateプロパティ を設定するか、サーバ サイド スク リ プト で SetServerSideStateメ ソ ッ ド を呼び出します。

dwMine.SetServerSideState( true );

Jaguar Manager で、 com.sybase.jaguar.component.stateless プロパテ ィ をHTMLGenerator90 コンポーネン トに対して設定しないでください。

Web ターゲッ ト オブジェク ト モデルを使用する場合は、データベース状態をサーバ上で管理するかど うかを指定します。 これを指定するには、 PSDataWindowClass コ ンス ト ラ ク タへの第 2 パラ メータ と してブール値 TRUE を渡します。

dw_1 = new PSDataWindowClass("dw_list", true,jagConn, dwSource, dbConn, 5);

このパラ メータを渡すと SetServerSideState メ ソ ッ ドが呼び出されます。 ただし、 タイムアウ ト値は設定されません。 Web ターゲッ ト オブジェ ク ト モデルの使用の有無にかかわらず、 タイムアウ ト値を設定する必要があ り ます。

タイムアウト値の設定 HTMLGenerator90 コンポーネン ト にタ イムアウ ト値を設定するには、Jaguar Manager でコンポーネン トのプロパテ ィ ダイアログボッ ク スを開いて、 com.sybase.jaguar.component.timeout プロパティ を設定します。タ イムアウ ト値は秒単位で指定します。 0 を指定する と、コンポーネント はタ イムアウ ト し ません。 コンポーネン ト の状態は PowerDynamoセッシ ョ ン オブジェ ク トに保存されるので、PowerDynamo セッシ ョ ンと HTMLGenerator90 コンポーネン ト のタ イムアウ ト値には同じ値を設定する必要があ り ます。

データウィンドウ プログラマーズ ガイ ド 177

サービス クラスの使い方

サービス クラスの使い方サーバ コンポーネン ト で使用可能なメ ソ ッ ド を使用して、 検証ルーチンやエラー処理など、ほとんどのサーバ サイ ド プロセスを実行できます。 また、 Web データウ ィ ン ド ウでは、 ほかの方法を使用して、 特殊プロセスを追加するこ と もできます。

サーバ コンポーネン トで使用できないサーバ サイ ド プロセスを組み込むために、1 つまたは複数の PowerBuilder カスタム ク ラス ユーザ オブジェ ク ト を定義できます。 これはサービス ク ラス と呼ばれます。 これらのサービス ク ラスは、サーバ コンポーネン ト用のデータウ ィン ドウ オブジェ ク ト と して同じ PBL または PBD に格納されます。 サービス ク ラスは、 サーバ上で追加プロセスを組み込む場合にはいつでも使用できます。 た とえば、 この方法で SQLPreview イベン ト にアクセスして、 SQL 構文を調べた後でデータベースにコ ミ ッ トできます。

コードの実装場所 サービス ク ラスは、 規定の署名を使用してユーザ定義のイベン ト を実装します。 これらのイベン トは標準的なデータウ ィ ン ド ウ イベン トに対応します。 ユーザ定義のイベン ト では、 プロセスを実行して、 該当するデータ ウ ィ ン ド ウ イベン ト をキャンセルするかど う かをサーバコンポーネン トに知らせる リ ターン コードを指定します。

サーバ コンポーネン ト では、 プロパテ ィ を設定するか、 これらのユーザ オブジェ ク ト をサーバ コンポーネン ト用のサービス ク ラス と して識別する メ ソ ッ ド を呼び出します。

コードの呼び出し方法 サービス ク ラスは次のよ うに処理されます。

1 サービス ク ラスがインスタンス化されるのは、 (サービス ク ラスがEAServer プロパティ で指定されている場合は) コンポーネント がインスタンス化されると きです。 そう でない場合は、SetServerServiceClassesメ ソッ ド によって 初に登録されると きです。

2 データスト アのサーバ コンポーネント 内でイベント が発生します。

3 サーバ コンポーネン トが、登録されている各サービス ク ラス内で同じ名前のイベン ト を呼び出します。

4 サービス ク ラスがイベン ト を実装する と、 イベン ト ス ク リプ トが実行され、 リ ターン コードがサーバ コンポーネン ト に返されます。

5 リ ターン コードを介してイベン ト をキャンセルできる場合、 サービス ク ラ スのいずれかでそのコードが返される と、 イベン ト はサーバ コンポーネン トの中でキャンセルされます。

178 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

図 7-2: サービス クラスの動作

PowerBuilder コンポーネン トに対するサービス クラスの定義

❖ 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)

• SQLPreview (SQLPreviewFunction request, SQLPreviewTypesqltype, string sqlsyntax, DWBuffer buffer, long row, DataStore ds)

• UpdateEnd (long rowsinserted, long rowsupdated, long rowsdeleted,DataStore ds)

• UpdateStart (DataStore ds)

データウィンドウ プログラマーズ ガイ ド 179

サービス クラスの使い方

引数は、『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルに掲載されている、 同様の名前を持つデータウ ィ ン ド ウ イベン トに定義される引数と同じです。 ただし、 追加の DataStore 型引数は除きます。この引数は、 ユーザ オブジェ ク トに Web データウ ィ ン ド ウ データへのアクセスを提供します。

3 イベン ト スク リプ ト で、 リ ターン コードを使用して、サーバ コンポーネン トがイベン ト をキャンセルする必要があるかど う かを指定します。

リ ターン コード も 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルに記載されている ものと同じです。 イベン ト を実装するサービスク ラスは、 イベン トのキャンセルを指定できます。

4 コンポーネン トに対するサービス ク ラスを登録します。

ユーザ オブジェ ク ト をサービス ク ラ ス と して使用でき る よ う にするには、 2 通りの方法があ り ます。

• EAServer、 または MTS などのサポート されている別のサーバのコンポーネン トの場合、 Web ページ テンプレー トのサーバサイ ド ス ク リプ トで SetServerServiceClasses メ ソ ッ ド を呼び出す

dwMine.SetServerServiceClasses

("uo_update_validate;uo_retrieve_process");

• EAServer のカスタム コンポーネン トの場合、Jaguar Manager で次のプロパティ を追加する

com.sybase.datawindow.serverServiceClasses

プロパテ ィ値をユーザ オブジェ ク ト 名の リ ス ト に設定する。名前は次のよ うにセ ミ コロン(;)で区切る。次に例を示します。

uo_update_validate;uo_retrieve_process

DTC を使用した場合のサーバ コンポーネン ト メ ソッ ドの使い方

Web データウ ィ ン ド ウ DTC または Web ターゲッ ト オブジェ ク ト モデルを使用する場合、 Component プロパティ を使ってサーバ コンポーネン ト のメ ソ ッ ド を使用できます。 次に例を示します。

dwMine.Component.SetServerServiceClasses("uo_updatestart")

180 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

例 データベースを更新する前に、 データが予算総額を超えていないこ とをチェ ッ クする と します。 UpdateStart イベン ト を実装したサービス クラスを設定できます。

PowerBuilder のカスタム ク ラス ユーザ オブジェ ク トで、 [挿入|イベン ト ] を選択し、新しいイベン ト UpdateStart を宣言します。 UpdateStartイベン トは Long 型の値を返し、 DataStore 型引数 ds を 1 つ持ちます。

UpdateStart (DataStore ds) returns long

次の UpdateStart イベン トのス ク リプ トには、 予算表からデータを検索し、 そのデータをコンポーネン トのデータ と比較するためのデータスト アがあ り ます。

DataStore ds_budgetdouble darray[], totallong ll_upperinteger i

ds_budget = CREATE datastoreds_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_uppertotal = total + darray[i]

NEXTIF ds_budget.Object.cf_expense_total < total THEN

RETURN 1END IF

Java コンポーネン トに対するサービス クラスの定義

❖ Java コンポーネン トに対してサービス クラスを作成して登録するには

1 Java サービス ク ラスがシステム ク ラスパスにある こ とを確認します。

データウィンドウ プログラマーズ ガイ ド 181

サービス クラスの使い方

2 Java サービス ク ラスで、 1 つまたは複数のメ ソ ッ ド を定義します。メ ソ ッ ドのプロ ト タ イプは、 以下のいずれかと一致しなければなり ません。イベン ト のデータ型はすべて powersoft.datawindow.event packageに定義されています。

• DBError (DatabaseEvent event, DataStore ds)

• 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)

3 ク ラス メ ソ ッ ドで、 リ ターン コードを設定して、サーバ コンポーネン ト がイベン ト をキャンセルする必要があるかど うかを指定します。

リ ターン コード も 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルに記載されている ものと同じです。 イベン ト を実装するサービスク ラスは、 イベン トのキャンセルを指定できます。

4 コンポーネン トに対するサービス ク ラスを登録します。

Java ク ラスをサービス ク ラス と して使用できるよ うにするには、2通りの方法があ り ます。

• EAServer、 または MTS などのサポート されている別のサーバのコンポーネン トの場合、 Web ページ テンプレー トのサーバサイ ド ス ク リプ トで SetServerServiceClasses メ ソ ッ ド を呼び出す

dwMine.SetServerServiceClasses("UpdateValidate;RetrieveProcess");

• EAServer のカスタム コンポーネン トの場合、Jaguar Manager で次のプロパティ を追加する

com.sybase.datawindow.serverServiceClasses

プロパテ ィ値をユーザ オブジェ ク ト 名の リ ス ト に設定する。名前は次のよ うにセ ミ コロン(;)で区切る。次に例を示します。

UpdateValidate;RetrieveProcess

182 PowerBuilder

第 7 章 Web データウ ィン ドウのサーバ サイ ド プロセス

DTC を使用した場合のサーバ コンポーネン ト メ ソ ッ ドの使い方

Web データウ ィン ド ウ DTC または Web ターゲッ ト オブジェ ク ト モデルを使用する場合、 Component プロパティ を使ってサーバ コンポーネン トのメ ソ ッ ド を使用できます。 次に例を示します。

dwMine.Component.SetServerServiceClasses("UpdateStart");

例 データベースを更新する前に、 データが予算総額を超えていないこ とをチェ ッ クする と します。 UpdateStart イベン ト を実装したサービス クラスを設定できます。

メ ソ ッ ドの宣言は次のよ うにします。

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);}

)

データウィンドウ プログラマーズ ガイ ド 183

サービス クラスの使い方

184 PowerBuilder

第 8 章 データウィ ン ドウ Web コン ト ロール ActiveX の使い方

この章について こ の章では、 Sybase の データ ウ ィ ン ド ウ Web コ ン ト ロールActiveX (Web ActiveX) の使い方について説明します。

内容

Web ActiveX について機能 Sybase データウ ィ ン ド ウ Web コン ト ロール ActiveX は、 Microsoft

Internet Explorer で完全な対話操作が可能な データウ ィ ン ド ウ コン ト ロールです。データウ ィ ン ド ウ Web コン ト ロール ActiveX は、リ ッチ テキス ト を除く、 データウ ィ ン ド ウの標準機能をすべて実装しています。

データウ ィ ン ド ウでは、 検索引数を使用したデータ検索とデータ更新をサポー ト しています。 編集様式、 表示書式、 および入力条件則を使用できます。データウ ィン ド ウ オブジェ ク ト プロパテ ィを変更する Modify など、データウ ィ ン ド ウを操作するための標準メ ソ ッ ドのほとんどを使用できます。 ただし、 ファ イル システムとの対話を必要する SaveAs や SaveAsAscii などの一部の関数はサポー ト されていません。 これによ り、 Web ActiveX は、 安全でスクリプ ト実行可能 (Scriptable) な ActiveX コン ト ロールと して分類されます。

項目 ページ

Web ActiveX について 185

Web ページにコン ト ロールを挿入する HTML 188

Web ターゲッ ト での Web ActiveX の使用方法 191

Web ActiveX 対応のデータウ ィ ン ド ウ オブジェ ク ト 194

データウ ィ ンド ウ ト ランザクシ ョ ン オブジェク ト コン トロールの使い方

197

データベースとの接続 198

Web ActiveX 用スク リプ トの記述 201

Web ActiveX の配布 202

データウィンドウ プログラマーズ ガイ ド 185

Web ActiveX について

Web ActiveX には、複数の Web ActiveX コン ト ロールと共有可能なデータベース接続を確立する Sybase データウ ィ ン ド ウ ト ランザクシ ョ ンオブジェ ク ト コン ト ロールが含まれています。

サポートするブラウザ

Web ActiveX および ト ランザクシ ョ ン オブジェ ク ト コン ト ロールは、ActiveX コン ト ロールをサポー ト するブラ ウザ (た とえば、 MicrosoftInternet Explorer バージ ョ ン 3 以降) での使用を目的に設計されています。

この データウ ィン ド ウ コン ト ロールは、Netscape 社のブラウザ用には設計されていません。 同社のブラウザは、ActiveX をサポート していないからです。 ActiveX をサポー トするサード パーティ製プラグインを利用しても、コン ト ロール操作用のスク リプ トは異なる動作をします。また、 この環境での動作テス ト も行っていません。

開発環境 PowerBuilder をインス トールする と、 セッ ト アップ プログラムによって、 Web ActiveX およびト ランザクシ ョ ン オブジェ ク ト コン ト ロールが Windows レジス ト リに登録されます。 レジス ト リに入力されたク ラス情報は、 PowerBuilder ブラウザの [OLE] タブの [OLE カスタム コン ト ロール] に表示されます。 ブラ ウザの [OLE] タブでは、 コン トロールのプロパテ ィ、 イベン ト 、 およびメ ソ ッ ド を調べるこ と もできます。

Web ターゲッ トでは、 Web ActiveX およびト ランザクシ ョ ン オブジェク ト コン ト ロールを使用する Web ページを開発できます。 これらのコン ト ロールは、 システム ツ リーの [コンポーネン ト ] タブから Webページにド ラ ッグ アンド ド ロ ップできます。 システム ツ リーで、これらのコン ト ロールのプロパテ ィ、 イベン ト 、 およびメ ソ ッ ド を調べるこ と もできます。 HTML エディ タで、コン ト ロールの挿入、コン ト ロール プロパテ ィ シー ト でのプロパテ ィ値の設定、 およびスク リプ ト エディ タでのイベン ト ス ク リプ トの記述ができます。

詳細については、 191 ページの「 Web ターゲッ ト での Web ActiveX の使用方法」 を参照して ください。

Web ターゲッ ト HTML エディ タのほかにも、 任意のテキス ト エディタを使用してコン ト ロールの HTML を記述できます。 ただし、 これ以外の開発環境はサポー ト されず、 高度なオーサ リ ング機能のサポー トは提供されません。

必要な HTML については、 188 ページの「 Web ページにコント ロールを挿入する HTML」 を参照して ください。

186 PowerBuilder

第 8 章 データウ ィン ドウ Web コン ト ロール ActiveX の使い方

データウィンドウ オブジェク ト

Web ActiveX はデータウ ィ ン ド ウ オブジェ ク ト を使用するこ とで、 検索対象のデータ と、 検索したデータの表示方法を決定し ます。 WebActiveX では、データを検索する必要がない Powersoft レポート (PSR)を表示するこ と もできます。

Web ActiveX に関連付けられた データウ ィ ン ド ウ オブジェ ク ト には、リ ッチテキス ト以外のどの提示様式でも使用できます。

データウ ィン ド ウ オブジェ ク トは、PowerBuilder ラ イブラ リ (PBL) または PowerBuilder 動的ライブラ リ (PBD) に格納されます。データウ ィン ド ウ ラ イブラ リは Web サーバ上に格納され、必要であれば、 InternetExplorer によってダウンロード されます。 ラ イブラ リの位置は URL で示します。 サポー ト されているプロ ト コル (http、 ftp、 file など) を使用していれば、 URL は相対アドレスでも絶対アドレスでもかまいません。

詳細については、194 ページの「 Web ActiveX 対応のデータウィ ンド ウオブジェク ト 」 を参照して ください。

データベースとの接続 Web ActiveX では、 データベース との接続に JDBC を使用します。 これによって、 ユーザはアクセス先のサーバ上にあるデータ ソース (インターネッ ト上のデータベースや中間層のサーバなど) に接続できます。

内部ト ランザクシ ョ ン プロパテ ィ を使用して接続を指定できます。 また、独立した ト ランザクシ ョ ン オブジェ ク ト である Sybase データウ ィン ド ウ ト ランザクシ ョ ン オブジェ ク ト コン ト ロールに接続する こ ともできます。 独立した ト ランザクシ ョ ン オブジェ ク ト を接続に使用する と、SQL COMMIT 文および ROLLBACK 文を実行するタイ ミ ングを制御できるので、 複数のコン ト ロールに対して同じ接続を使用できます。

詳細については、 197 ページの「 データウィ ンド ウ ト ラ ンザク ショ ンオブジェク ト コント ロールの使い方」 を参照して ください。

スク リプ トの記述 Web ActiveX は Internet Explorer 用に設計されているので、 Jscript または ECMAScript 互換のス ク リプ ト言語を使用して、 ス ク リプ ト を記述するこ とができます。

基本的には、 PowerBuilder アプ リ ケーシ ョ ンの場合と同じ メ ソ ッ ド を使用できます。 ただし、 異なる点もあ り ます。

• データ型は、 String 型、 Number 型、 Boolean 型、 および各種オブジェ ク ト型など、 基本的な JavaScript 型にマップされる

データウィンドウ プログラマーズ ガイ ド 187

Web ページにコン ト ロールを挿入する HTML

• ECMAScript 言語では、 参照渡しの引数はサポート されない。 そのため、 参照引数の値をチェ ッ クするかわ りに、 別のメ ソ ッ ド を呼び出して値を検索する

• カタログ データ型はサポー ト されない。 かわりに、 カタログ データ値に対応する整数値を指定する

詳細については、 201 ページの「 Web ActiveX 用スク リ プト の記述」 を参照して ください。

イベン ト Web ActiveX は、 標準のデータウ ィ ン ド ウ コン ト ロールと同じ イベント をサポート していますが、 以下の点で異な り ます。

• Web 規約に準拠するためにイベン ト名が異なる

• ECMAScript 言語のイベン トには戻り値がない。 かわりに、 SetActionCode を呼び出して、 イベン トの結果を制御できる

配布 Web ActiveX は CAB ファ イルと して提供されます。 これによって、 クラ イアン ト ブラ ウザでコン ト ロールをインス トールして登録でき ます。 CAB ファ イルを参照する Web ページをユーザがダウンロードする と、必要に応じて、ブラウザも CAB ファ イルをダウンロード し、 アンパッ ク して、 コン ト ロールを登録します。

詳細については、 202 ページの「 Web ActiveX の配布」 を参照して ください。

Web ページにコン ト ロールを挿入する HTMLObject 要素とそれに関連した Param 要素を使用して、 Web ページにコン ト ロールを取り込みます。 その後、 データベース との接続、 データの検索と更新、 およびユーザ アクシ ョ ンへの対処をコン ト ロールに指示するスク リプ ト を記述します。

Object 要素と Param 要素が Web ページにどのよ うに表示されるかは、次の節で説明します。 PowerBuilder の Web ターゲッ ト ユーザ インタフェースを使用してコン ト ロールを挿入し、プロパテ ィ を設定する と、これらの要素のスク リプ トが自動的に記述されます。

188 PowerBuilder

第 8 章 データウ ィン ドウ Web コン ト ロール ActiveX の使い方

Object 要素仕組み ActiveX コン ト ロールは、Object 要素を使用して、コン ト ロールの GUID

(固有の識別子)やそのコン ト ロールがページで占有するスペースを指定します。 Object タグは次のよ うに指定します。

<OBJECT id=PSDWC1 height=357 classid="CLSID:99991503-9999-1000-8000-080009AC61A9" width=343>

</OBJECT>

Web ターゲッ トで、 システム ツ リーから ド ラ ッグするか、 [挿入|コンポーネン ト ] メニュー項目を使用して Web ActiveX コン ト ロールを挿入する と、 Object タグが自動的に記述されます。

CODEBASE 属性 ユーザにコ ン ト ロールをダ ウ ン ロー ド させる必要があ る場合は、Object 要素に CODEBASE 属性を指定して、 ダウンロードするフ ァ イルを識別できます。 ブラウザは CAB ファ イルをダウンロードする と、そのフ ァ イルをア ンパ ッ ク し、 ユーザのシス テム レジ ス ト リ にActiveX コン ト ロールを登録します。

CODEBASE の値は次の書式で指定します。

url#version

CODEBASE 値には、 通常、 相対 URL を使用します。

CODEBASE="cabs/psdwc90j.cab#9,0,0,3514"

URL URL は、 Web サーバ上でのデータウ ィ ン ド ウ コン ト ロールのCAB ファ イルの位置です。絶対 URL または相対 URL のどちらでも使用できます。

Version version は、 カンマで区切られた 4 つの数字です。 その数字はCAB フ ァ イルのバージ ョ ン と一致しなければな り ません。 CAB フ ァイルのバージ ョ ン番号は、 PowerBuilder のバージ ョ ン番号と同じです。

❖ Windows 環境で 4 つの数字で構成されるバージ ョ ン番号を調べるには

1 Windows エクスプローラで、 PowerBuilder の実行ファ イル、 または PowerBuilder DLL を選択します。

2 メニュー バーから、 [ファ イル|プロパティ] を選択します。

3 [バージ ョ ン情報] タブで、 [フ ァ イル バージ ョ ン] を確かめます。一般的には 9.0.0.5507 です。

例 CODEBASE 属性を指定した Object 要素は、 次のよ うにな り ます。

<OBJECT codeBase=

"http://www.domain.com/psdwc90j.cab#Version=9,0,1,3514

データウィンドウ プログラマーズ ガイ ド 189

Web ページにコン ト ロールを挿入する HTML

" id=PSDWC1 height=357 classid="CLSID:99991503-9999- 1000-8000-080009AC61A9" width=343></OBJECT>

新しいバージ ョ ン 新しいバージ ョ ンの CAB ファ イルを取り込む場合は、 Web ページ上でバージ ョ ン番号を変更して、 ブラウザで新しいバージ ョ ンのコン トロールをインス トールします。

新しいバージ ョ ンの配布の詳細については、 202 ページの「 WebActiveX の配布」 を参照して ください。

プロパティ と Param 要素機能 Web ActiveX と ト ランザクシ ョ ン オブジェ ク ト コン ト ロールには、 接

続情報を指定するい くつかのプロパテ ィがあ り ます。 Web ActiveX には、データウ ィン ド ウ オブジェ ク ト または PSR を指定するプロパテ ィもあ り ます。 これらのプロパテ ィの値は、 Object 要素の内側に Param要素を置いて指定します。

Web ターゲッ ト でコン ト ロールを挿入する と、 Param 要素が自動的にWeb ページに追加されます。 Param 要素の値は、 コン ト ロール プロパテ ィ シート を使用して指定できます。 また、 プロパテ ィ値を設定または変更するためのスク リプ ト を記述するこ と もできます。

挿入された Param 要素は、コン ト ロール プロパティ シート内のページの順序でグループ化されます。 初のグループの Param 要素には、 標準的な ActiveX プロパテ ィが含まれます。 標準的な ActiveX のプロパテ ィに値を割り当てるには、 ActiveX OBJECTn プロパティ ダイアログボッ ク スを使用します。 n は、 そのオブジェ ク ト のページ内での配置順序を示します。

Web ActiveX は、 カスタム プロパテ ィに対しても Param 要素を挿入します。 これらのカスタム プロパテ ィの値は、 Sybase DataWindow WebControl プロパティ ダイアログボッ クスで設定します。 このダイアログボッ クスを開くには、 Web ActiveX コン ト ロールの ActiveX OBJECTnプロパテ ィ ダイアログボッ クスの [ActiveX] ページで [コン ト ロールのプロパティ] ボタンをク リ ッ ク します。

190 PowerBuilder

第 8 章 データウ ィン ドウ Web コン ト ロール ActiveX の使い方

Sybase DataWindow Web Control プロパテ ィ ダイアログボッ ク スには、[全般]、 [ス ク ロール]、 [ ト ランザクシ ョ ン]、 [ユーザ] の 4 つのタブページがあ り、これらのタブ ページを使用してカスタム プロパテ ィ を設定できます。 ト ラ ンザクシ ョ ン オブジェ ク ト コン ト ロールの場合は、 [ ト ランザクシ ョ ン] ページと [ユーザ] ページの 2 つのカスタムプロパテ ィ ページしかあ り ません。

標準的な ActiveX プロパテ ィ

<PARAM VALUE=65536 NAME="_Version"></PARAM><PARAM VALUE=9280 NAME="_ExtentX"></PARAM><PARAM VALUE=5155 NAME="_ExtentY"></PARAM><PARAM VALUE=2 NAME="_StockProps"></PARAM><PARAM VALUE="" NAME=Caption></PARAM>

[全般] ページのプロパテ ィ

<PARAM VALUE="javadwtest.pbl" NAME=SourceFileName> </PARAM><PARAM VALUE="d_emp" NAME=DataWindowObject></PARAM><PARAM VALUE=0 NAME=SuppressEvents></PARAM>

[スクロール] ページのプロパテ ィ

<PARAM VALUE=0 NAME=VScrollBar></PARAM><PARAM VALUE=0 NAME=HScrollBar></PARAM><PARAM VALUE=0 NAME=HSplitScroll></PARAM><PARAM VALUE=0 NAME=LiveScroll></PARAM>

[ ト ランザクシ ョ ン]ページのプロパテ ィ

<PARAM VALUE="Driver='com.sybase.jdbc2.jdbc.SybDriver', URL='jdbc:sybase:Tds:localhost:2638'" NAME=dbParm> </PARAM>

[ユーザ] ページのプロパテ ィ

<PARAM VALUE=dba NAME=LogId></PARAM><PARAM VALUE=sql NAME=LogPass></PARAM>

Web ターゲッ トでの Web ActiveX の使用方法PowerBuilder のセッ ト ア ップ プログラムを実行する と、 Web ActiveXと ト ランザクシ ョ ン オブジェ ク ト コン ト ロールがシステム レジス トリ にインス トールされます。 これらのコン ト ロールは、 システム ツリーの [コンポーネン ト ] タブで調べるこ とができます。

以下の手順は、 Web ターゲッ ト で ActiveX コン ト ロールを持つ Webページを記述する方法です。

❖ システム ツリーでコン ト ロールを探すには

1 [コンポーネン ト ] タブを選択します。

2 ActiveX コン ト ロールを展開します。

データウィンドウ プログラマーズ ガイ ド 191

Web ターゲッ トでの Web ActiveX の使用方法

3 安全にスク リ プ ト を記述する こ とができるコン ト ロールを展開します。

4 以下の名前のコン ト ロールを探します。

• Sybase DataWindow Web Control

• Sybase DataWindow Transaction Object Control

これらの 2 つのコン ト ロールには、 プロパテ ィおよびメ ソ ッ ド ツリー項目があ り ます。 これらを展開する と、使用可能なプロパテ ィと メ ソ ッ ドが表示されます。 Web ActiveX の場合はイベン ト ツリー項目もあ り ます。

❖ Web ページにコン ト ロールを追加するには

• システム ツ リーから Web ページにコン ト ロール名をド ラ ッグします。またはメニュー バーから [挿入|コンポーネン ト| ActiveX] を選択します。 [コン ト ロール] ページを選択し、 ド ロ ップダウン リ ス トボッ ク スで [Control] が選択されている こ と を確認し、 目的のコン ト ロール ( 「Sybase DataWindow Web Control」 または 「SybaseDataWindow Transaction Object Control」) を選択します。

❖ 標準的な ActiveX プロパテ ィ をコン ト ロールに設定するには

1 ページ編集 ビューで、 コン ト ロールを右ク リ ッ ク し、 ポップアップ メニューから [ActiveX OBJECTn プロパティ] を選択します。 nは、そのオブジェ ク トのページ内での配置順序を示します。 コン トロールに名前を指定する と、 メニュー項目には、 OBJECTn ではなくその名前が使用されます。またはHTML ソース ビューで、 Object タグを右ク リ ッ ク し、 ポップアップ メニューから [プロパテ ィ] を選択します。

2 ActiveX プロパティ ダイアログボッ クスで、 目的の値を指定します。 一般的に設定する属性と しては、 以下のよ う なものがあ り ます。

• コードベース - ActiveX コン ト ロールをインス トールするためにブラ ウザがダウン ロー ドする CAB フ ァ イルの URL とバージ ョ ン番号

CODEBASE 属性の詳細については、 188 ページの「 Web ページにコント ロールを挿入する HTML」 を参照

192 PowerBuilder

第 8 章 データウ ィン ドウ Web コン ト ロール ActiveX の使い方

• 幅および高さ - ページ編集 ビューでコン ト ロールのサイズ変更ハンドルを ド ラ ッグしても設定できる

• フォームの名前とスク リプ ト記述

❖ コン ト ロールにカスタムのプロパテ ィを設定するには

• ページ編集 ビューで、 コン ト ロールを右ク リ ッ ク し、 ポップアップ メニューから [Sybase DataWindow Web Control プロパティ] (または [Sybase DataWindow Transaction Object Control プロパティ] )を選択します。

[全般] タブ ページでのデータウ ィ ン ド ウ オブジェ ク ト の指定については、 196 ページの「 コ ント ロ ールに対する データ ウィ ンドウ オブジェク ト の指定」 を参照して ください。

[ ト ランザクシ ョ ン] および [ユーザ] タブ ページでの接続情報の指定については、 198 ページの「 データベースと の接続」 を参照して ください。

カスタム プロパテ ィ ダイアログボッ クスは、HTML ソースビューからは使用できません。

接続プロパテ ィを設定する場所

接続プロパティは一度設定するだけで十分です。 独立した ト ランザクシ ョ ン オブジェ ク ト コン ト ロールを使用している場合は、 [ ト ランザクシ ョ ン] ページおよび [ユーザ] ページで Web ActiveX に対してプロパテ ィ を設定する必要はあ り ません。 ト ランザクシ ョ ン オブジェ クト コン ト ロールでも、 同じプロパテ ィ ページを使用できます。

❖ コン ト ロールのスクリプ トの記述にシステム ツリーを使用するには

1 システム ツ リーの [ページ] タブで、 ク ラ イアン ト サイ ド ツ リーのウ ィ ン ド ウを展開します。

2 ウ ィ ン ド ウの下の [プロパテ ィ] を展開し、 コン ト ロール名を探します。

3 コン ト ロールの プロパティ、 イベン ト 、 またはメ ソ ッ ド を展開します。

4 スク リプ ト エディ タに挿入する項目を探し、 その項目をコード内の目的の位置までド ラ ッグします。

次のよ う な、 完全に修飾された式が挿入されます。

window.dw1.Describe(propertylist)window.dw1.dbParm

データウィンドウ プログラマーズ ガイ ド 193

Web ActiveX 対応のデータウ ィン ドウ オブジェク ト

メ ソ ッ ドのパラ メータに、 固有の変数と式を代入します。

Web ActiveX 対応のデータウィ ンドウ オブジェク トデータウ ィン ド ウ Web コン ト ロール ActiveX では、 以下のいずれかが必要です。

• PBL に格納されている データウ ィ ン ド ウ オブジェク ト

• データ と と もに保存されている PSR

Web ActiveX のプロパテ ィによって、 コン ト ロールに表示するデータウ ィン ド ウ オブジェ ク トが識別されます。

この節では、 以下の操作に関する注意事項について説明します。

• データウ ィン ド ウ オブジェ ク トの定義

• ラ イブラ リの構築

• Web ページ プロパティの設定によるデータウ ィン ド ウ オブジェク ト または PSR の識別

データウィ ンドウ オブジェク トに取り込むことができる内容

データウ ィン ド ウ オブジェ ク トは、PowerBuilder で定義できます。WebActiveX は、データウ ィン ド ウの リ ッチテキス ト以外のすべての提示様式をサポート しています。

ド ロ ップダウン データウ ィン ド ウなど、 すべての編集様式を使用できます。 プロパティには、 PowerScript で記述した条件式を取り込むこ とができ、 計算フ ィールドでは標準データウ ィ ン ド ウに提供される関数を使用できます。

Web ページでは、 Jscript またはそのほかの ECMAScript 互換ス ク リプト言語で記述したス ク リプ ト を組み込んで、 データウ ィ ン ド ウの提示様式やデータを操作できます。

194 PowerBuilder

第 8 章 データウ ィン ドウ Web コン ト ロール ActiveX の使い方

PowerBuilder ライブラリ内でのデータウィ ンドウ オブジェク トの管理ライブラ リの種類 Web ActiveX は、 PBL または PBD に格納されているデータウ ィン ド ウ

オブジェ ク ト を使用します。

PBD を使用する場合 Web ブラウザは、 Web ActiveX に指定されている ラ イブラ リ をダウンロード して、 一時キャ ッシュに格納します。 ユーザはキャ ッシュからラ イブラ リ をコピーでき るので、 データ ウ ィ ン ド ウ オブジェ ク ト のソース コードをユーザに非公開にする場合は、 配布前に PBL を PBDに変換する必要があ り ます。

ラ イブラ リはダウンロード されるので、 できるだけ小さ く しておく こと をお勧めします。 ラ イブラ リ を小さ くするためにも、 PBL を PBD に変換する必要があ り ます。

PowerBuilder のバージ ョ ン

PBL はバージ ョ ン 9 以降に移行しなければな り ません。

データウィンドウ オブジェク トのライブラリへのグループ化

PBL または PBD は、Web サーバからすべてダウンロード されます。 そのため、 Web ページで必要となるオブジェ ク トだけをラ イブラ リに取り込むよ うにして く ださい。 異なる Web ページで使用されるデータウ ィン ド ウ オブジェク ト を 1 つのライブラ リに取り込むこ とができます。 ただし、 ユーザにとって不要なページで使用されるオブジェ ク トがダウンロード されないよ うにする必要があ り ます。

データ ウ ィ ン ド ウ オブジェ ク ト をどのよ う にラ イブラ リ にグループ化するかを決める際に、 ユーザが通常表示するページで使用されるオブジェ ク ト をラ イブラ リに取り込むよ うにして ください。 ダウンロードを一度に行えば、 通信のオーバーヘッ ドを大幅に減らすこ とができますが、 そのよ う な処理は、 ダウンロードするオブジェ ク ト を使用するページをユーザが表示する場合にしか意味があ り ません。

データウィンドウ オブジェク ト内でのほかのリ ソースの使い方

データウ ィン ド ウ オブジェ ク トでは、 ビッ ト マップやカーソルなどの外部ソースを使用できます。PBD の構築時に リ ソース ファ イルを使用すれば、 これらの リ ソースをラ イブラ リに取り込むこ とができます。また、 このよ う な リ ソースは、 Web サーバ上に格納しておく こ と もでき ます。 Web サーバ上のフ ァ イルの位置は、 データ ウ ィ ン ド ウ オブジェ ク ト の相対パスで示します。 必要であれば、 ブラウザはこれらのリ ソースを検索します。

データウ ィン ド ウ オブジェ ク トでは、ド ロ ップダウン データウ ィ ン ドウなど、 ほかのデータウ ィ ン ド ウ オブジェ ク ト を使用できます。 ただし、 これらのオブジェ ク トは、 ダウンロード したラ イブラ リ内に入れておく必要があ り ます。

データウィンドウ プログラマーズ ガイ ド 195

Web ActiveX 対応のデータウ ィン ドウ オブジェク ト

コン ト ロールに対するデータウィン ドウ オブジェク トの指定

コン ト ロール内に表示するデータ ウ ィ ン ド ウ オブジェ ク ト を識別するには、 以下の 2 つのプロパティの値を指定します。

• SourceFileName

• DataWindowObject

これらの値は、 Sybase DataWindow Web Control のプロパテ ィ ダイアログボッ ク スの [全般] ページで指定します。

SourceFileName について

SourceFileName の値には、 コン ト ロールに対するデータウ ィン ド ウ オブジェ ク ト を含むラ イブラ リ名を指定します。 このプロパテ ィ にはURL またはファ イル パスを指定できます。以下に代表的な例をいくつか示します。

• 絶対アドレスによる URL:http://www.domain.com/dwlibraries/financedws.pbd

• 相対アドレスによる URL:financedws.pbddwlibraries/financedws.pbd

• 絶対アドレスによるファ イル パス (ページの開発時に有効) :d:/web project/dwlibraries/financedws.pbd

Web ActiveX プロパテ ィ シートで、 [参照] ボタンを使用してライブラリ を検索する場合は、URL ではな く ファ イル システムをブラウズします。 フ ィールドにフル パスが挿入されている と、 Web ページの配布時に、 正しいパスになるよ うにパスを編集する必要があ り ます。

Web ターゲッ ト PowerBuilder Web ターゲッ ト で作業を行っている場合は、 ライブラ リ と Web ページの両方をワークスペースに取り込むほうがよいでし ょ う。 こ うする こ とで、 SourceFileName は設計環境と配布環境の両方で有効な相対パスにな り ます。

実行時における SourceFileName の変更 スク リ プト 内で SourceFileNameの値を 変更でき ま す。 その場合、 新しい ラ イブ ラ リ で有効な値をDataWindowObject に指定しなければな り ません。 また、 独立した ト ランザクシ ョ ン オブジェ ク ト を使用している場合は、 SetTransObject を再度呼び出す必要があ り ます。

DataWindowObject について

DataWindowObject の値は、 SourceFileName で指定されたライブラ リに格納されているデータウ ィ ン ド ウ オブジェ ク トの名前を示します。

196 PowerBuilder

第 8 章 データウ ィン ドウ Web コン ト ロール ActiveX の使い方

開発環境で ラ イ ブ ラ リ に ア ク セ ス で き る 場合 (ラ イ ブ ラ リ がPowerBuilder ワークスペースの一部で、相対パスによる URL を指定している場合など) 、 ラ イブラ リに格納されているデータウ ィ ン ド ウ オブジェ ク ト のド ロ ップダウン リ ス ト がプロパテ ィ シー ト に表示されます。

Powersoft レポートの表示

データウ ィ ン ド ウ オブジェ ク ト のかわ りに PSR ファ イルを表示するには、 その PSR ファ イルの URL を DataWindowObject の値と して指定し、 SourceFileName には何も指定しません。

データウィ ンドウ ト ランザクシ ョ ン オブジェク ト コン トロールの使い方機能 データウ ィ ン ド ウ ト ランザクシ ョ ン オブジェ ク ト コン ト ロールを使

用する と、 Web ActiveX から独立してデータベース接続を確立できます。 データウ ィ ン ド ウ ト ランザクシ ョ ン オブジェ ク ト コン ト ロールは、PowerBuilder の ト ランザクシ ョ ン オブジェ ク トに類似しています。

内部ト ランザクシ ョ ン管理または独立した トランザクシ ョ ン オブジェ ク ト

Web ActiveX でも ト ランザクシ ョ ン オブジェ ク ト コン ト ロールでも、データベース接続を確立できます。 どちらを使用するかは、 ニーズによって異な り ます。

ト ランザクシ ョ ン オブジェ ク ト コン ト ロールを使用する主な理由には、 以下の 2 つがあ り ます。

• 複数の Web ActiveX コン ト ロールで 1 つのデータベース接続を使用できるので、 複数接続によるオーバーヘッ ドが軽減される

• SQL CONNECT 文や DISCONNECT 文に相当する Connect メ ソ ッドや Disconnect メ ソ ッ ド を使用して、 ト ランザクシ ョ ン処理を制御できる。 AutoCommit プロパティ を False に設定する と、 Commitメ ソ ッ ドや Rollback メ ソ ッ ド を使用して、 更新内容をコ ミ ッ ト またはロールバッ クするタ イ ミ ングを制御できる

コン ト ロールが 1 つしかな く、 単にデータ検索をするだけの場合は、以上の機能はいずれも必要あ り ません。 個別にコン ト ロールのインスタンスを作成するかわりに、 Web ActiveX 自体の接続プロパテ ィ を設定して、 データベースにアクセスするたびに接続や接続解除を行う ことができます。

データウィンドウ プログラマーズ ガイ ド 197

データベースとの接続

ステータスとエラー情報

ト ランザクシ ョ ン オブジェ ク ト コン ト ロールは、データベースからステータス情報を受け取り ます。 PowerBuilder の ト ランザクシ ョ ン オブジェ ク ト プロパテ ィに相当する以下のメ ソ ッ ド を使用する と、 データベース操作の成否をテス ト し、 ステータス情報を取得できます。

• GetSQLCode

• GetDBCode

• GetSQLErrText

• GetSQLNRows

• GetSQLReturnData

ト ランザクシ ョ ン オブジェク ト コン トロールの非表示

ト ランザクシ ョ ン オブジェ ク ト コン ト ロールにはビジュアル要素はあ り ませんが、Web ページの BODY セクシ ョ ンに ト ランザクシ ョ ン オブジェク ト コン ト ロールがある場合は、 スペースを占有します。 このよ う な場合、 HEIGHT 属性と WIDTH 属性をご く小さい値に設定するか、 スタ イル シー トの設定を使用して、 このコン ト ロールを非表示にします。

ト ランザクシ ョ ン オブジェ ク ト コン ト ロールが HEAD セクシ ョ ンにある場合は、 PowerBuilder Web ターゲッ ト でそのプロパティ シートにアクセスできません。

データベース接続の確立に関するプロパテ ィの設定については、 次の「 データベースと の接続」 を参照して ください。

データベースとの接続接続プロセス Web ActiveX および ト ランザクシ ョ ン オブジェ ク ト コン ト ロールは、

JDBC を使用してデータベースに接続します。 これらのコン ト ロールの Java ク ラスが、データベース ベンダの JDBC インタフェースの Javaク ラス と対話します。 ベンダのク ラスはデータウ ィ ン ド ウ と対話します。

データベース ベンダから提供される JDBC ド ライバ

使用する予定の JDBC データベース ド ラ イバのク ラスは、 ユーザのブラウザで使用できなければな り ません。 ユーザが JDBC ド ラ イバ ク ラスをインス トールしていない場合は、Web ActiveX の場合と同様に、それらがダウンロード されてインス トールされる よ う に Web ページを設定できます。

JDBC ド ラ イバ ク ラスを自動的にインス トールさせるには、 次の方法を使用できます。

198 PowerBuilder

第 8 章 データウ ィン ドウ Web コン ト ロール ActiveX の使い方

1 データベース ベンダの Java ク ラスを CAB ファ イルに変換します。変換には、Microsoft 社が提供する CABARC ユーテ ィ リ テ ィを使用できます。 ク ラスは、 ZIP アーカイブ内にあっても、ディ レ ク ト リツ リー内にあってもかまいません。

2 CAB ファ イルの CODEBASE 属性を指定した Object 要素を Webページに追加します。

ブラウザが CAB ファ イルをダウンロード し、 その内部ク ラス パスにク ラスを追加します。 ただし、 CLASSPATH 環境変数は変更されません。

データウ ィン ド ウ オブジェ ク トの定義に JDBC ド ラ イバを使用するには、システム ク ラス パスに JDBC ド ラ イバ ク ラスを取り込むなど、さらにある種のインス トール作業が必要にな り ます。

詳細については、 PowerBuilder の 『データベース との接続』 マニュアルまたはオンライン ヘルプを参照して ください。

接続プロパテ ィ ト ランザクシ ョ ン オブジェ ク ト または Web ActiveX の接続情報は、 オブジェ ク ト要素の内側に Param 要素を置いて設定します。 独立した トランザクシ ョ ン オブジェ ク ト と Web ActiveX の内部接続プロパテ ィのどちらを使用しているかに関係な く、 接続プロパティは同じです。

表 8-1: ト ランザクシ ョ ン オブジェク ト コン ト ロールおよび Web ActiveX コン ト ロールの接続プロパテ ィ

dbParm について JDBC ド ラ イバの場合、 dbParm プロパテ ィで接続に関する必須情報を指定します。 このプロパテ ィ値は、 低 2 つ以上の値から構成される文字列です。 これらの値は、 使用する ド ラ イバとデータベースの URLを、 ド ラ イバが判別可能な書式で表します。

Param 名 意味 標準値

LogID データベースへのログインに必要な ID

dba (ASA データベースのデフォルトの ID)

LogPass データベースへのログ イ ンに必要なパスワード

sql (ASA データベースのデフォルトのパスワード)

dbParm ド ラ イバの Java ク ラスおよびデータベースの URL を指定する文字列

JConnect ド ラ イバの場合 : Driver='com.sybase.jdbc.SybDriver',URL='jdbc:sybase:Tds:199.1.1.1:9999/mydatabase'

Lock 接続の ア イ ソ レ ーシ ョ ン レベル

ベンダ固有の値

AutoCommit データベースの更新後、 直ちにコ ミ ッ トを実行するかど うか

False (デフォル ト )

データウィンドウ プログラマーズ ガイ ド 199

データベースとの接続

書式は次のとおりです。

Driver='JDBCclassname',URL='database_url'

ド ラ イバのク ラ ス名およびデータベース URL の書式については、DBMS ベンダが提供するマニュアルを参照して ください。

Param 要素でのこれらのプロパテ ィの設定例については、190 ページの「 プロパティ と Param 要素」 を参照して ください。

開発環境での JConnect

データベース オブジェク ト を定義する際に JConnect を使用するには、ク ラ ス パスに JConnect の Java ク ラスを取り 込みます。AUTOEXEC.BATに次のよう に指定します。

SET CLASSPATH=d:¥Program Files¥Sybase¥Shared¥JConnect-5_5

データベースとの接続とデータの検索

データベースに接続してデータを検索するには、 ス ク リプ ト を記述しなければな り ません。 このスク リプ トは、 [検索] ボタンの一部と して記述できるほか、ウ ィン ド ウの onLoad スク リプ ト にコードを記述して自動的に検索する こ と もできます。

たとえば、trans_1 とい う名前のデータウ ィン ド ウ ト ランザクシ ョ ン オブジェク ト コン ト ロールを使用して、データベースに接続し、dw_1 とい う名前の Web ActiveX のデータを検索するには、 次のよ う なス ク リプ ト を記述します。

trans_1.Connect( );dw_1.SetTransObject( trans_1 );dw_1.Retrieve( );

内部ト ランザクシ ョ ン プロパティ を使用する と、 Web ActiveX は自動的にデータベース と接続します。 この場合のスク リプ トは簡単で、 次のよ うにな り ます。

dw_1.Retrieve( );

200 PowerBuilder

第 8 章 データウ ィン ドウ Web コン ト ロール ActiveX の使い方

Web ActiveX 用スクリプ トの記述データ ウ ィ ン ド ウのデータや提示様式を制御する ス ク リ プ ト を Webページに記述できます。 メ ソ ッ ド と イベン トは標準のデータウ ィ ン ドウで使用する ものと類似していますが、 イベン ト名は JavaScript 命名規則に準拠するよ うに変更されています。

プロパテ ィ、 メ ソ ッ ド、 イベン ト 、 およびデータウ ィン ド ウ オブジェク トのプロパテ ィ と式の機能については、 『データウ ィ ン ド ウ リ フ ァレンス』 マニュアルを参照して ください。

コン ト ロールのプロパテ ィ、 メ ソ ッ ド、 およびイベン ト の リ ス ト は、システム ツ リーの [コンポーネン ト ] ページまたはほかの ActiveX コン ト ロール確認用ツールで表示できます。

スク リプ ト エディ タで、 Web ActiveX のすべてのイベン トのス ク リプト を記述できます。

❖ Web ターゲッ トで特定のイベン トのスク リプ ト を記述するには

1 ページ編集 ビューで、 Web ページに挿入した Web ActiveX を選択します。 またはスク リプ ト エディ タで、左端のド ロ ップダウン リ ス トから目的のデータウ ィン ド ウ Web ActiveX 名を選択します。

2 スク リプ ト エディ タで、 2 番目に表示されたド ロ ップダウン リ ストのイベン ト を選択します。 ド ロ ップダウン リ ス トに、 イベン ト名と スク リプ トで使用可能なパラ メータが表示されます。

3 3 番目に表示されたド ロ ップダウン リ ス ト で、 ス ク リプ ト言語として 「JScript」 を選択します。

4 イベン ト のス ク リ プ ト を記述します。 何も入力せずに、 メ ソ ッ ドを呼び出した り、 プロパテ ィにアクセスした りするには、 システム ツ リーの [ページ] タブからエディ タに目的のメ ソ ッ ドやプロパティ を ド ラ ッグします。

メソ ッ ドの引数および戻り値のデータ型基本的なデータ型 JScript では、 以下の 3 つの基本的なデータ型をサポー ト しています。

• String 型

• Number 型

• Boolean 型

データウィンドウ プログラマーズ ガイ ド 201

Web ActiveX の配布

メ ソ ッ ドの引数と戻り値、 およびイベン ト パラ メータは、 以上のデータ型のいずれか、 またはオブジェ ク ト型です。

GetItemDecimal など、 特殊なデータ型を扱うデータウ ィ ン ド ウ メ ソ ッドは、 Web ActiveX には使用できません。 GetItemNumber など、 よ り一般的なデータ型を扱う メ ソ ッ ド を使用して ください。

Date データ型 PowerBuilder には日付および時間を表すい くつかのデータ型があ り ますが、 JScript ではこれらはすべて Date オブジェ ク ト にマップされます。

カタログ データ型 PowerBuilder の カタログ データ型には名前付きの値が含まれますが、JScript ではそれぞれの値は数値です。各 カタログ データ型 (およびその意味) の リ ス トについては、 『データウ ィ ン ド ウ リ フ ァ レンス』 マニュアルを参照して ください。

イベン トのリ ターン コードの設定

データウ ィ ン ド ウ イベン トで説明したイベン トの リ ターン コードは、Web ActiveX にも当てはま り ます。 ただし、 JScript ではイベン ト の戻り値はサポート していません。 このため、 リ ターン コードを指定するには、 イベン ト スク リプ トの 後の行と して、SetActionCode メ ソ ッ ドを呼び出します。

たとえば、 onItemError イベン ト の リ ターン コードを使用する こ とで、ユーザが入力したデータが入力条件則に違反したと きにどのよ う な措置を取るかを決定できます。 リ ターン コード と して 3 を指定する と、Web ActiveX でデータは拒否されますが、 フォーカスを変更する こ とができます。 onItemError イベン ト に対するスク リプ ト の 後に、 次のよ う な文を指定します。

This.SetActionCode(3);

Web ActiveX の配布配布用 CAB フ ァイル PowerBuilder のセッ ト アッ プ プログラムを実行すると 、PSDWC90.CAB

フ ァ イルが Sybase¥Shared¥PowerBuilder ディ レ ク ト リ にインス トールされます。 この CAB ファ イルには、 Web ブラウザ (Internet Explorer)が Web ActiveX および ト ランザクシ ョ ン オブジェ ク ト コン ト ロールをインス トールする際に必要とするファ イルや情報がすべて格納されています。 CAB ファ イルには、 以下のものなどが格納されます。

202 PowerBuilder

第 8 章 データウ ィン ドウ Web コン ト ロール ActiveX の使い方

• Open Software Distribution Information ファ イル

• コン ト ロールの DLL

• JDBC ド ラ イバの Java ク ラス ファ イル

ブラウザは、 CAB ファ イル内の情報を使用して、 ActiveX コン ト ロールのインス トールを管理します。 ブラウザは、 コン ト ロールをシステム レジス ト リにインス トールし、 その Java ク ラス パスを設定します。したがって、開発者は CAB ファ イルの検索方法をブラウザに指定するだけです。

❖ Web ActiveX およびト ランザクシ ョ ン オブジェク ト コン ト ロールをユーザが使用できるようにするには

1 Web サーバ上に CAB ファ イルを配置します。

2 Object 要素の CODEBASE 属性に、 Web ページ上の CAB ファ イルを指定します。

Web ターゲッ ト では、 以上の 2 つの操作を次のよ うに行う こ とができます。

• CAB ファ イルをプロジェ ク トに取り込み、 ほかのプロジェ ク トフ ァ イルと一緒に Web サーバに配布します。

• ActiveX プロパティ シートで、[コードベース] に値を指定します。[コードベース] の値は、 CAB ファ イルの名前、相対パス、およびバージ ョ ン番号で構成されます。 CAB フ ァ イルが PowerBuilderWeb ターゲッ トの一部の場合は、 参照ボタンを使用する と、 URLの選択 ダイアログボッ クスが表示されます。 このダイアログボックスの [プロジェ ク ト ] ページで CAB ファ イルを選択できます。

CODEBASE の正しい値の指定については、188 ページの「 Web ページにコント ロールを挿入する HTML」 を参照して ください。

新しいバージ ョ ンの配布

CODEBASE 属性の値を構成するバージ ョ ン番号によって、ブラウザが新しいバージ ョ ンの ActiveX コン ト ロールをダウンロード してインストールするかど うかが決ま り ます。ブラウザは、 CODEBASE 属性値に指定されているバージ ョ ン番号とシステム レジス ト リ にインス ト ールされている コン ト ロールのバージ ョ ンを比較し ます。 2 つのバージ ョ ン番号が一致しない場合、ブラウザは CAB ファ イルを再度ダウンロード して、 インス トールを行います。

データウィンドウ プログラマーズ ガイ ド 203

Web ActiveX の配布

❖ 新しいバージ ョ ンの PowerBuilder を取り込む際に、 新しい CAB ファ イルを配布するには

1 PowerBuilder DLL のバージ ョ ン番号をチェ ッ ク して、 新しいバージ ョ ン番号を探します (188 ページの「 Web ページにコント ロ ールを挿入する HTML」 を参照)。

2 CAB ファ イルを参照する Web ページを編集します。 CODEBASE属性のバージ ョ ン番号を新しいものに変更します。

3 Web サーバの CAB ファ イルを新しいバージ ョ ンに置き換えます。

204 PowerBuilder

索引

数字1 ページに複数のデータウ ィ ンド ウ オブジェ ク ト

146

CCAB ファ イル、 Web コン ト ロール ActiveX 202Case 関数、 Web データウ ィ ンド ウ 126CODEBASE HTML 属性、 Web ActiveX 189COMMIT 文と SetTransObject 関数 25CONNECT 文と SetTransObject 関数 25CreateComponent メ ソ ッ ド、 例 156Create メ ソ ッ ド 76CrosstabDialog 関数 57

DDataModified ステータス 47DataWindowObject プロパティ

Web コン ト ロール ActiveX 196DataWindowObject プロパティ、 Web コン ト ロー

ル ActiveX 20DBError イベン ト 43Describe メ ソ ッ ド 40, 74, 76, 78DISCONNECT 文と SetTransObject 関数 25

EEAServer

Web データウ ィ ンド ウの状態の保持 176カスタム コンポーネン トのインスタンス化

174カスタム コンポーネン トのインス トール

169データベース接続キャ ッシュ 137

データウィ ンドウ プログラマーズ ガイ ド

ロ ッ ク された PBL 168EAStudio

HTML ジェネレータ コンポーネン ト 120EditChanged イベン ト 34Error イベン ト 45

GGenerateHTMLForm メ ソ ッ ド 69Generate メ ソ ッ ド、 例 167GetChild メ ソ ッ ド 54GetItemDateTime メ ソ ッ ド 36GetItemDate メ ソ ッ ド 36GetItemDecimal メ ソ ッ ド 36GetItemNumber メ ソ ッ ド 36GetItemString メ ソ ッ ド 36GetItemTime メ ソ ッ ド 36GetMessageText メ ソ ッ ド 58GetText 関数 34

HHTML

HTML の生成 69コン ト ロールに追加する 128コン ト ロールに含める 128データウ ィ ンド ウ データの保存 60

HTML データウ ィ ン ド ウ、 「Web データウ ィ ンドウ」 を参照 117

HTML プレビュー 135

IInfoMaker レポート ペインタ 3ItemChanged イベン ト 34, 35ItemError イベン ト 34, 36

205

索引

Jjava PowerDynamo オブジェ ク ト 、 例 156JavaScript キャ ッシュ、 Web データウ ィ ンド ウ 132JConnect 200JSP ターゲッ ト

カスタム タグ ラ イブラ リ 153ク ラス パス 151

LLibraryExport 関数 78

MMessageText イベン ト 58Modify メ ソ ッ ド

基本的な使い方 40, 74クエ リ モードの使い方 79グラフの使い方 103ク ロスタブ 59

Modify メ ソ ッ ドによ るオブジェク トの破棄 75Modify メ ソ ッ ドの構文の生成 75

NNetscape ブラウザ、 絶対位置 132NewModified ステータス 47New ステータス 47NotModified ステータス 47

OObject 要素、 Web コン ト ロール ActiveX 188OneTrip メ ソ ッ ド、 Web データウ ィ ンド ウ 175

PParam 要素、 Web コン ト ロール ActiveX 190PBD ファ イル 「ラ イブラ リ 」 を参照 12PBL ファ イル 「ラ イブラ リ 」 を参照 12

206

PowerBuilder ラ イブラ リ 「ラ イブラ リ 」 を参照 12

PowerDynamo ターゲッ トWeb データウ ィ ン ド ウのスク リプ トの記述

154カスタム サーバ コンポーネン トのインスタン

ス化 174Powersoft レポー ト

Web アプ リ ケーシ ョ ン 9Web コン ト ロール AcriveX での表示 21概要 3, 13データウ ィ ン ド ウ コン ト ロールでの表示 20データウ ィ ン ド ウ プラグイン 9データベース との接続が不要 23

Print メ ソ ッ ド 53PSR ファ イル 「Powersoft レポート 」 を参照

RRetrieveEx メ ソ ッ ド、 例 161Retrieve メ ソ ッ ド

Web データウ ィ ン ド ウの例 160エラーの処理 42使い方 27

ROLLBACK 文と SetTransObject 関数 25

SSelfLink 式の中の引用符 163SelfLink 引数、 Web データウ ィ ン ド ウ 162SetAction メ ソ ッ ド、 例 165SetBrowser メ ソ ッ ド、 例 159SetDWObject 関数、 例 157SetHTMLObjectName メ ソ ッ ド、 例 159SetItem メ ソ ッ ド 36SetText 関数 34SetTransObject メ ソ ッ ド 25SetTrans メ ソ ッ ド

Web データウ ィ ン ド ウの例 160概要 23

SetWeight 関数、 例 158ShareData メ ソ ッ ド 54SourceFileName プロパティ

PowerBuilder

索引

Web コン ト ロール ActiveX 20, 196SyntaxFromSQL メ ソ ッ ド 77

UUpdate 関数

エラーの処理 42使い方 28

URLWeb コン ト ロール ActiveX 196

WWeb アプ リ ケーシ ョ ン とデータウ ィ ンド ウ テク

ノ ロジ 6, 7, 117, 185Web コン ト ロール ActiveX

CAB のバージ ョ ン番号 189CODEBASE HTML 属性 189DataWindowObject プロパティ 20, 196HTML の Object 要素 188SourceFileName プロパティ 20, 196Web ターゲッ ト 186, 191Web ブラウザ 186イベン トの リ ターン コード 202概要 8, 185実行中のデータウ ィ ン ド ウ オブジェク ト の設

定 196スク リプ トの記述 201データウ ィ ン ド ウ オブジェク ト 194データの検索 200データベース との接続 198ト ランザクシ ョ ン オブジェク ト 197配布 202ラ イブラ リ 195ラ イブラ リ バージ ョ ン 195

Web ターゲッ ト オブジェ ク ト モデル 142Web データウ ィン ド ウ

EAServer 接続キャッシュ 137HTML ジェネレータ コンポーネン ト 120HTML の生成 167HTML バージ ョ ン 131

データウィ ンドウ プログラマーズ ガイ ド

JavaScript キャ ッシュ 132JavaScript ジェネレータ ウ ィザード 132OneTrip メ ソ ッ ド 175PSR ファ イル 157SelfLink プロパティ 130SRD ファ イル 157インス トール場所 149オブジェ ク ト名 159外国語テキス ト 127概要 7, 117カスタム コンポーネン トのインスタンス化

174カスタム コンポーネン トのインス トール 169カスタム サーバ コンポーネン ト 169ク ラ イアン ト サイ ド スク リプ ト 154ク ラ イアン ト サイ ドのスク リプ トの記述 144ク ラ イアン ト制御のためのイベン ト 144ク ラ イアン ト制御のメ ソ ッ ド 145サーバ コンポーネン ト 、 概要 151サーバ コンポーネン トのインスタンス化 156サーバ コンポーネン トのプログラ ミ ング 154サーバ コンポーネン ト プロパティ 171サービス ク ラス 178式 126実行中のデータウ ィ ン ド ウ オブジェク ト の設

定 157集計関数 126状態の保持 176スク リプ ト内でのセルフ リ ンク情報 162生成コードのサイズ 158データウ ィ ン ド ウ オブジェク ト 122データ操作 129データの検索 160データベース との接続 160デザインタ イム コン ト ロール 142ナビゲーシ ョ ン 129ピクチャ ボタン 130複数、 1 ページ 146ブラウザ 131ブラウザ固有の HTML 159プロセス 118ページの リ ロード 162

207

索引

ページ パラ メータ 162, 165ユーザ アクシ ョ ン 165ロ ッ ク された PBL 168

Web データウ ィ ン ド ウ コンテナ ウ ィザード 138Web データウ ィ ン ド ウでの表示書式 124Web データウ ィ ン ド ウの外部ソース関数 126Web データウ ィン ド ウのサーバ サイ ドでの検証 178Web データウ ィ ン ド ウのサービス ク ラス 178Web データウ ィ ン ド ウの入力条件則 124Web データウ ィン ド ウのピクチャ コン ト ロール 131Web データウ ィ ン ド ウのピクチャ ボタン 130Web データウ ィ ン ド ウ用の SRD ファ イル 157Web ブラウザ

Web コン ト ロール ActiveX 186Web データウ ィ ン ド ウ 131, 159データウ ィ ン ド ウ プラグイン 9

あアクセン ト記号、 Web データウ ィ ン ド ウ 127アプリ ケーシ ョ ン

アーキテクチャ 6データウ ィ ン ド ウ オブジェク トの使い方 13

いイベン ト

DBError 43Error 45ItemChanged 35ItemError 36Web コン ト ロール ActiveX 201, 202Web データウ ィ ン ド ウ ク ラ イアン ト コン ト ロール

144コードの実行 44

印刷複数のデータウ ィ ンド ウ オブジェ ク ト を 1 ページ

に 54レポート 53

インスタンスのプール機能、 EAServer 168

208

うウ ィザード

Web データウ ィ ン ド ウ コンテナ 138Web データウ ィ ン ド ウの JavaScript ジェネレー

タ 132ウ ィ ンド ウ ペインタ、 データウ ィ ンド ウ コン ト

ロールの配置 15

えエディ ッ ト コン ト ロール

データウ ィ ン ド ウ コン ト ロール 32, 34, 35データス ト ア オブジェク ト 92

エラー、 データベースの検索および更新 42

か外国語文字セッ ト 127外部ソースからインポート されたデータ 31, 91カスタム データス ト ア オブジェ ク ト 89

き行

データウ ィ ン ド ウ コン ト ロールの行のステータ

ス 47ユーザ指定の検索の提供 79

くクエ リ モード

消去 82条件指定の必須化 83ソート 82ユーザへの提供 79

クエ リ モードのソート 82ク ラ イアン ト コン ト ロール、 Web データウ ィ ン ド

ウ 121ク ラ イアン ト / サーバ アプ リ ケーシ ョ ン 6グラフ

PowerBuilder

索引

概要 101グラフの情報の取得 105実行中の修正 102データウ ィ ン ド ウ コン ト ロールでのデータ プ

ロパティの修正 110データの保存 108データ表示の修正 109データ プロパティ 105内部表現 103プロパティ 103

グラフでの Clicked イベン ト 113グラフでのデータの保存 108グラフでのポイン ト アン ド ク リ ッ ク 113グラフのサブオブジェ ク ト grAxis 103グラフのサブオブジェ ク ト grDispAttr 103ク ロスタブ

アプ リ ケーシ ョ ンでの使い方 56実行時のユーザの再定義 57実行中の修正 59基になるデータの表示 57

け言語、 文字セッ ト 127検証、 サーバ サイ ド 178

こコードの実行 44コン ト ロール、 Web データウ ィ ンド ウでのサ

ポート 123

さサーバ コンポーネン ト

Web データウ ィン ド ウ 151サーバ サイ ド スク リプ トからのアクセス

154プロパティ 171

サーバ コンポーネン ト 、 Web データウ ィ ン ド ウ 120

データウィ ンドウ プログラマーズ ガイ ド

削除バッファデータウ ィ ン ド ウ 31データス ト ア 92

し式、 データウ ィ ン ド ウのプロパティ値の式の代入

74実行

グラフへのアクセス 102データウ ィ ン ド ウ オブジェク ト と コン ト ロー

ルの関連付け 19, 20データウ ィ ン ド ウ オブジェク ト の修正 74

実行時に修正する SELECT 文 81集計関数、 Web データウ ィ ンド ウ 126主バッファ 31, 92

すスク リプ ト 、 グラフの修正 102

せ接続キャッシュ、 EAServer で定義する 137絶対位置、 Netscape ブラウザ 132選択条件 「クエ リ モード」 を参照 79

て提示様式

Web コン ト ロール AcriveX でのサポート 194Web データウ ィン ド ウでのサポー ト 123リ ス ト 3

データWeb コン ト ロール ActiveX 200Web データウ ィン ド ウ 123, 160共有 93グラフでの保存 108検索と更新 27更新 28

209

索引

データウ ィ ン ド ウ エディ ッ ト コン ト ロール内のテキス ト 32

データウ ィ ン ド ウ オブジェク ト1 ページに印刷 54HTML プレビュー 135HTML の生成 60Web データウ ィ ン ド ウ、 サーバへの設定 169Web データウ ィ ン ド ウ、 ス ク リプ ト での設定

157Web データウ ィ ン ド ウのデザイン 122Web データウ ィ ン ド ウ用の PSR ファ イル 157Web データウ ィ ン ド ウ用の SRD ファ イル 157概要 1, 2基本的な使い方 13グラフ 101コン ト ロールとの関連付け 17, 19, 20定義 3提示様式 3データ ソース 4データの表示 22動的な使用 73動的に作成 76名前 16プロパティ 40編集 18前準備 13レポートの作成 51

データウ ィ ン ド ウ オブジェク トに追加するグラフ ィ ッ ク 75

データウ ィ ン ド ウ オブジェク トのテキス ト コン トロール 75

データウ ィ ン ド ウ コン ト ロールDataObject プロパティ 19DBError イベン ト 43ItemChanged イベン ト 35ItemError イベン ト 36PSR ファ イルの表示 20, 21, 23ウ ィ ンド ウに配置 15エラーの処理 42外部ソースからのデータのインポート 31概要 1, 7, 10, 15カラムのステータス 47行のステータス 47

210

グラフ 105グラフ メ ソ ッ ドの使い方 110ク ロスタブの使い方 56現行テキス トへのアクセス 34更新時の行 / カラムのステータスの使用法 47コード内での命名 16コードの実行 44実行時のオブジェ ク ト との関連付け 19, 20指定された項目へのアクセス 36データの管理 31ト ランザクシ ョ ン オブジェク ト の設定 76名前 16入力の処理 33バッファ 31, 47メ ソ ッ ド 38レポートの作成 51

データウ ィ ン ド ウ コン ト ロールとデータウ ィ ン ドウ オブジェ ク ト の名前 16

データウ ィ ン ド ウ コン ト ロールの DataObject プロパティ 19

データウ ィ ン ド ウ コン ト ロールのカラムのステータス 47

データウ ィ ン ド ウ コン ト ロールの項目 32データウ ィ ン ド ウ テク ノ ロジ 1, 5データウ ィ ン ド ウの行またはカラムのステータス

47データウ ィ ン ド ウの実行時のエラー 45データウ ィ ン ド ウ プラグイン 2, 9データウ ィ ン ド ウ ペインタ

概要 13使い方 14データウ ィ ン ド ウ オブジェク ト の編集 18

データス ト ア オブジェク トメ ソ ッ ド 92外部ソースからのデータのインポート 91概要 2カスタム 89共有データ 93データへのアクセス 91バッファ 92

データス ト ア オブジェク ト から継承したユーザ オブジェク ト 89

データ ソース

PowerBuilder

索引

外部ソース 31, 91型 4

データ ソース と してのファ イル 4データベース

更新 28自動接続 23スナップシ ョ ッ ト接続 23接続の自動解除 23データ ソース 4データの検索、 表示、 操作 2, 27データベース との通信 22ト ランザクシ ョ ンの管理 25

データベース エラー 42データベース との接続

Web コン ト ロール ActiveX 198Web データウ ィン ド ウ 160概要 22

データベース との通信 22

と動的データウ ィ ン ド ウ オブジェク ト

概要 73クエ リ モードの提供 79構成要素の追加 75作成 76作成する構文の指定 76, 78修正 74

動的データウ ィ ン ド ウ オブジェク ト でのヘルプの提供 83

ト ランザクシ ョ ン オブジェク トWeb コン ト ロール ActiveX 197データウ ィ ン ド ウ コン ト ロールとの関連付け

76

ねネスティ ッ ド レポート

アプ リ ケーシ ョ ンでの使い方 54実行時における作成 55実行時における破棄 56

データウィ ンドウ プログラマーズ ガイ ド

はバッファ

データウ ィ ン ド ウ 31, 47データス ト ア 92

ひビッ ト マップの動的な追加と削除 75

ふフ ィルタ バッファ 31, 92フォン ト 、 レポート内部での使い方 52プラグイン、 データウ ィ ン ド ウ 9プログラム、 データウ ィ ン ド ウ オブジェク ト の使

い方 13プロパティ

現行値の取得 74, 76, 78データウ ィ ン ド ウ オブジェク ト 40

分散アプ リ ケーシ ョ ン 6

へペインタ 13編集様式

Web データウ ィン ド ウ 124クエ リ モードでの上書き 83

ほボタン コン ト ロール、 Web データウ ィ ンド ウ

129

めメ ソ ッ ド

JavaScript キャ ッシュ 132Web コン ト ロール ActiveX、 システム ツ リーに

リ ス ト された 192

211

索引

Web データウ ィ ン ド ウ ク ラ イアン ト コン ト ロール 145

Web データウ ィ ン ド ウ サーバ コンポーネン ト 154

グラフ 105データウ ィ ン ド ウ 38データス ト ア 92

も文字セッ ト 、 外国語 127

ゆユーザ イベン ト 、 データウ ィ ンド ウ コン ト ロール内

のグラフ 110

らラ イブラ リ

EAServer によるロ ッ ク 168Web コン ト ロール ActiveX 195データウ ィ ン ド ウ オブジェク ト 12, 13

ランタ イム ラ イブラ リ 「ラ イブラ リ 」 を参照 13

れレポート

「Powersoft レポート 」 も参照 3印刷 53データウ ィ ン ド ウ オブジェク ト での作成 51

ネスティ ッ ド 54

212

PowerBuilder