الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

كيفية التعرف عل حالة السجل

Featured Replies

بتاريخ:

السلام عليكم

كان موجود فى الفورم system variable  اسمه :system.record_status

و كان ممكن تستخدمة للتعرف على حالة السجل  new – modified   

و اكيد التعرف على حالة السجل هيفيدك كتير

فى ال adf  كمان ممكن تعمل حاجة ذى دى لكن مش بالبساطة الموجودة فى الفورمز و ذلك لان الدنيا فى ال adf  مفصولة عن بعضها مش كلها فى layer  واحد ذى الفورم

فى المثال التالي هنعرف ازاى نعمل method  ترجعلك حالة السجل و ازاى نستخدمها فى الصفحة

1-      In the model project , go to the view object and click on java tab and generate the following java classes

·         View object class “ViewImpl”

·         View Row class “View row impl”

كما بالشكل بالشكل المرفق رقم 1

لاحظ انا عملت generate  لل view row class  لان الكلاس دى هى اللى بتمثلي السجل اللى انا هتعرف على حالته

اما الview object class  فهى الكلاس اللى هكتب فيها الميثود

كما بالشكل

2-      In the view object class write this methods

    public String getRowStatus(Row row) {
        EduTranDetailsVORowImpl rwImpl = (EduTranDetailsVORowImpl) row;
        String rwStatus = translateStatusToString(rwImpl.getEntity(0).getEntityState());
        return rwStatus;
    }

    private String translateStatusToString(byte  {
        String ret = null;
        switch ( {
        case Entity.STATUS_INITIALIZED:
            {
                ret = "Initialized";
                break;
            }
        case Entity.STATUS_MODIFIED:
            {
                ret = "Modified";
                break;
            }
        case Entity.STATUS_UNMODIFIED:
            {
                ret = "Unmodified";
                break;
            }
        case Entity.STATUS_NEW:
            {
                ret = "New";
                break;
            }
        }
        return ret;
    }

الشرح:

 

فى الميثود الاولى  getRowStatus دى بتاخد باراميتر من نوع ROW  . يعنى بتبعتلها السجل كله ك PARAMETER  علشان ترجع حالته

طيب اية هو السجل دة؟

هو السجل اللى من النوع ال View Row class  اللى عملتلها GENERATE  اللى هى اصلا بتمثل ال ROW

فى المثال هنا اسمها EduTranDetailsVORowImpl  طبعا هتغير اسمها حسب ما هو موجود عندك

يعنى مثلا لو عندك ال view  اسمها EmployeeView  هتلاقى الكلاس اسمها EmployeeViewRowImpl

 

طيب انا فى الحقيقة مقدرش اعرف حالة السجل من خلال ال view  لان ال view  اصلا بتمثل SQL Query Statement    يعنى مش بتمثل السجل و لكن اللى بيمثل السجل فى ال ADF  هو ال Entity Object

لكن انا من خلال ال View  اقدر اوصل لل Entity object  بتاعها اللى هى اصلا مبنيه عليه و ذلك من خلال الميثود اللى اسمها getEntity  

و من خلال ال entity اقدر احصل على حالة السجل من خلال الميثود  اللى اسمها getEntityState

الكلا اللى انا قولته دة هو معنى السطر دة

rwImpl.getEntity(0).getEntityState() 

طيب بس ال status  دى بترجعلى فى شكل ارقام 1 و 2 و 3 و 4 و انا عاوز احولها لنص مفهم ذى New - Modified - Unmodified  

و دة بقى اللى بتعمله الميثود التانية  translateStatusToString

 

 3 - add the getRowStatus () method as a client interface

شوف الصورة رقم 2 المرفقه للتوضيح

و احنا عملنا الخطوة رقم 3 دى علشان نبعت الميثود لل data control  علشان نقدر نستخدمها

 4- DataBinding

اعمل refresh  للداتا كونترول و افتح ال view object بتاعك عتلاقى operation  جددة فيه اسمها getRowStatus

علشان تضيفها للصفحة بتاعتك  اعمل التالي

  •  روح على الصفحة بتاعتك
  • اضغط على bindings tab
  • روح على ال structure window
  • right click on Bindings - insert inside bindings 
  • generic bindings - method action 

الصورة رقم 4 موضوحة الخطوة دى

هيظهرلك بعد كدة ال dialog اللى فى الصورة المرفقة رقم 5 و اللى بيسالك هى فين الميثود اللى انت عاوز تعملها bindings

اختار الميثود و كمان ابعتلها ال parameter  بتاعك اللى هو من نوع Row  و اللى فى الحالة دى هيبقى السجل الحالى "currentRow"  لل iterator  بتاعك

يعنى هيبقى مثلا 

#{bindings.EduTranDetailsVO1Iterator.currentRow} 

كما هو موضح بالشكل رقم 6

 5- اخر حاجة بقى و هو انك تستخدم الميثود دى فى ال managed bean  بتاعتك عادى مثل اى ميثود مثال

                DCIteratorBinding eduDtl = bindings.findIteratorBinding("EduTranDetailsVO1Iterator");
                OperationBinding getRowStatusBinding = bindings.getOperationBinding("getRowStatus");
                String rwStatus = (String) getRowStatusBinding.execute();
                if ("NEW".equalsIgnoreCase(rwStatus)) {
                 System.out.println("record status is "+rwStatus);
}
 

post-2550-0-58362300-1382350024_thumb.png

post-2550-0-44778600-1382350032_thumb.png

post-2550-0-28941700-1382350181_thumb.png

post-2550-0-87819600-1382350359_thumb.png

post-2550-0-15171400-1382350611_thumb.png

post-2550-0-47623200-1382350828_thumb.png

بتاريخ:

مجهود رائع ياهندسة .....

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.