الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

checkbox

مغلق
بدأه shayma'a في 10 فبراير 2002 · 7 رد · 854 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أقوم بعمل برنامج يحتوي بيانات بحجم كبير جدا

وأريد أن أقوم باختيار البيانات المراد حذفها أولا ... فعند الضغط على زر حذف يجب أختيار البيانات المراد حذفها عن طريق checkbox أولا ثم عند الضغط على زر موافق يقوم بعمل commet لهذه البيانات الملغاة

تم عمل procedure يقوم ب loop على مستوى ال form حيث يحذف البيانات في حالة ال checked لكن المشكلة أنه لا يعمل بشكل صحيح في جميع الحالات

ال procedure هو

PROCEDURE PRC_DEL_CHK_REC IS

LAST NUMBER(5);

BEGIN

GO_BLOCK('DTB_SOQ_DECS');

LAST_RECORD;

LAST :=:SYSTEM.CURSOR_RECORD;

FOR I IN 1..LAST LOOP

IF CHECKBOX_CHECKED('CHK_DEL') THEN

DELETE_RECORD;

END IF;

UP;

END LOOP;

END;

كيف يمكنني إجراء عملية الحذف مع تغطية جميع الحالات

#2

تحياتي للجميع

يمكنك تجربة هذا الPROCEDURE

----------------------------------------------------------

PROCEDURE PRC_DEL_CHK_REC IS

LAST NUMBER(5);

BEGIN

GO_BLOCK('DTB_SOQ_DECS');

first_RECORD;

loop

IF CHECKBOX_CHECKED('CHK_DEL') THEN

DELETE_RECORD;

END IF;

if :SYSTEM.LAST_RECORD = 'TRUE' THEN

EXIT;

ELSE

NEXT_RECORD;

END IF;

END LOOP;

END;

---------------------------------------------------

هو نفس الPROCEDURE اللي انت كتبتيه بس اجريت عليه

بعض التعديلات ;)

تحياتي للجميع

#3

شكرا جزيلا على الرد

لكن مع تجربة ال PROCEDUE ينفذ بشكل صحيح

ولكنه يتجاهل ال RECORD الاخير حتى ولو كان CHECKED (yes)

#4

تحياتي للجميع

اكتب لك الprocedure مره ثانيه لاني نسيت جمله :

----------------------------------------------------------

PROCEDURE PRC_DEL_CHK_REC IS

LAST NUMBER(5);

BEGIN

GO_BLOCK('DTB_SOQ_DECS');

first_RECORD;

loop

IF CHECKBOX_CHECKED('CHK_DEL') THEN

DELETE_RECORD;

END IF;

if :SYSTEM.LAST_RECORD = 'TRUE' THEN

EXIT;

ELSE

NEXT_RECORD;

END IF;

END LOOP;

IF CHECKBOX_CHECKED('CHK_DEL') THEN

DELETE_RECORD;

END IF

END;

---------------------------------------------------

وشكرا

:o

#5

منذ البداية كنت أواجه حالات لا ينجح فيها ال procedure

وهنا أيضا أواجه حالة لا يعمل فيها بشكل صحيح

فعند عملية الحذف إذا كان لدي 10 records وإخترت السجلات 4 ، 5 ، 6 ، 7

فيقوم بحذف 4 ، و 6 فقط ويقفز عن 5 ـ 7

فحصت الحالات التي يقوم بها فوجدت أنه يمر على جميع السجلات

ولا أعرف لم يقفز عن بعضها أثناء الحذف

#6

بعد التحية

حاولي ان ترتبي البيانات في ال block ترتيب منطقي مثلا يعتمد الترتيب على رقم الموظف او الدائرة مثلا order by .deptno

#7

عمل الprocedure بالشكل الصحيح ولكن بالطريقة التالية

PROCEDURE PRC_CHK_DEL IS

BEGIN

GO_BLOCK('DTB_EMP_LOAN_DECS');

FIRST_RECORD;

LOOP

IF :SYSTEM.LAST_RECORD='TRUE' THEN

EXIT;

ELSIF CHECKBOX_CHECKED('CHK_DEL') THEN

DELETE_RECORD;

ELSE

NEXT_RECORD;

END IF;

END LOOP;

IF CHECKBOX_CHECKED('CHK_DEL') THEN

DELETE_RECORD;

END IF;

END;

وشكرا على مساعدتكم

#8

تحياتي للجميع

قمتي بترتيب جمل الif بالشكل الصحيح .....

وهذه هي المشكله التي لم انتبه لها ....

شكرا

:o

هذا الموضوع مغلق.

مواضيع مشابهة