الانتقال إلى المحتوى
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

بتاريخ:

الأخوة الأعزاء بارك الله فيكم
أرجو منكم أن تجيبوا على هذا السؤال
عندي حقل TEXT ITEM يتكون من ثلاثة مقاطع كالتالي
(FW-20107) حيث أن :
1-(FW-) يمثل ثابت أي لا يتغير له مدلول خاص في البرنامج
2- (201) هذا هو الرقم الذي أريده أن يتولد ديناميكياً 201,202,203,204……….. وهكذا ليس شرطاً أن يبدأ من 201
3- (07) هذا المقطع عبارة عن السنة الحالية وإذا كانت السنة 2008 فإن هذا المقطع يكون (08) وهكذا..........
أي يكون معنى المقطع بالكامل ( الطلب رقم 201 للسنة 2007)
علماً بأن هذا الحقل مفتاح أساسي ..... أرجوا من إخواني إعطائي الكود لجعل هذا الحقل يتولد ديناميكياً

بتاريخ:

الاخ الكريم
الموضوع ان شاء الله بسيط
in pre-insert trigger


DECLARE
X NUMBER;
BEGIN
BEGIN
SELECT MAX(TO_NUMBER(SUBSTR(COLUMN_NAME,3,LENGTH(COLUMN_NAME-2))))+1
INTO X
FROM TABLE_NAME;
EXCEPTION
WHEN NO_DATA_FOUND THEN
X:=1;
END;
:COLUMN_NAME:='FW-'||TO_CHAR(X)||TO_CHAR(SYSDATE,'YY');
END;

يارب يكون ده المطلوب
سلام
بتاريخ:
  • كاتب الموضوع

الأخ الكريم الف الف شكر لك
اظن ان الكود 90% المطلوب وبارك الله فيك يأخي على هذا التجاوب

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

أشكرك مرة أخرى يا أخ تيمور من أعماق قلبي
الكود صحيح 100% ولكن أجريت عليه التعديلات كالتالي :
DECLARE
X NUMBER;
BEGIN
BEGIN
SELECT MAX(TO_NUMBER(SUBSTR(INDENT_ID,4,LENGTH(SUBSTR(INDENT_ID,4,LENGTH(INDENT_ID)-2))-2))) +1
INTO X
FROM ORDERS_DETAILS;
EXCEPTION
WHEN NO_DATA_FOUND THEN
X:=1;
END;
:INDENT_ID:='FW-'||TO_CHAR(X)||TO_CHAR(SYSDATE,'YY');
END;
أود ان أوضح لك أن هذا الحقل في كتلة تفصيلية DETAIL BOLOCK وتتكون من عدة سجلات أي الفريم بتاعها من نوع TABULAR وعندما أقف على السجل الأول يتنفذ الكود بشكل صحيح وعندما اذهب إلى السجل الثاني ولم اعمل حفظ يأخذ السجل الثاني نفس الرقم للسجل الأول (انأ عارف لماذا .....لأنه لم يتم حفظ السجل الأول حتى يعيد لنا رقمه) وعندما ادخل السجل الأول ثم أضغط مفتاح حفظ تسير الأمور بشكل طبيعي علماً بأن الكود تحت الزناد WHEN-CREATE-RECORD لنفس الكتلة وليس في الزناد PRE-INSERT كما أشرت.

** أريد أن ادخل السجل الأول ثم انتقل إلى الجل الثاني فيأخذ السجل الرقم التلقائي مباشرة من دون أن اضغط زر حفظ
** عندما أضع الكود في الزناد PRE-INSERT وفي وقت الإدخال اترك هذا الحقل فارغ فان المؤشر لن ينتقل إلى الحقل الثاني لأنه مفتاح أساسي ...وقد غيرت الخاصية VALIDATION UNIT = FORM ولم ينفع ذلك ؟؟؟؟
** هل دالة التحويل في جملة SELECT السابقة ضرورية
أرجوك أخي أن تأخذ في يدي لأني في البداية وأنت تعلم كم لك من الأجر .........

۩ اللهـــــــــــــم صلي وسلم على سيدنا محمد وعلى آله وصحبه أجميعن ۩
. سبحان الله وبحمده سبحان الله العظيم

بتاريخ:

الأخ / صقر محمد

يفضل التعامل مع الرقم التلقائى قبل انشاء السجل فى قاعدة البيانات
كما ذكر الاخ / تيمور ... مع امر الpre-insert
لسبب اساسى .. وهو بفرض انه يوجد أكثر من موظف يضيف سجل جديد فى نفس الشاشة فى نفس الوقت ومع افتراض استخدام تريجير when-create-record الذى استخدمته فى تجهيز الرقم التلقائى ...
فى هذه الحاله سيتكرر نفس الرقم التلقائى .. وسيتم ادخال سجل واحد فقط .. وستظهر رساله خطأ للموظفين الاخرين .

استكمالا للحل
اجعل هذا الحقل محمى من الكتابة ... ولاتضع عليه شرط ضرورة الادخال .. لانه سيأخذ رقم تلقائى مع امر pre-insert
......................

كنت اريد ان اعرف ما فائدة تثبيت حرفى FW داخل مفتاح الجدول .. طالما انها قيمة ثابته ؟
أم ان هناك حروف اخرى سوف تستخدمها مع الجدول ؟

لماذا فضلت ان تستخدم حقل واحد كمفتاح للجدول ..
ولم تستخدم حقلين كمفتاح للجدول مثل .. حقل السنه الحالية و حقل أخر للمسلسل ( تلقائى )

تصميمك للحقل الواحد .. يدل على انك لن تبدأ مسلسل جديد مع بدايه كل سنه جديده

ارجوا الايضاح .. وشكرا لك

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

أخي / أستاذي AMGAD أشكرك على هذا التفاعل .......

- ليس ظروري ان أثبت -FW في مفتاح الحقل الأساسي واذا كان بالإمكان ان افصلهم هذا شي جميل ولكن هل يمكنني ان اتعامل معهم بعد الفصل بسهولة ؟ لاني اريد ان يظهر الرقم هكذاFW-20507 على سبيل المثال. في شاشة الادخال وكذلك في التقرير.
نعم ياخي هي حروف ثابتة ولايوجد حروف غيرها .
-نعم اريد ان أبدأ مسلسل جديد مع بداية كل سنة ....لم انتبه لهذا من قبل ياخي الف شكر وارجوا ان توضح لي اكثر...


۩ اللهـــــــــــــم صلي وسلم على سيدنا محمد وعلى آله وصحبه أجميعن ۩
. سبحان الله وبحمده سبحان الله العظيم

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

اشكرك ياخي امجد على هذة المعلومة القيمة pre-insert لاني بحاجة قصوى الى مثل هذه المعلومات
۩ اللهـــــــــــــم صلي وسلم على سيدنا محمد وعلى آله وصحبه أجميعن ۩
. سبحان الله وبحمده سبحان الله العظيم

بتاريخ:

الأخ / صقر

من الافضل ان يكون حقل مفتاح الجدول الرئيسى للطلبات ال order
1 رقم السنه 4 ارقام
2 رقم الطلب 5 ارقام مثلا
ثم اضف حقول اخرى على مستوى الطلبيه مثل
نوع الطلب >>> مثال FW
تاريخ الطلب
رقم العميل
..
..

اقترح ان يكون الجدول التفصيلى للطلبات Order_details
مفتاح الجدول
1 رقم السنه
2 رقم الطلب
3 رقم الصنف

ثم اضف حقول اخرى مثل
الكمية
السعر

بالنسبة لاظهار رقم الطلب بشكل مركب .. هكذاFW-20507
هذه بسيطه جدا ويستخدم معها اوامر جاهزه من اوامر الsql
مثل Substr >>> لتجزئة الحقل والحصول على جزء من الاسم بطول معين
وعلامه التجميع || Concatination >>> لدمج الحقول

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

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

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

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

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

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.