yousef mohamed بتاريخ: 24 أبريل 2016 تقديم بلاغ مشاركة بتاريخ: 24 أبريل 2016 عندى فورمة من نوع tubular عندى فيها حقل معين للعدد عاوز كل ما انشئ صف جديد يجيب العدد يبدأ بالعد اتوماتيكيا من 1 ثم 2 ثم 3 الخ رجاء المساعدة مع الشكر اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_md بتاريخ: 24 أبريل 2016 تقديم بلاغ مشاركة بتاريخ: 24 أبريل 2016 وعليكم السلام اذا كنت تريد انشاء PRIMARY KEY بشكل الي دون تدخل اليوزر تروح على البلوك التي يوجد فيها ITEM وتكتب داخل TRIGGER WHEN CREATE RECORD SELECT NVL(MAX(SEQ_NO),0)+1 INTO :DATA_BLOCK.ITEM _NAME FROM NAME_TABLE بفرض NAME_TABLE هو اسم الجدول SEQ_NO اسم العمو د البرايمري كي الذي تريد وضع القيمة فيه DATA_BLOCK اسم الداتا بلوك لديك ITEM_NAME اسم الاينيم بالتوفيق اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
yousef mohamed بتاريخ: 24 أبريل 2016 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 24 أبريل 2016 (معدل) اخى العزيز m_md شكرا على سرعة الرد ولكن ليس هذا ما اقصدة لان فى هذه الحالة نحن نعتمد على البيانات المستدعاة فى قاعدة البيانات او اقوم بالحفظ بعد كل سطر ولكن انا لا اريد ان اعتمد على هذه البيانات الا بعد الحفظ النهائى لانه يوجد عندى بعض الخدمات التى يقوم بها الموظفين وتختلف من موظف لاخر فانا اريد عمل count لهذه الخدمات من خلال الفورم فى تابلر فورم ويتم البدء من جديد عند كل موظف هذا ما اقصدة مع الشكر تم تعديل 24 أبريل 2016 بواسطة scdc2003 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_md بتاريخ: 24 أبريل 2016 تقديم بلاغ مشاركة بتاريخ: 24 أبريل 2016 هل عندما تقوم بعمل رن للفورم ياتي ببيانات من الداتا بيس وتظهر بالداتا بلوك تبيولر وتريد ان تضيع عدة سجلات في ان واحد وثم عمل حفظ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
yousef mohamed بتاريخ: 24 أبريل 2016 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 24 أبريل 2016 نعم هو كذلك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
eslam elbyaly بتاريخ: 24 أبريل 2016 تقديم بلاغ مشاركة بتاريخ: 24 أبريل 2016 (معدل) WHEN-CREATE-RECORD TRIGGER :ITEM := :SYSTEM.CURSOR_RECORD ; تم تعديل 24 أبريل 2016 بواسطة eslam elbyaly 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_md بتاريخ: 24 أبريل 2016 تقديم بلاغ مشاركة بتاريخ: 24 أبريل 2016 اخي الطريقة كالتالي تعمل باراميتر بتسميه V_count بتكتب بتريغر على مستوى الفورم when-new-form-instance select nvl(max(count),0)+1 into :parameter.v_count from emp بهذه الطريقة تحضر اكبر رقم بالجدول الذي تريد ان تخزن فيه وتحفظها داخل باراميتر ثم تكتب داخل تريغر على مستوى الداتا بلوك when new-record-instance emp.empno:=:parameter.v_count Parameter.v_count:=:parameter+1; بهذه الحاله كل ما ادخلت ريكورد جديد يقوم باسناد قيمة البارميتر v_count وثم يزيدها 1 الطريقة تم تجريبها وتعمل EMP_EXAMPLE.rar اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
eslam elbyaly بتاريخ: 24 أبريل 2016 تقديم بلاغ مشاركة بتاريخ: 24 أبريل 2016 اخي الطريقة كالتالي تعمل باراميتر بتسميه V_count بتكتب بتريغر على مستوى الفورم when-new-form-instance select nvl(max(count),0)+1 into :parameter.v_count from emp بهذه الطريقة تحضر اكبر رقم بالجدول الذي تريد ان تخزن فيه وتحفظها داخل باراميتر ثم تكتب داخل تريغر على مستوى الداتا بلوك when new-record-instance emp.empno:=:parameter.v_count Parameter.v_count:=:parameter+1; بهذه الحاله كل ما ادخلت ريكورد جديد يقوم باسناد قيمة البارميتر v_count وثم يزيدها 1 الطريقة تم تجريبها وتعمل جرب كده ترجع لريكورد بعد ما سبته . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_md بتاريخ: 25 أبريل 2016 تقديم بلاغ مشاركة بتاريخ: 25 أبريل 2016 شكرا للاخ اسلام على الملاحظة حيث تم التجريب ماقاله ووجد بانه كل مرة تتنقل بين الريكورد تزداد القيمة ولذلك لا يعطي قيمة متسلسلة لذلك لابد من وضع الكود داخل TRIGGER PRE INSERT وبذلك تضمن بادخال قيم متسلسلة ويتم ادخال فقط عند عمل حفظ حيث تتم قبل كل عملية ادخال لسجل وضع قيمة للبرايمري كي ويحفظ السجل ومن ثم تزداد قيمة البراميتر وترجع تعطي للبرايمري كي وهكذا....الى ان تنتهي من عمليه ادخال السجلات الجديدة و مع ملاحظة بانه الافضل اخفاء عمود البرايمري كي وعدم اظهاره مع الاعمدة المراد ادخال البيانات عليها الفورم المرفق مجرب على SCOTT/TIGER اتمنى ان يفي بالغرض مع الشكر EMP_EXAMPLE.rar اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
المبرمج الصاعد بتاريخ: 25 أبريل 2016 تقديم بلاغ مشاركة بتاريخ: 25 أبريل 2016 مثل ما ذكر المهندس إسلام.. يتم إستخدام الكود التالي: :ITEM := :SYSTEM.CURSOR_RECORD ; مووفق 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_md بتاريخ: 25 أبريل 2016 تقديم بلاغ مشاركة بتاريخ: 25 أبريل 2016 مثل ما ذكر المهندس إسلام.. يتم إستخدام الكود التالي: :ITEM := :SYSTEM.CURSOR_RECORD ; مووفق اخي الكريم هذه الطريقة غير فعالة وموضح لك بالصور سبب فشل هذه الطريقه اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
eslam elbyaly بتاريخ: 25 أبريل 2016 تقديم بلاغ مشاركة بتاريخ: 25 أبريل 2016 الموضوع ابسط من هذا يا أخى , لكن رجاء فكر في المشكلة وستجد الحل . تم ذكر أكثر من Hint منى ومن زملائى . اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.