0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Oracle APEXでフォーム付き対話モードレポートに文書ファイルダウンロードリンクを出現させる

Posted at

本記事は下記の記事の続きの内容になっています。

この記事では、フォーム付き対話モードレポートのフォームのプロパティにBLOB関連ファイルを入力することで、編集フォームから文書をダウンロードできるようになりました。
今回はレポートにダウンロードリンクを出現させてダウンロードする方法になります。

サマリ

今回ははまりポイントがあるので、まずははまる例から説明します

0.はまりポイントの説明
手順の説明

  1. レポートのソースをSQL問合せに変更する
  2. BLOBダウンロード列の列プロパティの設定をする

はまりポイントの説明

前回作った下記状態の画面のName列の右に文書ファイルのダウンロードリンクの列を入れることを考えます。

image.png

そのために、まずはこの画面のページデザイナに移動します。
画面は下記のようになっています。
image.png

直観的には、列のところに、BLOB列であるDOC列を列の同期化で表示(列の文字列の上で右クリック→列の同期化を選択)させ、プロパティの識別でタイプをBLOBのダウンロードにし、BLOB属性をそれぞれ指定すれば、うまくいきそうな雰囲気がします。

実際にやってみます。
image.png

image.png

ここまで実施して実行ボタンを押します。
image.png

すると、下記エラーのみ表示されて表にデータが何もでてこない状態になってしまいます。

ORA-06502: PL/SQL: 数値または値のエラー: 文字から数値への変換エラー。が発生しました

BLOB列を直接レポート列として扱おうとするとこのエラーが発生してしまいます。これを回避するには、BLOB列の代わりに、DBMS_LOB.GETLENGTH(DOC)(DOCはBLOB列)のような列を指定します。

手順詳細

レポートのソースをSQL問合せに変更する

DBMS_LOB.GETLENGTH(DOC)列を選択するためにレポートのソースをSQL問合せに変更し、DOCの代わりにDBMS_LOB.GETLENGTH(DOC)をSELECT文に含めます

image.png

BLOBダウンロード列の列プロパティの設定をする

列の同期化で列の一覧を更新すると、先ほどSELECTに含めた列であるDOWNLOADが出てきます。後は、この列の識別タイプをBLOBのダウンロードを選択し、

image.png

BLOB属性をそれぞれ入力します。
image.png

また、ダウンロードリンクをファイル名にするため外観を#DOC_FILENAME#にします。
image.png

ここで保存して実行すると、text.xlsxというファイル名のダウンロードリンクが出現しました。
image.png

参考

日日是Oracle APEX:簡単な文書管理アプリケーションを作成する
こちらのサイトでは、直リンクによるダウンロードや全文検索の追加の手順などまで記載されています。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?