بتاريخ: 25 أبريل 201214 سنة comment_223687 السلام عليكمعندى VO مبنى على EO خاص بتسجيل مصاريف الابناء فى المدارساليوزر المفروض يدخل المبلغ و يختار من القائمة العملة فيتم تحويل المبلغ دة للجنية المصرىالفانكشن اللى بتحول المبلغ للمجنية المصرى موجودة اصلا فى الداتابيذعاوز اسجل المبلغ بالجنية المصرى دة بعد ما يحصل INSERT على الفيو و قبل ما يحصل COMMITهل فى حد عندة مثال عن حاجة ذى دىاو اى اقتراح ابدا فيها ازاى تقديم بلاغ
بتاريخ: 25 أبريل 201214 سنة كاتب الموضوع comment_223688 السلام عليكمبعد البحث وجدت ان الحل ممكن ان يكون فى overRide the doDML() ميثود اللي موجودة فى ال EO protected void doDML(int operation, TransactionEvent e) { super.doDML(operation, e); } انا قريت ال document دى http://docs.oracle.com/cd/E12839_01/web.1111/b31974/appendix_formstriggers.htmالوقتى انا اصلا عامل read only VO بسيطة جدا بسستدعى فيها الفانكشن اللى بترجع المبلغ بالجنية المصرى و هى فيها 2 parameters العملة و المبلغ المطلوب تحويلة للجنية Select (_currency_id,_amount) from dual و عامل طبعا ال bind variable بتاعتى سؤالى الوقتى هو ازاى اقدر اعمل للفيو دى execute query من داخل الميثود doDml() بحيث ارجع النتيجة فى variable ?? تقديم بلاغ
بتاريخ: 26 أبريل 201214 سنة كاتب الموضوع comment_223711 السالم عليكموجدت الحل و أنشرة الان للاستفادةهنفرض ان ال VO اللى بتستدعى فيها الفانكشن اللى بتحول العمله اسمها CurrencyRateVOو ان ال Entity Object اللى بتسجل فيها المصاريف مثلا اسمها Expensesلعمل المطلوب قم بالتالي: اذهب الى ال Expenses Entity و اضف View Accessor و هو CurrencyRateVO فى ال CurrencyRateVO اذهب الى Java و اضف View Row Impl باختيار " Generate ViewRow Class و اختار ايضا Include accessors ارجع مرة اخرى ل Expenses Entity object و اختار Java و اعمل Generate Entity object class افتح الكلاس الجديدة و اذهب الى الميثود protected void doDML(int operation, TransactionEvent e) و انقل التالي protected void doDML(int operation, TransactionEvent e) { if(operation==EntityImpl.DML_INSERT){ RowSet currencyView = this.getCurrencyRateAccess(); currencyView.setNamedWhereClauseParam("p_curr_id", 27); currencyView.executeQuery(); CurrencyRateRowImpl first = (CurrencyRateRowImpl)currencyView.first(); this.setRate(first.getRate()); } الكود سهل جدا و مفهوم هو بيستدعى ال view و يعمل execute query و يرجع الناتجفى الحقيقة ال VO فيها parameter واحد فقط و ليس 2 كما كنت كاتب فى السابقيمكنك تعديل الكود حتى يعمل معك تقديم بلاغ
بتاريخ: 26 أبريل 201214 سنة comment_223737 وان كان قيمة البارمتر ( p_curr_id ) تأتى من قيمة أى Attribute فى Entity يمكنك وضعها مباشرة فى View Accessor عن طريق عمل edit على viewAccessor ومن ثم ستجد اسم البارمتر ضع فى Value اسم Attribute الموجود فى Entity مباشرةوبالتالى لن تحتاج لكتابة setNamedWhereClauseParam ولا executeQuery تقديم بلاغ
بتاريخ: 28 أبريل 201214 سنة كاتب الموضوع comment_223791 اعتقد ان الكلام دة ممكن يكون صح لو فية association بين 2entities لكن الموضوع هنا مختلف انا فاكر انى جربت قبل كدة الحل دة و منفعش . جرب بين entity and read only view تقديم بلاغ
بتاريخ: 28 أبريل 201214 سنة comment_223798 protected void doDML(int operation, TransactionEvent e) { if(operation==EntityImpl.DML_INSERT){ RowSet currencyView = this.getCurrencyRateAccess(); currencyView.setNamedWhereClauseParam("p_curr_id", 27); currencyView.executeQuery(); CurrencyRateRowImpl first = (CurrencyRateRowImpl)currencyView.first(); this.setRate(first.getRate()); } جزاكم الله خيرابس سؤال بسيطهل فيه فرق بين EntityImpl.DML_INSERT و operation.DML_INSERT تقديم بلاغ
بتاريخ: 29 أبريل 201214 سنة comment_223843 هل ممكن نضيف Method فى Application Module وهى تنادى الفانكشن فى الداتا بيز .ومن داخل Expenses Entity ننادى المثود الموجودة فى Application Module بحيث نناديها من أى مكان من الأبلكيشن تقديم بلاغ
بتاريخ: 1 مايو 201213 سنة كاتب الموضوع comment_223935 وان كان قيمة البارمتر (p_curr_id ) تأتى من قيمة أى Attribute فى Entity يمكنك وضعها مباشرة فى View Accessor عن طريق عمل edit على viewAccessor ومن ثم ستجد اسم البارمتر ضع فى Value اسم Attribute الموجود فى Entity مباشرةوبالتالى لن تحتاج لكتابة setNamedWhereClauseParam ولا executeQuery كلامك صحبعد البحث فى اقتراحك وجدت حل ابسط بكتثرو هو انى اكتب فى ال transient Attribute "<AccessorName>.first().<AttributeNameinChileVO>"مثلا لو انا عندى خاصة بتفاصيل راتب موظف و عاوز اعرض فيها كمان مثلا تاريخ ميلاد الموظف اللى هو موجود اصلا فى ال Entity اللى اسمها Employees . بس هضيف لل EO بتاعت تفاصيل الراتب Accessor من ال Employee و اضيف بعد كدة transient Attribute و اكتب فية EmployeesVOAccess.first().BirthDate تقديم بلاغ
بتاريخ: 1 مايو 201213 سنة comment_223961 كلامك مظبوط جدا ياطارق بس لازم تكون متأكد ان EmployeesVOAccess أو EmployeesVOAccess . first لا يكون ب null يعنى الكود النهائى if(EmployeesVOAccess != null && EmployeesVOAccess.first() != null){return EmployeesVOAccess.first().BirthDate;}return null; تقديم بلاغ
بتاريخ: 2 مايو 201213 سنة كاتب الموضوع comment_223991 كلامك مظبوط جدا ياطارق بس لازم تكون متأكد انEmployeesVOAccess أو EmployeesVOAccess . first لا يكون ب null يعنى الكود النهائى if(EmployeesVOAccess != null && EmployeesVOAccess.first() != null){return EmployeesVOAccess.first().BirthDate;}return null; الله عليك تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.