بتاريخ: 25 فبراير 20232 سنة comment_302330 اريد طريقة انشاء رقم متسلسل لحق معين داخل FORMS تم تصميمة APEX بمعنى عند الحفظ ياخذ اعلى رقم ويضيفة كما كان يحديث داخل DEIV6I عن طريق AELECT MAX(ID) + 1 INTO :ID FROM FUAL هذه الطريقة كيف انشأها فى APEX تقديم بلاغ
بتاريخ: 5 مارس 20232 سنة كاتب الموضوع comment_302337 مفيش حد رد خالص ليه كده انا عرفت انه يمكن اعمل processing بس اوامرها ايه تقديم بلاغ
بتاريخ: 27 مارس 20232 سنة comment_302359 مبدأيا, طريقة الـ max(id) لازم تضيف ليها nvl عشان هيطلع no_data_found لو الجدول لسة فاضي. ثانيا: الطريقة دي غلط في الـ multi user environment. بالنسبة لأبكس, تقدر تعمل Process وتكتب فيها If :Your_pk_item is null then select your_seq.nextval into :your_pk_item from dual; end if; نصيحة: ما تتعلمش بالطريقة دي, بالذات في الأداة دي. هتضيع عمرك ومش هتوصل لمستوى يحترم. شوف كتاب كويس أو كورس كويس وذاكر ومارس وطبق الي ذاكرته عشان توصل لمستوى كويس. وفقك الله لما يحب ويرضى. تم تعديل 27 مارس 20232 سنة بواسطة eslam elbyaly تقديم بلاغ
بتاريخ: 15 مايو 20232 سنة comment_302419 السلام عليكم يمكن عمل Computation على الأيتم اللي اسمه مثلا P1_ITEM1 وال point هتكون After Submit ال computation type هتكون SQL Query return single value SELECT NVL(MAX(YOUR_COLUMN),0)+1 FROM YOUR_TABLE; وتقدر تخلي Server Side condition ال Item is NULL واختار P1_ITEM1 مثال بالصور تقديم بلاغ
بتاريخ: 18 مايو 20232 سنة comment_302423 الطريقة دي غلط لإنشاء مسلسل في أي تطبيق, لإن القيمة ممكن تتكرر في البيئة متعدد المستخدمين. في أبكس تقدر تعمل Process وتسيليكت القيمة من Sequence, كده If your_pk is null then select your_seq.nextval from dual; end if; وتقدر بعيد عن الأبكس تعين قيمة إفتراضية لعمود المفتاح الرئيسي في الداتابيز, وماتعملش حاجة في الأبكس إطلاقا. تقديم بلاغ
بتاريخ: 19 مايو 20232 سنة comment_302424 في ١٨/٥/٢٠٢٣ at 11:50, eslam elbyaly said: الطريقة دي غلط لإنشاء مسلسل في أي تطبيق, لإن القيمة ممكن تتكرر في البيئة متعدد المستخدمين. في أبكس تقدر تعمل Process وتسيليكت القيمة من Sequence, كده If your_pk is null then select your_seq.nextval from dual; end if; وتقدر بعيد عن الأبكس تعين قيمة إفتراضية لعمود المفتاح الرئيسي في الداتابيز, وماتعملش حاجة في الأبكس إطلاقا. بالتأكيد ال Sequence أفضل, الحل السابق في حالة لم يكن هناك Sequence على الداتا بيز. مشكور على المشاركة تقديم بلاغ
بتاريخ: 19 مايو 20232 سنة comment_302426 السلام عليكم ورحمة الله وبركاته الافضل فى وجهه نظهري انه القيمة يتم انشائها فى Trigger على مستوى الداتابيز وليس من خلال الابليكشن حاول تقلل دايما الprocess اللى رايحة وراجعة من الداتابيز CREATE OR REPLACE TRIGGER TriggerName BEFORE INSERT ON yourTable FOR EACH ROW DECLARE v_MAX_PK NUMBER ; BEGIN if :new.PrimaryKey is null then SELECT NVL(MAX(PrimaryKey),0)+1 INTO v_MAX_PK FROM yourTable ; :NEW.PrimaryKey := v_MAX_PK ; end if; END TriggerName; وممكن تستخدم Sequence بدلا من الجزء ده SELECT NVL(MAX(PrimaryKey),0)+1 INTO v_MAX_PK FROM yourTable ; تم تعديل 19 مايو 20232 سنة بواسطة ENG_HOSSAM_WALLY تقديم بلاغ
بتاريخ: 19 مايو 20232 سنة كاتب الموضوع comment_302427 الف شكر على رددكم والحمد لله استفدت منها جدا وشكرا ليكم تقديم بلاغ
بتاريخ: 19 مايو 20232 سنة كاتب الموضوع comment_302428 في ٢٧/٣/٢٠٢٣ at 17:42, eslam elbyaly said: مبدأيا, طريقة الـ max(id) لازم تضيف ليها nvl عشان هيطلع no_data_found لو الجدول لسة فاضي. ثانيا: الطريقة دي غلط في الـ multi user environment. بالنسبة لأبكس, تقدر تعمل Process وتكتب فيها If :Your_pk_item is null then select your_seq.nextval into :your_pk_item from dual; end if; نصيحة: ما تتعلمش بالطريقة دي, بالذات في الأداة دي. هتضيع عمرك ومش هتوصل لمستوى يحترم. شوف كتاب كويس أو كورس كويس وذاكر ومارس وطبق الي ذاكرته عشان توصل لمستوى كويس. وفقك الله لما يحب ويرضى. تقديم بلاغ
بتاريخ: 20 مايو 20232 سنة comment_302435 في ١٩/٥/٢٠٢٣ at 17:07, ENG_HOSSAM_WALLY said: لسلام عليكم ورحمة الله وبركاته الافضل فى وجهه نظهري انه القيمة يتم انشائها فى Trigger على مستوى الداتابيز وليس من خلال الابليكشن حاول تقلل دايما الprocess اللى رايحة وراجعة من الداتابيز أبكس أصلا عبارة عن Component في الداتابيز. احنا بنبعت Request للداتابيز عشان تعمل Processing لكل الـ Components في الـ Page. فانت كده كده رايح وراجع من الداتابيز. - التريجر هيبقى Database Object زيادة, وMeta data زيادة لغرض أبسط من كده. - حتى لما تعمل Page Process, فده Component زيادة هيتخزن ليه Meta data في الداتابيز. - طبعا كل ده مش هيفرق في حاجة لو بتشتغل في Scale صغير, لكن بيفرق في الأبلكيشنز الكبيرة طبعا. - مع العلم ان أبكس نفسه بيعمل Process للبرايماري كي لما تعمل فورم بالويزارد بالكود المذكور فوق, وبيعمل Before Insert Trigger بالكود الي انت ذكرته, لما تنشأ جدول عن طريق الـ Object Browser. بس ده مش معناه انه Best Practice. تم تعديل 20 مايو 20232 سنة بواسطة eslam elbyaly تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.