در صفحه‌ای که region ای از نوع Form دارد، کارهای زیر را انجام می‌دهیم:


ایجاد region نمایش عکس

یک region از نوع static content ایجاد می‌کنیم

نمای کلی region

نمای کلی region

  • Identification
    • Type: Static Content
  • Appearance
    • Template: Standard

حالت بدون عکس

می‌خواهیم زمانی نمایش داده شود که دارای تصویر باشد، بنابراین به قسمت Server-side Condition می‌رویم:

  1. بررسی می‌کنیم که id وجود دارد یا خیر؟ یعنی فرم در حالت ویرایش باز شده باشد.

  2. آیا در جدول مربوطه عکسی وجود دارد یا خیر؟

    • استفاده از متد dbms_lob.getlenght برای سنجش اندازه فایل
  • Server-side Condition
    • Type: Expression

    • Language: SQL

    • SQL Expression:

      :P1004_ID is not null 
      and
      (
        select nvl(dbms_lob.getlength(image),0) 
        from cms_news 
        where id = :P1004_ID
      ) > 0
      

🔔 بدین ترتیب با استفاده از region دیگر برای اشیای داخل آن نیازی به بررسی شرط نخواهیم داشت.


آیتم عکس

ایجاد Item

یک آیتم از نوع Display Image به region اضافه می‌کنیم و مقدار عکس را از آیتم عکس در داخل Form می‌خوانیم.

  • Identification
    • Type: Display Image
  • Settings
    • Based On: BLOB Column specified in Item Source
    • Filename Column: فیلد مربوطه در جدول
    • MIME Type Column: فیلد مربوطه در جدول
    • BLOB Last Update Column: فیلد مربوطه در جدول
  • Source
    • Form Region: انتخاب فرم
    • Column: فیلد تصویر
    • Data Type: BLOB
    • Query Only: On

دکمه حذف عکس

یک دکمه جهت حذف به region اضافه می‌کنیم

  • Identification

    • Button Name: DELETE_IMAGE
      • Appearance | Template Options | Type: Danger
      • Icon: fa-trash
  • Behavior

    • Action: Redirect to URL
    • Target: javascript:apex.confirm(‘آیا عکس حذف شود؟’ , ‘DELETE_IMAGE’);

Process حذف

به قسمت Processing می‌رویم و یک Process ایجاد می‌کنیم

در قسمت کد، از دستور update برای خالی کردن مقادیر فایل استفاده می‌کنیم و یا اگر تصاویر در جدولی جداگانه قرار داشت از دستور delete استفاده می‌کنیم. همچنین شرط اجرای این روال را فشردن دکمه حذف قرار می‌دهیم.

  • Source

    • Location: Local Database

    • Language: PL/SQL

    • PL/SQL Code:

      update cms_news 
        set image = null, 
            image_mimetype = null, 
            image_filename = null, 
            image_lastupd  = null
      where id = :P1004_ID;
      
  • Success Message

    • Success Message: حذف با موفقیت انجام شد
  • Server-side Condition

    • When Button Pressed: Delete_IMAGE

چینش نهایی (Layout)

نمای فرم