2011-12-08 9 views
0

Oracle Forms 10gのclient_hostを使用してファイルを一時的な場所にコピーし、アプリケーションを起動して一時ファイルを表示してから一時ファイルを削除します。この場合、表示アプリケーションはWindows Internet Explorerです。問題は、一時ファイルを削除するためのdelete_file呼び出しがIEを起動してファイルを表示する前に呼び出され、ファイルを見つけることができないためIEでエラーが発生することです。以下は、私たちがやっていることを示すコードスニペットです:Oracle pl/sqlのclient_hostコールを強制的にモーダルにできますか?

-- Copy the file to the site defined temporary location 
client_host ('cmd /c copy '||Vcurrentfile||' '||Vtempfile); 

-- Launch viewing application and display the temporary file 
client_host (Pviewer||' '||Vtempfile); 

-- Delete the temporary file 
Vsuccessind := webutil_file.delete_file (Vtempfile); 

Client_hostは、モーダルことになっているので、ユーザーはIEウィンドウを閉じるまでDELETE_FILE文は実行すべきではありません。ただし、ビューアを起動するclient_host呼び出しが完了する前に実行されているように見えます。何か案は?

+1

ファイルがIEに表示されなかった理由は、Oracle App Server構成ファイルmime.typesにファイル拡張子がないためです。拡張機能がmime.typesに追加されると、ファイルが正しく表示されます。私たちはまだIEを閉じた後に一時ファイルが削除されないという問題があります。 FirefoxまたはChromeを使用すると、一時ファイルが削除されます。 – Mark

答えて

1

CLIENT_HOSTは、フォームアプレットに関してモーダルです。フォームアプリケーションは、CLIENT_HOSTが返るまでブロックされます。 CLIENT_HOSTでIEを呼び出すと、IEが終了するまでアプリケーションがブロックされません。しかし、これは、iexplore.exeがWindowsアプリケーションであるためです。 Windowsアプリケーションは、イベントループが入力されるまで呼び出し元をブロックします。これはコマンドラインで確認できます。通話を入力すると、プロンプトが表示され、IEが表示されます。

ウェブページを開くには、なぜWEB.SHOW_DOCUMENTを使用しないのですか?

EDIT:
CMD /スタート/ W ":\プログラム\ Internet Explorerの\ iexplore.exeをC" CでIEを呼び出してみてください。 start/Wは、ウィンドウアプリケーションが実際に閉じるまで呼び出し元をブロックします。

0

は、私は次のことを試してください - それは動作します: webutil_host.blockingを( ' "C:\プログラム\ Internet Explorerの\ iexplore.exeを" -k -noframemerging' ||:URL)「IEのコマンドライン用

ルックこれらのパラメータの説明については、「パラメータ」を参照してください。

関連する問題