الانتقال إلى المحتوى

عاوز كل ما انشئ صف جديد يجيب العدد يبدأ بالعد اتوماتيكيا من 1 ثم 2 ثم 3 الخ


yousef mohamed

Recommended Posts

عندى فورمة من نوع tubular عندى فيها حقل معين للعدد عاوز كل ما انشئ صف جديد يجيب العدد يبدأ بالعد اتوماتيكيا من 1 ثم 2 ثم 3 الخ

رجاء المساعدة مع الشكر

رابط هذا التعليق
شارك

وعليكم السلام اذا كنت تريد انشاء 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  اسم الاينيم

بالتوفيق

رابط هذا التعليق
شارك

اخى العزيز m_md شكرا على سرعة الرد ولكن ليس هذا ما اقصدة لان فى هذه الحالة نحن نعتمد على البيانات المستدعاة فى قاعدة البيانات او اقوم بالحفظ بعد كل سطر ولكن انا لا اريد ان اعتمد على هذه البيانات الا بعد الحفظ النهائى لانه يوجد عندى بعض الخدمات التى يقوم بها الموظفين وتختلف من موظف لاخر فانا اريد عمل count لهذه الخدمات من خلال الفورم فى تابلر فورم ويتم البدء من جديد عند كل موظف هذا ما اقصدة مع الشكر

تم تعديل بواسطة scdc2003
رابط هذا التعليق
شارك

هل عندما تقوم بعمل رن للفورم ياتي ببيانات من الداتا بيس وتظهر بالداتا بلوك تبيولر وتريد ان تضيع عدة سجلات في ان واحد وثم عمل حفظ

رابط هذا التعليق
شارك

اخي الطريقة كالتالي

تعمل باراميتر بتسميه 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

رابط هذا التعليق
شارك

اخي الطريقة كالتالي

تعمل باراميتر بتسميه 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

الطريقة تم تجريبها وتعمل

جرب كده ترجع لريكورد بعد ما سبته .

رابط هذا التعليق
شارك

شكرا للاخ اسلام على الملاحظة حيث تم التجريب ماقاله ووجد بانه كل مرة تتنقل بين الريكورد تزداد القيمة ولذلك لا يعطي قيمة متسلسلة

لذلك لابد من وضع الكود داخل TRIGGER PRE INSERT

وبذلك تضمن بادخال قيم متسلسلة ويتم ادخال فقط عند عمل حفظ حيث تتم قبل كل عملية ادخال لسجل وضع قيمة للبرايمري كي ويحفظ السجل ومن ثم تزداد قيمة البراميتر وترجع تعطي للبرايمري كي وهكذا....الى ان تنتهي من عمليه ادخال السجلات الجديدة و مع ملاحظة بانه الافضل اخفاء عمود البرايمري كي وعدم اظهاره مع الاعمدة المراد ادخال البيانات عليها

الفورم المرفق مجرب على SCOTT/TIGER

اتمنى ان يفي بالغرض مع الشكر

EMP_EXAMPLE.rar

رابط هذا التعليق
شارك

مثل ما ذكر المهندس إسلام..

يتم إستخدام الكود التالي:

:ITEM := :SYSTEM.CURSOR_RECORD ;

مووفق

رابط هذا التعليق
شارك

مثل ما ذكر المهندس إسلام..

يتم إستخدام الكود التالي:

:ITEM := :SYSTEM.CURSOR_RECORD ;

مووفق

اخي الكريم هذه الطريقة غير فعالة وموضح لك بالصور سبب فشل هذه الطريقه

post-138214-0-08861600-1461590121_thumb.jpg

post-138214-0-18116700-1461590140_thumb.jpg

رابط هذا التعليق
شارك

الموضوع ابسط من هذا يا أخى , لكن رجاء فكر في المشكلة وستجد الحل .

تم ذكر أكثر من Hint منى ومن زملائى .

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية