الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

مشكلة في التسلسل التلقائي غريبة جد جدا ارجو المساعدة

Featured Replies

بتاريخ:

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

SELECT max(num)+1 INTO :NUM FROM table ;
commit_form;
commit;


ماهي المشكلة افيدوني لا اعرف ما الذي يحدث مع العلم ان هذا الفورم مدخل فيه اكثر من 5000 قائمة اين المشكلة لااعرف مالذي يحدث وكانه الداتا بيس لاتتحدث وتاخذ القيمة المدخلة

وفي حالة كون شخص واحد يعمل على الفروم لاتوجد اي مشكلة فان التسلسل يسير بصورة صحيحة بدون مشاكل

بتاريخ:

اول شي اخي الكريم عدل الكود و ضع nvl

تاني شي هاد الكور حطو pre-insert tigger على البلوك و بهيك بيمشي الحال ان شاء الله

بتاريخ:
  • كاتب الموضوع

اشكرك اخي لاولكن لم تحل المشكلة .؟؟؟؟؟؟؟؟؟

بتاريخ:

يجب مراعاة type للحقول
فمثلا لو كان حقل num من نوع varchar فان max(9,10 سيكون 9 !!!
ممكن يكون المشكل...

بتاريخ:
  • كاتب الموضوع

اخي العزيز num من نوع number !!!!!

بتاريخ:
  • كاتب الموضوع

الا يوجد حل للمشكلة اخواني ساعدوني لااعرف ماالذي افعله

بتاريخ:

بسم الله الرحمن الرحيم

طيب اخي شو رايك تغير للكود التالي

declare
i number;
begin select max(رقم الطبيب)into i from جدول الاطباء;
last_record;
create_record;
:رقم الطبيب.جدول الاطباء:=i+1;
go_item('اسم الطبيب');
end;



وان شاء الله يشتغل معك

بتاريخ:
  • كاتب الموضوع

اشكرك اخي العزيز ولكن لم تحل المشكلة وللاسف :blink: :rolleyes:

بتاريخ:

جرب كتابة الكود على 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;

بتاريخ:

السلام عليكم

انظر في هذا الموضوع
http://www.araboug.org/ib/index.php?showtopic=34034

ضع الكود في pre insert كي تضمن الادخال الصحيح

موفق

بتاريخ:

ممكن تستخدم ال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;

بتاريخ:
  • كاتب الموضوع

اخواني الاعزاء انا ممتن لكم للاجابة والمساعدة



لقد جربت جميع الحلول ولم تنفع
ليست المشكلة في التسلسل في حد ذاتها ولكن المشكلة في حالة كون اكثر من مستخدم يقوم بعملية الحفظ او ادخال قيد يصادف تكرار التسلسل ولكن في حالة كون مستخدم واحد يقوم بعملية الحفظ فليس هنالك مشكلة لكن المشكلة تكمن في حالة كون مستخدمين او اكثر يقومون بالحفظ في نفس الوقت وفي حالات اخرى عندما يقوم شخص بحفظ قائمة ثم لايخرج منها ويقوم اللمستخدم الاخر بتكوين قائمة جديدة فانها تاخذ نفس تسلسل القائمة المفتوحه مع العلم انه تم حفظ القائمة .... اما في حالة سد القائمة المحفوظه فان القائمة الجديدة ستحفظ بتسلسل جديد وبدون اي مشكلة ؟؟؟ جربيت وضع التركر على مستوى الدتابيس ولم ينفع :blink: :rolleyes: :blink:


كانه قاعدة البيانات لاتستشعر بوجود قيد جديد وبتسلسل جديد الا بعد غلق الفورم

تم تعديل بواسطة مصعب اسامة

بتاريخ:

لو ممكن تبعت الكود اللى انت كاتبه لان المفروض ان كل الاكواد السابق شرحها سليمه

وكما ذكر الاستاذ amgad

يفضل اظهار رقم المتسلسل التلقائي وذلك بعد انشاء السجل فعليا بالجدول باستخدام امر PRE_INSERT ومن خلال الضغط على مفتاح حفظ البيانات

و لا يفضل اظهارة عند الدخول على الشاشة ...


بمعنى ان الحقل الخاص بالمسلسل يجب ان يكو display item وفى التريجر الخاص ب pre insert تقوم بكتابة الكود كما هو مشروح سابقا


Select Nvl(Max(Serial),0) + 1
Into :Blk_1.Serial From Table_Name;

بتاريخ:

السلاموا عليكوم
المشكله ياحبيبى ان الرقم انت عامله مفتاح رئيس
وممكن حل المشكله دى عن طريق عمل EXCPTION

بتاريخ:

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

وقام المستخدم الاول بعمل الحفظ للسجل رقم 2 فان المسخدم الثاني لا يستطيع ان يحفظ السجل بنفس الرقم2

ولهذا يجب عليك ان تكتب كود التسلسل في زر الاضافة وليس في زر الحفظ

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

وفقنا الله لما نحبه ويرضاه

تم تعديل بواسطة الحكيمي

بتاريخ:

السلام عليكم
انت ممكن تحط الكلام ده في تريجر
pre-insert
هيشتغل ان شاء الله
سلام

بتاريخ:

جرب هذا الكود وهتدعيلى
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;

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.