بتاريخ: 16 أكتوبر 201114 سنة comment_216591 بسم الله الرحمن الرحيم لقد قمت بعمل جدول اسمه operation هذا الجدول يتجدد يوميا 1 -لذلك اريد عمل button يقوم بمسح كل العمليات القديمة الموجودة داخل الجدول وجعله الله في ميزان حسناتكم تقديم بلاغ
بتاريخ: 16 أكتوبر 201114 سنة comment_216593 ضفله عمود للتاريخ لو مفيهوشوامسح كل حاجة تطلع من ناتج طرح يوم من sysdate تقديم بلاغ
بتاريخ: 16 أكتوبر 201114 سنة كاتب الموضوع comment_216596 يا ريت توضيح اكتر لو سمحت انا مفهمتش تقديم بلاغ
بتاريخ: 16 أكتوبر 201114 سنة comment_216603 تصدق ان انا في الاول افتكرت عاوز تمسح الـ operations بتاعت اليوم اللي فات بسلكن انت كاتب انك عاوز تمسح كل الـ operations القديمةوانا مش عارف ايه المشكلة في كدهامسح الجدول كله وسيب الـ structure بتاعهبـ truncateعلي قد ما انا فاكر يعني تقديم بلاغ
بتاريخ: 16 أكتوبر 201114 سنة comment_216607 أعتقد ان ما تقصده هو عمل Delete All بوتون لمسح كل الRecords اللى عندك فى الجدول والحل هو عمل ميثود بتجيب منها اسم ال Iterator ومنها بتلوب على ال RowSetIterator وتعملهم remove تقديم بلاغ
بتاريخ: 17 أكتوبر 201114 سنة comment_216620 اتفضلdelete operation where date<sysdate;commit;جرب وتابع معنامعكم ولكم نتواصل تقديم بلاغ
بتاريخ: 17 أكتوبر 201114 سنة كاتب الموضوع comment_216625 اتفضلdelete operation where date<sysdate;commit;جرب وتابع معنامعكم ولكم نتواصل الاخ ahmedbb الكود ده تقريبا تنفيذه في الفورمز بيلدر بالنسبة للاخت هالة يا ريت توضيح لان انا لما جيبت الايتريتور وعملت لوب ملقتش الكوماند بتاع الdelete فا ياريت لو توضحي بالكود يكون افضل وجزاك الله كل خير وشكرا ليك اخ احمد تقديم بلاغ
بتاريخ: 17 أكتوبر 201114 سنة كاتب الموضوع comment_216629 الحمد لله تم حل المشكلة وهذا هو الكود لافادة الجميع وده هنعمله في ميثود تحت زورار الdelete BindingContainer bindings = getBindingContainer(); Number sum =new Number(0); DCIteratorBinding iter = getIterator("EarnMonthView1Iterator"); int startRange = iter.getRangeSize(); int startIdx = iter.getCurrentRowIndexInRange(); iter.setRangeSize(-1); Row[] rows = iter.getAllRowsInRange(); for (int i = 0; i < rows.length; i++) { Row row = rows; if (row.getAttribute("MEarn") != null) { OperationBinding operationBinding = bindings.getOperationBinding("Delete"); Object result = operationBinding.execute(); } } iter.setRangeSize(startRange); iter.setCurrentRowIndexInRange(startIdx); return null; } تقديم بلاغ
بتاريخ: 17 أكتوبر 201114 سنة comment_216634 اعتقد ان انا والاخ احمد مخدناش بالنا ان السؤال في منتدي الـ J-developerعذراالسلام عليكم ورحمة الله وبركاته تقديم بلاغ
بتاريخ: 17 أكتوبر 201114 سنة comment_216654 لم اجرب الميثود بتاعتك لكن استخدم الميثود التاليه لمسح كل الrows وكمان عمل commit public String deleteAll() { // Add event code here... DCBindingContainer bc = (DCBindingContainer)getBindings(); // 2. Find a named iterator binding DCIteratorBinding iter = (DCIteratorBinding)bc.findIteratorBinding("yourVOIterator"); //4. Get the RowSetIterator Object RowSetIterator rsi = iter.getViewObject().createRowSetIterator(null); rsi.reset(); //delete all rows while (rsi.hasNext()) { Row current = rsi.next(); rsi.setCurrentRow(current); current.remove(); } rsi.closeRowSetIterator(); OperationBinding operationBinding = bindings.getOperationBinding("Commit"); operationBinding.execute(); return null; } تقديم بلاغ
بتاريخ: 17 أكتوبر 201114 سنة comment_216658 ودى طريقة تانية للحذف------------------------- DCBindingContainer bc = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry(); ViewObject vo = bc.findIteratorBinding("Operations1Iterator").getViewObject(); ApplicationModuleImpl app = (ApplicationModuleImpl) vo.getApplicationModule(); CallableStatement st = null; try { st = app.getDBTransaction().createCallableStatement("delete from operations", 0); st.executeUpdate(); app.getTransaction().commit(); vo.executeQuery(); } catch(Exception e){e.printStackTrace();} finally { try { if(st != null) st.close(); } catch(Exception e){e.printStackTrace();} } تقديم بلاغ
بتاريخ: 18 أكتوبر 201114 سنة كاتب الموضوع comment_216674 شكرا اخت هاله شكرا miro جزاكم الله خير تقديم بلاغ
بتاريخ: 18 أكتوبر 201114 سنة comment_216696 الأخ بيبو:يمكنك استخدام الدالة remove() على Row مباشرة بدلاً من الحذف عن طريق الـ operator.الأخت هالة:الـ looping على الصفوف أفضل باستخدام getAllRowInRange حتى لا يتم إنشاء objects جديدة في الذاكرة تقوم بعمل تحميل إضافي على قاعدة البياناتالأخ ميرو:لا تستخدم CallableStatement لأنه لو تم إضافة bind variables في الجملة فستضطر لإعادة كتابة الكود من جديد والأفضل استخدام PreparedStatement تقديم بلاغ
بتاريخ: 19 أكتوبر 201114 سنة comment_216707 الأخ مصطفى :دائما ما نحتاج لملحوظاتك دائما معاك حق فعلا ال PreparedStatement اسرع فى جمل Sql وكمان precompiledبس انا كنت اقصد استخدامCallableStatement لأنها اشمل وحبيت أوضح فى المثال مش بس تقدر تنفذ جمل sql لأ كمان تقدر تستدعى أى stored Procedure فى dataBase عن طريق adf تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.