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

بتاريخ:



السلام عليكم

رمضان كريم للامة الاسلامية جمعاء

لدي قاعدة بيانات للطلبة قمت بتحويلها من اكسس الى اوراكل تحوي اربعة الالاف قيد وتمت عملية التحويل بنجاح ومن بين الاعمدة التي تحوي بيانات هو عمود التسلسل num


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

التسلسل والموشر يكون في حقل الاسم اي في الحقل التالي وهكذا ....


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


بشي من التفصيل الدقيق اكون شاكر لكم يا اخوتي واخواتي

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

بتاريخ:

on the block u can find triggers...
add trigger(pre-insert)

select max(nvl(num,0))+1 into :block_name.num from table_name;



and make num as display item.

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



شكرا rose_4_pretty على الرد الطريقة تعمل ولكن في مشكلة صغيرة وهي انه يبداء من التسلسل 66556 ويزداد 66557 وهكذا علما انه عدد البيانات الحقيقي max هو 5181 وليس 66555


وقد عرفت التسلسل على انه number في الجدول

وشكرا مرة اخرى

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

بتاريخ:

select count(nvl(num,0))+1 into :block_name.num from table_name;

بتاريخ:

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

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


شكرا لك rose_4_pretty على الرد والطريقة نجحت

بتاريخ:

هناك طريقتين لعمل السيريال:
1-الطريقة الاولى:
أن تقوم بمقارنة اكبر رقم وزيادته بواحد

select max(nvl(num,0))+1 into :block_name.num from table_name;



1-الطريقة الثانية:
أن تقوم بمقارنة عدد المدخلات وزيادتها بواحد

select count(nvl(num,0))+1 into :block_name.num from table_name;

بتاريخ:

طيب هل سوف يتم وذع احدى الكوديين السابقين في تريقر when_new_item_instance ام تريقر when_validate_item ام ماذه طبعا على مستوى ال item الي سوف يتم وضع السيريال نمبر به

بتاريخ:

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

لذلك يفضل طريقة ال max ويتم الاعداد باستخدام تريجير pre_insert على مستوى البلوك block
او استخدام طريقة ال sequence على الجدول

مع التحية

بتاريخ:

طيب هل سوف يتم وضع احدى الكوديين السابقين في تريقر when_new_item_instance ام تريقر when_validate_item ام ماذه طبعا على مستوى ال item الي سوف يتم وضع السيريال نمبر به ثم ماذا سوف يحصل لو تم عمل مرتجع على فرض انه سيريال نمر للفاتوره وعلى فرض اننا عملنا سيكونس على الجدول

بتاريخ:

السلام عليكم
اخي الكريم اذا كنت تتكلم عن ارقام مسلسلة لفواتير و مرتجعات فواتير فيكون هناك حقل خاص بنوع الحركة

فمثلا حركة المشتريات و هي حركة اضافة و الكود هو 1 يبدا المسلسل مع شرط كود الحركة

select max(nvl(doc_no,0))+1 into :invoice.doc_no from invoice_master
where doc_type =1;


حيث doc_type =1 يعني حركة اضافة مشتريات

اما اذا كانت الحركة مثلا مرتجعات مشتريات اي صرف فيكون الكود كالاتي

select max(nvl(doc_no,0))+1 into :invoice.doc_no from invoice_master
where doc_type =2;


حيث doc_type =2 يعني حركة صرف اي مرتجعات مشتريات

و بالتالي كل نوع حركة لها مسلسلها الخاص بها و لها شاشاتها الخاصة بها

و في مشروع المخازن هتجد كل هذه الافكار و الاكواد و افكار كثير ان شاء الله
اخوك محمود شديد

بتاريخ:

ان تأثير الفاتورة يكون على المخزون وبالتالي عند عمل مرتجع يتأثر المخزون أيضا

عند عمل الفاتورة ينقص المخزون
اما عند عمل مرتجع سواء لبعض بنود الفاتورة او فاتورة كاملة سيزيد المخزون وهذه مسلمات معروفة
لذلك لايتأثر السيريال في الفاتورة

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

أرجو ان يكون جوابي شافيا

ملاحظة:يتم وضع الكود في pre-insert trigger على مستوى البلوك نفسه

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

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

لذلك يفضل طريقة ال max ويتم الاعداد باستخدام تريجير pre_insert على مستوى البلوك block
او استخدام طريقة ال sequence على الجدول

مع التحية



كلامك صحيح استاذ امجد
ولكن يتم استخدام count في الحالات التي لايتم فيها عمل حذف....بل يتم اضافة فيلد خاص بعمليات الالغاء حيث لايتم حذف شيء فعليا من البيانات بل يتم التعامل معها على اساس انها FLAG اذا تم الحذف تكون قيمتها 1 اما اذا بقيت ولم يتم حذفها فتكون قيمتها صفر.وبالتالي لن يكون هناك تكرار في السيريال.

اما طريقة max فهي الحالة التي تحدثت عنها حيث يتم استرجاع اكبر قيمة وزيادتها حسب سياسة العمل.

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

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

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

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

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

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.