トップページへ www.EA-Server.com
TOP 製品 技術/サポート ご意見

カスタマーサービス
PowerJ FAQ

PowerJ 技術情報 トップページへ
Technical Information トップページへ
カスタマーサービス トップページへ

PowerJ FAQ

PowerJによる開発のヒント、FAQを掲載しています。
JDK関連

PowerJでJDK1.2を使用することはできますか?

PowerJ2.0にはJDK1.1.5が同梱されております。JDK1.2のインストールを行いメインメニューの [ツール|オプション]メニューを開き、[JDK構成]ページのパスを変更することによりJDK1.2を 使用することができるようになります。(プログラマーズガイド第3章:JDK構成オプションをご覧ください。)
ただし、PowerJ2.0でJDK1.2使用時の動作保証はいたしません。

JDK1.2にはいつから対応するのですか?

未定です。


データベース関連

JDK1.02を使用してjConnect経由でSybase SQLServerに接続すると接続は できますが日本語が文字化けします。

日本語を使用できるのは、 JDK1.1ベースのアプレット、アプリケーションのみ となっております。
また、トランザクションオブジェクトの接続パラメータに以下の文を追加する必要があります。

    CHARSET='sjis'
LANGUAGE='japanese'

CHARSET,LANGUAGEは大文字で、sjis, japaneseは小文字で入力してください。

SYBASE AdaptiveServerのクライアントをインストールしてある環境にPowerJ2.0Jをインストールし、Open Server Gatewayを起動するとアプリケーションエラーが発生します。

SYBASE AdaptiveServerのクライアントソフトをインストールした環境では、 Open Serverのバージョンが合わなくなるためOpen Server Gatewayは動作しません。

Netscape4.xでJDK1.1ベースのアプレットが表示できません。

Netscape4.xでは、JDK1.1のサポートが不十分なためアプレットを表示できないことがあります、 以下のURLでNetscapeをJDK1.1対応とするパッチをダウンロードすることが可能です。
http://developer.netscape.com/software/jdk/download.html

InternetExplorer4.x、Netscape4.xでデータベースアプレットが表示できません

PowerJ内からデータベースアプレットを実行した場合は、アプレットのセキュリティ制限に 違反します。データベースアプレットを実行するには、アプレットをWebサーバから実行する必要があります。詳しくは こちらを参照ください。

セキュリティ違反を起こさない環境下ですが、InternetExplorer4.0、Netscape4.xで データベースアプレットが表示できません

実行時に動的にロードされるJDBCドライバなどは、Webアプリケーションターゲットで自動的にコピーされません。この場合、Webサーバのアプレットを配布したディレクトリの直下にJDBCドライバを手動でコピーする必要があります。詳しくはプログラマーズガイドの P.132を参照ください。

SQLエディタでパラメータ付きのSQL文を作成してテストをおこなうと、文字化けしたダイアログが表示されますが?

この現象はPowerJ 2.0 の不具合です。
以下のようなダイアログが表示されています。


選択ボックスの中は上から順に

  • 文字
  • 整数, short, long
  • 実数, double, float, numeric
  • 日付
  • 時間
  • タイム スタンプ
  • バイナリ
  • ビット
です。

クエリの"キーの更新"プロパティを"USE_UPDATE"から"USE_DELTE_AND_INSERT"に変更したらデータベースが更新できなくなりました。

"USE_UPDATE"と"USE_DELETE_AND_INSETT"では異なるSQL文を生成するためです。
具体的な例を挙げながらご説明します。

フォームウィザードを使用して以下のようなアプレットを作成してください。

  • テーブルは employee を選択します。
  • カラムは emp_id, emp_fname, emp_lname を選択します。
  • フォームが作成されたらクエリのプロパティを開き"カラム"ページの
    1. "主キー"フィールドに emp_id
    2. "カラムテーブル名"に employee=emp_id,emp_fname,emp_lname
    を設定します。
  • 生成されるSQL文を読みやすくするために"更新"ページの"バインド更新"のチェックをはずします。
  • フォームを少し拡大し、リストボックスを追加します。
  • クエリの "queryUpdateingDatabase" イベントに
    lb_1.addItem(event.getSQL());
    を追加します。このコードによりデータベースが更新される時のSQL文がリストボックスに表示されます。


それでは、USE_UPDATE と USE_DELETE_AND_INSERT を使用したときの違いを調べてみましょう。
  • USE_UPDATEの場合
    キー値であるemp_idの105を107に変更してナビゲータの更新ボタンをクリックすると、リストボックスには以下のSQL文が表示されます。
    	UPDATE employee SET emp_id = 107 WHERE emp_id = 105
        
    "Sybase SQL Anywhere 5.0"のツール isql を起動し、
    	"select emp_id, emp_fname, emp_lname from employee" 
    	
    を実行してデータベースが更新されているのを確認します。

  • USE_DELETE_AND_INSERTの場合
    それでは、"更新"ページの"キーの更新"を"USE_DELETE_AND_UPDATE"に変更して同じように実行します。
    先ほど107に変更したemp_idを105に戻してナビゲータの更新ボタンをクリックし、isqlで確認してみると、データは更新されていませんし、アプレットのナビゲータ更新ボタンもクリックできる状態、すなわち更新が完了していない状態をあらわしています。
    一方リストボックスを見ると以下のSQL文が表示されています。
        DELETE FROM employee WHERE emp_id = 107
        INSERT INTO employee ( emp_id, emp_fname, emp_lname ) VALUES ( 105, 'aaa     ', 'bbb     ' )
        
    このリストボックスに表示されているSQL文をisqlに入力し、実行してみると"テーブル'employee'のカラム'dept_id'はNULL値を持つことはできません。"とエラーが表示されます。

USE_DELETE_AND_INSERT文の場合、正しいSQL文が生成されるようにテーブルおよびカラムを選択しなければなりません。
デバッグ

MicrosoftのVMを使用するとJDK1.1のデバッグができませんが?

MicrosoftのVMは1.02のデバッグ機能しか提供していません。またSunのVMは1.1のデバッグ機能しか提供していません。


その他

プロジェクトを開いてない状態で、フォームの新規作成を行うとアプリケーションエラーが発生します。

最初にプロジェクトの新規作成を行ってください。

Javaスクリプトを作成するウィザードなどはありますか?

JavaスクリプトウィザードやJavaスクリプト記述に特化したエディタなどはありません。Webアプリケーションターゲットを作成し、自動生成されるindex.htmlにJavaスクリプトを記述してください。

構築をすると修正していないファイルまで再構築しているようですが?

プロジェクト内にある.JLTというファイルにターゲットが最後に構築された時間が記録されています。JLTファイルよりも新しいソースファイルがある場合にはすべてのクラスファイルが再構築されます。
詳細はPowerJプログラマーズガイド第2章"JLTファイル"をご覧ください。

PowerJが生成した.javaファイルをテキストエディタで編集したのですが、構築したらもとに戻ってしまいました。

PowerJは再構築時に.WXF, .FXCファイルからコードを生成して構築します。したがって.javaファイルなどをPowerJを使用せずに編集しても再構築の際にすべてもどってしまいます。PowerJを使用して編集してください。

1.1アプレットではうまくいくのですが、1.02アプレットではタブキーを押しても次のコンポーネントにフォーカスが移動しません。

この現象はJDK1.02の不具合です。この機能はJDK1.1でしか使用できません。
プログラマーズガイド第3章:コンポーネント順位エディタをご覧ください。

Visual Basicのエディタのように編集対象となる関数だけ表示するようにできますか?

可能です。メインメニューの[ツール|オプション]メニューからオプションを選択し、[エディタ]をクリックして、"イベントごとに新規エディタで編集"をチェックします。