بتاريخ: 19 سبتمبر 200817 سنة comment_139222 السلام عليكم رمضان كريم للامة الاسلامية جمعاءلدي قاعدة بيانات للطلبة قمت بتحويلها من اكسس الى اوراكل تحوي اربعة الالاف قيد وتمت عملية التحويل بنجاح ومن بين الاعمدة التي تحوي بيانات هو عمود التسلسل num اريد من خلال الفورم عندما اكون زر للاضافة يتم اضافة تسلسل جديد في حقل التسلسل ابتداءا من اعلى قيمة لمجوع الطلبة اي اذا كان عدد الطلبة 4334 واردت اضافة قيد جديد فيتم كتابة رقم 4335 في حقل التسلسل والموشر يكون في حقل الاسم اي في الحقل التالي وهكذا ....يار يت المساعدة الموضوع اتعبني من فترة ولا اجد حل له ..... لاني قراءت الكثير من المواضيع في مجال التسلسل التقائي وجربتها كلها ومفيش نتيجة بشي من التفصيل الدقيق اكون شاكر لكم يا اخوتي واخواتي تم تعديل 19 سبتمبر 200817 سنة بواسطة alsaedi تقديم بلاغ
بتاريخ: 19 سبتمبر 200817 سنة comment_139224 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. تقديم بلاغ
بتاريخ: 19 سبتمبر 200817 سنة كاتب الموضوع comment_139230 شكرا rose_4_pretty على الرد الطريقة تعمل ولكن في مشكلة صغيرة وهي انه يبداء من التسلسل 66556 ويزداد 66557 وهكذا علما انه عدد البيانات الحقيقي max هو 5181 وليس 66555وقد عرفت التسلسل على انه number في الجدول وشكرا مرة اخرى تم تعديل 19 سبتمبر 200817 سنة بواسطة alsaedi تقديم بلاغ
بتاريخ: 19 سبتمبر 200817 سنة comment_139239 select count(nvl(num,0))+1 into :block_name.num from table_name; تقديم بلاغ
بتاريخ: 19 سبتمبر 200817 سنة comment_139241 اخي روز فور بيرتي في ردك الاخير سوف يقوم بعد السجلات ويضيف عليها واحد ولكنهكذا لن يضيف واحد الى قيمه اخر سجل على فرض انه لم يبدأ الترقيم بواحد او صفر مثلا ارجو التوضيح وشكرا تقديم بلاغ
بتاريخ: 19 سبتمبر 200817 سنة كاتب الموضوع comment_139242 شكرا لك rose_4_pretty على الرد والطريقة نجحت تقديم بلاغ
بتاريخ: 19 سبتمبر 200817 سنة comment_139243 هناك طريقتين لعمل السيريال: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; تقديم بلاغ
بتاريخ: 19 سبتمبر 200817 سنة comment_139251 طيب هل سوف يتم وذع احدى الكوديين السابقين في تريقر when_new_item_instance ام تريقر when_validate_item ام ماذه طبعا على مستوى ال item الي سوف يتم وضع السيريال نمبر به تقديم بلاغ
بتاريخ: 19 سبتمبر 200817 سنة comment_139261 شكرا لك على ايضاح اسلوب الحل اعتقد ان طريقة انشاء المسلسل التلقائى من خلال استخدام ال count لن تكون دقيقه فى اعداد مفتاح الجدول لسبب انه اذا تم حذف سجل أو أكثر من الجدول ثم تم تنفيذ الcount سيتم انشاء رقم متكرر وموجود من قبل لذلك يفضل طريقة ال max ويتم الاعداد باستخدام تريجير pre_insert على مستوى البلوك block او استخدام طريقة ال sequence على الجدول مع التحية تقديم بلاغ
بتاريخ: 19 سبتمبر 200817 سنة comment_139263 طيب هل سوف يتم وضع احدى الكوديين السابقين في تريقر when_new_item_instance ام تريقر when_validate_item ام ماذه طبعا على مستوى ال item الي سوف يتم وضع السيريال نمبر به ثم ماذا سوف يحصل لو تم عمل مرتجع على فرض انه سيريال نمر للفاتوره وعلى فرض اننا عملنا سيكونس على الجدول تقديم بلاغ
بتاريخ: 19 سبتمبر 200817 سنة comment_139265 السلام عليكماخي الكريم اذا كنت تتكلم عن ارقام مسلسلة لفواتير و مرتجعات فواتير فيكون هناك حقل خاص بنوع الحركةفمثلا حركة المشتريات و هي حركة اضافة و الكود هو 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 يعني حركة صرف اي مرتجعات مشترياتو بالتالي كل نوع حركة لها مسلسلها الخاص بها و لها شاشاتها الخاصة بهاو في مشروع المخازن هتجد كل هذه الافكار و الاكواد و افكار كثير ان شاء اللهاخوك محمود شديد تقديم بلاغ
بتاريخ: 19 سبتمبر 200817 سنة comment_139271 ان تأثير الفاتورة يكون على المخزون وبالتالي عند عمل مرتجع يتأثر المخزون أيضاعند عمل الفاتورة ينقص المخزوناما عند عمل مرتجع سواء لبعض بنود الفاتورة او فاتورة كاملة سيزيد المخزون وهذه مسلمات معروفةلذلك لايتأثر السيريال في الفاتورةوبالتالي تكون المرتجعات والفواتير منفصلة عدا انك في جدول المرتجعات يفضل تحديد رقم الفاتورة التي يكون منها المرتجع لتسهيل المرجعيات.أرجو ان يكون جوابي شافيا ملاحظة:يتم وضع الكود في pre-insert trigger على مستوى البلوك نفسه تم تعديل 19 سبتمبر 200817 سنة بواسطة rose_4_pretty تقديم بلاغ
بتاريخ: 19 سبتمبر 200817 سنة comment_139273 شكرا لك على ايضاح اسلوب الحل اعتقد ان طريقة انشاء المسلسل التلقائى من خلال استخدام ال count لن تكون دقيقه فى اعداد مفتاح الجدوللسبب انه اذا تم حذف سجل أو أكثر من الجدول ثم تم تنفيذ الcount سيتم انشاء رقم متكرر وموجود من قبل لذلك يفضل طريقة ال max ويتم الاعداد باستخدام تريجير pre_insert على مستوى البلوك blockاو استخدام طريقة ال sequence على الجدول مع التحية كلامك صحيح استاذ امجدولكن يتم استخدام count في الحالات التي لايتم فيها عمل حذف....بل يتم اضافة فيلد خاص بعمليات الالغاء حيث لايتم حذف شيء فعليا من البيانات بل يتم التعامل معها على اساس انها FLAG اذا تم الحذف تكون قيمتها 1 اما اذا بقيت ولم يتم حذفها فتكون قيمتها صفر.وبالتالي لن يكون هناك تكرار في السيريال.اما طريقة max فهي الحالة التي تحدثت عنها حيث يتم استرجاع اكبر قيمة وزيادتها حسب سياسة العمل. تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.