FAQ

FAQ

最新のUnifaceの対応プラットフォーム、対応データベース情報を知りたい

Q.
最新のUnifaceの対応プラットフォーム、対応データベース情報を知りたいです。

A.
バージョン10.4.01についてはこちらをご覧ください。
バージョン10.3.03についてはこちらをご覧ください。

プログラムでデータベースを変更したい

Q.
同じデータモデルを使って開発したアプリケーションで、国ごとに異なるデータベースに接続する必要があります。
国を選択後、どのようにしてフォームでDBの接続先を変えればいいでしょうか?
openステートメントを試してみましたが、うまくいきませんでした。
ASNファイルのPATHセクションの設定内容のどこに問題があるのかわかりません。

A.
ASNファイルのPATHセクションの仕様で、データベースの名前に「?」が指定されていればデータベースを変更することができます。
ログオンユーザー名、パスワードが異なる場合は「?|?|?」を指定してください。
これを指定して実行すると、USYSIDXが起動されて、「?」を指定したパラメータに入力することができるようになります。
または、openステートメントのパラメータとして「?」に設定したい内容を記述してください。

OracleストアドプロシージャがUTF-8で起動できない

Q.
Oracleストアドプロシージャを呼び出す為に、SSPを使用しています。
エンコードにUTF8を利用したいのですが、SSPが呼び出される時に高確率でUnifaceが停止します。回避方法はないでしょうか。

A.
下記のバグが原因となっている可能性があります。

「バグ:30003 - Oracle , SSP , ユニコード データタイプ: 非ユニコード データベースの問題」

Uniface 9.5.01 + E114 (それ以上のパッチ) または、Uniface 9.6.01 + X104 (それ以上パッチ)を使用してください。

usysidx.frmのフィールドに入力できる文字を制限したい

Q.
usysidxのIDフィールドに入力できる文字を制限したいです。
EditBoxのフィールドに英数字とアンダースコアだけ入力できるようSyntaxにENT(@*)を追加したのですが、上手く機能しません。どこに追加すればよいですか?

A.
usysidx.frmはUnifaceが使用している内部コンポーネントです。(../common/usysに保管)
Unifaceの内部コンポーネントに手を加えると、今回の問題も含め様々な問題が起こる可能性があります。
内部コンポーネントには手を加えないことをお勧めします。

MySQLのデータベースに接続できない

Q.
Uniface 9.7、MySQLデータベースを使用しています。
エンティティを検索する際に、下記のエラーが発生します。

Unable to load umql21; error 126 (‘Nao foi possivel encontrar o modulo especificado.’)
*** The DLL could not be loaded either in the USYSBIN directory or via the PATH variable.
*** Check if its directory is in the correct place in the PATH variable. Current PATH shown below.

「MQL U2.1」「MQL U3.0」「MQL U4.0」どのコネクタを設定しても同じエラーになります。解決策を教えてください。

A.
MySQLのコネクタは、MySQLのクライアントライブラリ「Connector/C」(libmysql.dll)に依存します。
このDLLファイルをダウンロードして、UnifaceのBINディレクトリ(MQLコネクタのモジュール(umql21.dll、umql30、umql40)が保管されている)、もしくはWindowsの環境変数「PATH」に記載されているディレクトリに配置してください。

ASNファイルに$RESOURCES_OUTPUTを設定しないとIDFが起動しない

Q.
アサインメントファイルに「$RESOURCES_OUTPUT」の設定なしで実行したいです。
しかし、「$RESOURCES_OUTPUT」の設定をせずにIDFを起動しようとすると、以下のようなエラーメッセージが表示されます。

idf fatal: $resources_output setting is required

回避方法を教えてください。

A.
IDFで使用しているアサインメントファイルに「$SEARCH_RESOURCES」が設定されていない、もしくは「$SEARCH_RESOURCES」に「resources_excluded」の値が設定されている場合に、「$RESOURCES_OUTPUT」の設定なしで起動可能です。

マイグレーション時にコンパイルできない

Q.
Uniface9.4から9.7へマイグレーションしています。
エクスポートファイルを9.7にインポートしてコンパイルしようとすると、下記のエラーが発生します。

Phase 2: Model definitions I/O function: F, mode: 0, on file/table: UCFIELD index: 1 = ORA-0316: fatal two task communication protocol error Oracle Driver Error [-35]: fetch driver function failed

Oracle 11g Client(11.2.0.3.0)からOracle 10g(10.2.0.1.0)のデータベースに接続しています。解決策はありますか?

A.
「ORA-03106」エラーはOracleが引き起こす問題です。
Oracle 10.2.0.1・10.2.0.2のバージョンには、BUG 4523125(致命的な2重接続プロトコルエラー)の不具合があることが知られています。
Oracleのバージョンを10.2.0.3以上にアップデートしてください。

Uniface 実行環境のビットを確認したい

Q.
Uniface 実行環境が32ビットもしくは64ビットを使用しているか確認する方法はありますか?

A.
Proc関数、$setting(“”, “PROCESSOR_ARCHITECTURE” ,”ENVDATA”)を使用すればわかります。
32bitの場合は”x86″、64bitの場合は”AMD64″が戻り値になります。

【Uniface 10.3】エンティティのテーブル作成SQLを出力したい

Q.
バージョン9.7以前では、エンティティをデータベースのテーブルとして作成するSQLがメニューから出力できましたが、バージョン10.3には同等の機能が見当たりません。
エンティティのテーブル作成SQLを出力する方法は無いのでしょうか。

A.
コマンドラインオプション「/genSql」をお使いください。
例えば、モデル SALES のエンティティ ORDER について、Oracle用のテーブル作成SQLを出力する場合は以下のように指定します。

/genSql createtable ORDER.SALES ORA create_order.sql

実行すると、作業フォルダに「create_order.sql」というファイルが作成され、その中にOracle用のCREATE TABLE文が出力されます。
エンティティ名、モデル名はワイルドカードが使えますので、モデル単位でSQLを出力することも可能です。
また、対象のデータベースはUnifaceがサポートしているものであれば指定可能です。
データベースを指定する際は、事前にアサインメントファイルの[DRIVER_SETTINGS]セクションにドライババージョンとドライバオプションを記述しておく必要があります。
詳細は、「Uniface Library」の「Command Line Switches」→「/genSql」を参照してください。

Uniface Anywhereでクライアントの「通常使うプリンタ」しか登録されない

Q.
Uniface Anywhereのホスト設定で、クライアントのプリンタを使用するために「Client Access」の「Printers」にチェックを入れましたが、起動したところクライアントの「通常使うプリンタ」しか追加されません。
サーバには必要なプリンタドライバをインストールしており、クライアントで定義されている全てのプリンタをアプリケーションで使用したいと考えています。
全てのプリンタを追加する方法を教えてください。

A.
クライアントで定義されている全てのプリンタをUniface Anywhereに追加するには、起動時にオプションを指定する必要があります。
クライアントプログラムから接続する場合は、コマンドラインオプションに “-ac all” を追加してください。

例)「ファイル名を指定して実行」ダイアログから起動
“C:\Program Files (x86)\Uniface\Uniface Anywhere Client\Client\ua-client.exe” -ac all

ブラウザから起動する場合は、logon.htmlのパラメータ “printerconfig” に “all” を設定します。

例)logon.htmlの規定値から変更
controlArgs.set([ “printerconfig”, “default” ]);

controlArgs.set([ “printerconfig”, “all” ]);

logon.htmlを変更した場合は、ブラウザから最新の情報に更新した上で接続してください。

オプションの詳細は、管理者ガイド(Uniface Anywhere: Windows Host Administrator Guide)の「CHAPTER V – Running Uniface Anywhere」の「Uniface Anywhere Startup Parameters」、もしくはサポートサイトの「資料ダウンロード」にある「UnifaceAnywhere起動オプション一覧」をご覧ください。

Uniface 10へのマイグレーションで一部モジュールが削除される

Q.
Uniface 9からUniface 10.3へとマイグレーションを試みましたが、一部のモジュールがエラーを起こしてリポジトリから削除されてしまいました。
エラーおよび削除される原因と対処法を教えてください。

A.
エラーの原因は、例えばエンティティとラベルが重なり合っていたり、印刷時のトレーラやページブレイクがエンティティの中に置かれている等、誤った定義が存在していることです。
Uniface 9ではこれらの誤った定義が無視されていましたが、Uniface 10.3ではチェックが厳格化され、エラーとして検知されるように動作が変更されました。
その為、誤った定義によりエラーを起こしたモジュールは、Unifaceから移行できないものとして削除されてしまいます。

対処法としては、エラーを起こしたモジュールについてUniface 9の段階で修正する以外にはありません。
なお、Uniface 9ではエラーやワーニングとして検知されない為、一旦Uniface 10.3でのマイグレーション結果を確認後、Uniface 9で修正して再度該当のモジュールを移行することになります。

urouter、userverユーザのパスワードを変更したい

Q.
Unifaceのインストール時に作成されるurouter、userverの2ユーザについて、社内のセキュリティポリシーによりユーザ名と同じパスワードを設定してはいけないとの通達がありました。
パスワードを変更したいのですが、管理ツールから変更して大丈夫でしょうか。

A.
urouter、userverのパスワード変更は、urouter.exeのコマンドラインスイッチからユーザを削除後、再作成する際に新しいパスワードを指定してください。
具体的な手順は以下の通りです。

※注意:この手順を行う際は、必ずUnifaceのサービスを停止し、管理者ユーザで実施してください。

1.コマンドプロンプトを開き、Unifaceをインストールしたディレクトリのcommon\binに移動します。

例)インストールディレクトリが C:\Uniface10 の場合
cd C:\Uniface10\common\bin

2.urouter.exeにコマンドラインスイッチ /delacc を指定し、ユーザを削除します。

例)userverユーザを削除する場合
urouter/delacc userver

3.次に、urouter.exeにコマンドラインスイッチ /newacc を指定し、ユーザを作成する際に設定したい新たなパスワードを同時に指定します。

例)userverユーザを作成し、パスワードを”Un!f@ceI0″とする場合
urouter/newacc userver /passwd Un!f@ceI0

4.web.xmlに記述されているuserverのログオンパスワードを変更します。

(変更前)
<init-param>
<param-name>MIDDLEWARE</param-name>
<param-value>UV8:localhost+13001|userver|userver|wasv</param-value>
</init-param>


(変更後)
<init-param>
<param-name>MIDDLEWARE</param-name>
<param-value>UV8:localhost+13001|userver|Un!f@ceI0|wasv</param-value>
</init-param>

5.Unifaceのサービスを起動し、接続を確認してください。

コマンドラインスイッチでのユーザ作成については、Uniface Libraryの以下の項目を参照してください。

・Installing Uniface
→ Installing and Configuring Uniface on Microsoft Windows
→ Manually Creating and Deleting Uniface Router and Server Accounts

Unifaceのシステム要件が知りたい

Q.
Unifaceのインストールに必要なシステム要件を知りたいのですが、Uniface社のサイトには掲載されていないようです。
どこで確認できますか?

A.
Unifaceのシステム要件は、インストールメディア内、またはダウンロードサイトの各プラットフォームページにある readme.htm に記載されています。
ファイルは英語版のみとなっております。
参考までに、バージョン 10.3.01 のシステム要件を抜粋します。

CPU:下記のモデル以降
→ AMD Opteron, AMD Athlon 64, Intel Xeon(Intel EM64Tサポート), Intel Pentium IV(EM64Tサポート)

CPUクロック数:
→ 最小 1.4 GHz、2.0 GHz以上推奨

メモリ:
→ 最小 2 GB、4 GB以上推奨(上限はOSのメモリ上限まで)

システム情報の取得方法について

Q.
ライセンスの発行申請に必要な、システム情報を取得する方法を教えてください。

A.
システム情報を取得するには、まずUniface(ライセンスサーバの場合はセットアップ画面から「Install Uniface License Server」を選択)をインストールします。
インストール完了後、以下の手順で取得してください。

1.スタートメニューから「Uniface」→「License Management」→「Distributed License Management」を開きます。

2.画面が起動したら、ウィンドウの左下にある「Show system information」をクリックすると「System and Environment Information」ダイアログが開きますので、画面下部にある「DLM Info…」ボタンをクリックしてください。

3.XMLファイルを保存する画面が表示されますので、初期表示の「system_info.xml」または任意のファイル名を入力して保存してください。

保存されたファイルにシステム情報が保存されています。このファイルを、内容を変更せずに発行申請とあわせてお送りください。

Unifaceアプリケーションで新しい元号を使用したい

Q.
Uniface上で、新しい元号を使用したいと考えています。具体的な追加手順を教えてください。

A.
新しい元号は以下の手順で追加してください。

①Uniface開発環境のメニューから、「Utilities」→「Deployment」→「Language Setups」→「Japanese Era…」を選択します。

②表示された画面にて使用するライブラリを選択し、言語に”JPN”を指定します。

③表示された画面の項目に以下を入力します。

・Begin Date
→ 20190501

・Era
→ (新元号名)

④保存し、一旦開発環境を終了します。

⑤開発環境起動時のコマンドラインに「/lib (ライブラリ名)」を入力し、ライブラリのコンパイルを実行します。

なお、ドキュメント「Uniface Library」では、「検索(S)」タブにて”era”で検索頂き、トピックの選択にて「Set Up Japanese Era」を選択してください。