プライマリ・コンテンツに移動
Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド
リリース5.0
E64891-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

11.6 フォームでのBLOBサポートの理解

この項では、フォームでのBLOBサポートについて説明します。

11.6.1 フォームでのBLOBサポートについて

フォームを作成する場合(アプリケーションの作成ウィザードを使用して、フォーム型(またはレポートおよびフォーム型)のページを作成するか、フォーム型のリージョンを作成する)、または既存のフォームにアイテムを追加する場合、BLOB型のデータベース列がソースであるアイテムは、ファイル参照型のアイテムになります。フォームがINSERTにコールされる場合、ユーザーが選択したファイルは、BLOB列にロードされます。フォームが更新にコールされる場合、ダウンロード・リンクが「参照」ボタンの右に表示されます。ユーザーは、このリンクを使用してファイルをダウンロードできます。

11.6.2 BLOBへのファイルのアップロードとダウンロードについて

デフォルトのBLOBサポートでは、一般的なアプリケーションでBLOBを効果的に管理するために必要とされるすべての情報が提供されているわけではありません。列がBLOBであるという情報に加えて、ファイルの詳細情報も提供されると、エンド・ユーザーの使いやすさが向上します。ファイル参照ページ・アイテムには、この追加情報を完全に宣言的に管理することを容易にするための追加設定があります。


関連項目:

付録A、「アイテム・タイプについて」の「ファイル参照」、「ファイル参照」設定のアイテム・レベル・ヘルプ

ファイル参照アイテム・タイプ内では、次の2つの異なるタイプの記憶域タイプが使用できます。

  • アイテム・ソース属性で指定されたBLOB列: ここで説明する追加設定の構成をサポートする、完全に宣言的なアプローチです。これは、所有するデータベース表のBLOBを参照します。

  • WWV_FLOW_FILES表: 下位互換性のために用意されています。新しいアプリケーションでは使用できません。

  • APEX_APPLICATION_TEMP_FILES表: APEX_APPLICATION_TEMP_FILESビューでアクセスできる一時的な場所に、アップロードされたファイルを格納します。「ファイルをパージするタイミング」の選択に応じて、Oracle Application Expressにより、セッションの最後またはアップロード要求の最後にファイルが自動的に削除されます。

この追加情報を提供するには、MIMEタイプ、ファイル名、最終更新日およびキャラクタ・セット設定を格納および追跡するための追加の列を元表に追加することをお薦めします。これは表を拡張することで実行できます。次に例を示します。

ALTER TABLE emp ADD 
   (ATTACH_MIMETYPE     VARCHAR2(255),
    ATTACH_FILENAME     VARCHAR2(255),
    ATTACH_LAST_UPDATE  DATE,
    ATTACH_CHARSET      VARCHAR2(128));

注意:

BLOBのキャラクタ・セットはアップロード時に自動的に設定されません。BLOBのキャラクタ・セット値を格納する場合、キャラクタ・セットを格納するために使用する列にバインドされる追加のページ・アイテムをページに提供する必要があり、ユーザーはその場合、アップロードするドキュメント用のキャラクタ・セットを指定できるようになります。

カスタム表でフォームを手動作成する場合も、この機能を利用できます。このことを行うには、DMLプロセス・タイプがDML_PROCESS_ROWのページにおいて、「記憶域タイプ」設定が「アイテム・ソース属性で指定されたBLOB列」である「ファイル参照」アイテム・タイプを使用します。このプロセスによって、表名と主キー列が決定されます。

11.6.3 BLOBの表示について

作業中のBLOBがイメージである場合は、そのイメージをフォームでも表示できます。これを宣言的に処理するために、イメージの表示アイテム・タイプを使用できます。付録A、「アイテム・タイプについて」を参照してください。手続き的な処理については、「フォームおよびレポートでのBLOBサポートの理解」を参照してください。

11.6.4 イメージ参照の削除について

ファイル参照の使用時はNULLへの設定が存在しないため、イメージ参照を削除するメカニズムを提供する必要がある場合は、イメージを削除する特別なボタン(必要な列を無効化する機能を持つボタン)を含める必要があります。次に例を示します。

UPDATE demo_product_info
   SET product_image = NULL,
       MIMETYPE = NULL,
       FILENAME = NULL,
       IMAGE_LAST_UPDATE = NULL,
       CHARSET = NULL
 WHERE product_id = :P6_PRODUCT_ID;