بتاريخ: 4 فبراير 201016 سنة comment_184170 انا عندي فور قوائم مبيعات وقد قمت بعمل تركر يقوم بخزن تسلسل القائمة اعتمادا على اخر رقم تم خزنه المشكلة انه في حالت فتح الفورم من قبل شخصين ويقومون بعملية الخزن فان الشخص الاول ياخذ تسلسل 2 على سبيل المثال والشخص الثاني يقوم باخذ نفس التسلس مع العلم يجب ان ياخذ الرقم الذي بعده SELECT max(num)+1 INTO :NUM FROM table ; commit_form; commit; ماهي المشكلة افيدوني لا اعرف ما الذي يحدث مع العلم ان هذا الفورم مدخل فيه اكثر من 5000 قائمة اين المشكلة لااعرف مالذي يحدث وكانه الداتا بيس لاتتحدث وتاخذ القيمة المدخلة وفي حالة كون شخص واحد يعمل على الفروم لاتوجد اي مشكلة فان التسلسل يسير بصورة صحيحة بدون مشاكل تقديم بلاغ
بتاريخ: 4 فبراير 201016 سنة comment_184180 اول شي اخي الكريم عدل الكود و ضع nvlتاني شي هاد الكور حطو pre-insert tigger على البلوك و بهيك بيمشي الحال ان شاء الله تقديم بلاغ
بتاريخ: 7 فبراير 201016 سنة كاتب الموضوع comment_184338 اشكرك اخي لاولكن لم تحل المشكلة .؟؟؟؟؟؟؟؟؟ تقديم بلاغ
بتاريخ: 7 فبراير 201016 سنة comment_184341 يجب مراعاة type للحقولفمثلا لو كان حقل num من نوع varchar فان max(9,10 سيكون 9 !!!ممكن يكون المشكل... تقديم بلاغ
بتاريخ: 7 فبراير 201016 سنة كاتب الموضوع comment_184349 اخي العزيز num من نوع number !!!!! تقديم بلاغ
بتاريخ: 7 فبراير 201016 سنة كاتب الموضوع comment_184351 الا يوجد حل للمشكلة اخواني ساعدوني لااعرف ماالذي افعله تقديم بلاغ
بتاريخ: 7 فبراير 201016 سنة comment_184390 بسم الله الرحمن الرحيم طيب اخي شو رايك تغير للكود التالي declare i number; begin select max(رقم الطبيب)into i from جدول الاطباء; last_record; create_record; :رقم الطبيب.جدول الاطباء:=i+1; go_item('اسم الطبيب'); end; وان شاء الله يشتغل معك تقديم بلاغ
بتاريخ: 8 فبراير 201016 سنة كاتب الموضوع comment_184451 اشكرك اخي العزيز ولكن لم تحل المشكلة وللاسف تقديم بلاغ
بتاريخ: 8 فبراير 201016 سنة comment_184453 جرب كتابة الكود على When_Create_Record Trigger Begin Select Nvl(Max(Serial),0) + 1 Into :Blk_1.Serial From Table_Name; Exception When No_Data_Found Then :Blk_1.Serial := 1; End; تقديم بلاغ
بتاريخ: 8 فبراير 201016 سنة comment_184457 السلام عليكمانظر في هذا الموضوع http://www.araboug.org/ib/index.php?showtopic=34034ضع الكود في pre insert كي تضمن الادخال الصحيحموفق تقديم بلاغ
بتاريخ: 8 فبراير 201016 سنة comment_184463 ممكن تستخدم الSEQUENCE بس مشكلته انه بيعمل gap فى التسلسل لو مش فارق معال الgap استخدمه او ممكن تضع الكود بتاعك على DB trigger: create or replace trigger TRIGGER_NAME before insert on TABLE_NAME for each row declare begin SELECT nvl(max(num),0)+1 INTO :NUM FROM table ; end TABLE_NAME; تقديم بلاغ
بتاريخ: 8 فبراير 201016 سنة كاتب الموضوع comment_184473 اخواني الاعزاء انا ممتن لكم للاجابة والمساعدة لقد جربت جميع الحلول ولم تنفع ليست المشكلة في التسلسل في حد ذاتها ولكن المشكلة في حالة كون اكثر من مستخدم يقوم بعملية الحفظ او ادخال قيد يصادف تكرار التسلسل ولكن في حالة كون مستخدم واحد يقوم بعملية الحفظ فليس هنالك مشكلة لكن المشكلة تكمن في حالة كون مستخدمين او اكثر يقومون بالحفظ في نفس الوقت وفي حالات اخرى عندما يقوم شخص بحفظ قائمة ثم لايخرج منها ويقوم اللمستخدم الاخر بتكوين قائمة جديدة فانها تاخذ نفس تسلسل القائمة المفتوحه مع العلم انه تم حفظ القائمة .... اما في حالة سد القائمة المحفوظه فان القائمة الجديدة ستحفظ بتسلسل جديد وبدون اي مشكلة ؟؟؟ جربيت وضع التركر على مستوى الدتابيس ولم ينفع كانه قاعدة البيانات لاتستشعر بوجود قيد جديد وبتسلسل جديد الا بعد غلق الفورم تم تعديل 8 فبراير 201016 سنة بواسطة مصعب اسامة تقديم بلاغ
بتاريخ: 8 فبراير 201016 سنة comment_184484 لو ممكن تبعت الكود اللى انت كاتبه لان المفروض ان كل الاكواد السابق شرحها سليمهوكما ذكر الاستاذ amgad يفضل اظهار رقم المتسلسل التلقائي وذلك بعد انشاء السجل فعليا بالجدول باستخدام امر PRE_INSERT ومن خلال الضغط على مفتاح حفظ البياناتو لا يفضل اظهارة عند الدخول على الشاشة ... بمعنى ان الحقل الخاص بالمسلسل يجب ان يكو display item وفى التريجر الخاص ب pre insert تقوم بكتابة الكود كما هو مشروح سابقا Select Nvl(Max(Serial),0) + 1 Into :Blk_1.Serial From Table_Name; تقديم بلاغ
بتاريخ: 8 فبراير 201016 سنة comment_184485 السلاموا عليكوم المشكله ياحبيبى ان الرقم انت عامله مفتاح رئيس وممكن حل المشكله دى عن طريق عمل EXCPTION تقديم بلاغ
بتاريخ: 9 فبراير 201016 سنة comment_184559 اخي العزيز انت مسوي البرنامج بحيث انه اكثر من مستخدم يشتغل عليه وفي هذه الحالهاذا قام المستخدم الاول بالضغط على زر جديد وطلع الرقم 2 وفي نفس اللحظه المستخدم الثاني ضغط زر جديد وطلع رقم2وقام المستخدم الاول بعمل الحفظ للسجل رقم 2 فان المسخدم الثاني لا يستطيع ان يحفظ السجل بنفس الرقم2ولهذا يجب عليك ان تكتب كود التسلسل في زر الاضافة وليس في زر الحفظلكي عند ادخل السجل من المستخدم الاول يظهر الرقم2 وعند عمل اضافة من المستخدم الثاني يضهر الرقم3 ومن ثم الضغط على زر حفظ الذي بداخلة كود الحفظ فقط بكل سهولهوفقنا الله لما نحبه ويرضاه تم تعديل 9 فبراير 201016 سنة بواسطة الحكيمي تقديم بلاغ
بتاريخ: 9 فبراير 201016 سنة comment_184571 السلام عليكمانت ممكن تحط الكلام ده في تريجرpre-insertهيشتغل ان شاء اللهسلام تقديم بلاغ
بتاريخ: 14 فبراير 201016 سنة comment_185000 جرب هذا الكود وهتدعيلى begin SELECT nvl( max(num),0)+1 INTO :NUM FROM table ; commit_form; clear_form; execute_query; last_record; exception when dup_val_on_index then message(' '); end; تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.