![]() |
|
[نقاش] توليد رقم فاتورة - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183) +--- الموضوع : [نقاش] توليد رقم فاتورة (/showthread.php?tid=28742) |
توليد رقم فاتورة - georgos - 24-02-19 مساء الخير للجميع
ما هي الطرق الافضل لتوليد ارقام فاتورة متتالية ؟؟
و كيف ممكن توليد رقم فاتورة على هذا الشكل
201902232343-1
هذا الرقم عبارة عن تاريخ اليوم و الوقت حالياً
و كل فاتورة يتغير فيها التاريخ و الوقت و يزيد 1 على رقم بعد -
RE: توليد رقم فاتورة - حريف برمجة - 24-02-19 كود : 'لجعل التاريخ ميلاديهذا الكود يعطيك رقم الفاتورة مثل ما طلبت ،، بعد عملية الحفظ تعمل دالة تزيد رقم 1 بقدار 1 اذا ما عرفت تعملها ارفق مثال بسيط مع قاعدة البيانات ،، وستجد الحل بإذن الله بالتوفيق للجميع RE: توليد رقم فاتورة - georgos - 24-02-19 هذا المشروع [attachment=20960] RE: توليد رقم فاتورة - حريف برمجة - 24-02-19 اعمل شاشة واحدة فقط وجدول واحد فقط ليتم تعديله .. المشروع مليان شاشات ،، والداتا بيز فيها أكثر من جدول .. أيضاً هل حقل رقم الفاتورة ترقيم تلقائي ؟ RE: توليد رقم فاتورة - elgokr - 24-02-19 مرحباً georgos
انظر لما ساقوله الان وطبق لما يناسبك
لنقول انك تريد ان يكون رقم الفاتورة عبارة عن تاريخ اليوم وياليه رقم متزايد مثل 1 و 2 و 3
فكل ما ستفعله التالى
فى الجدول بقاعدة البيانات ستقوم بانشاء عدد 2 عمود الاول
تحت اسم id والاخر تحت اسم inv_code مثلاً
الان الـ id ترقيم تلقائي والى هنا لا يوجد مشكلة
والثانى inv_code سيكون من نوع رقم
الان عند اتمام تسجيل الفاتورة فعندك id سيتم ادراج رقم تلقائي تسلسلي
وعند عمود inv_code ستقوم باضافة قيمة تاريخ اليوم كما تشري اليه
الى هنا والامر جميل
طيب كيف اظهر طريقة رقم الفاتور
عند عرض بيانات الفاتورة ستقوم بعرض شكل رقم الفاتورة بهذا الشكل كود : inv_code-idبحيث نقول مثلاً ان رقم الفاتورة مثلاً 20190224 وان الرقم التسلسلى مثلاً 104
فيصبح شكل العرض عند الادراج الاثنين معاً كود : 20190224-104الامر الثاني وهو اذا كان رقم 1 هو ثابت غير متغير
فانت هنا ستقوم بعمل نفس الاعمدة ولكن كل ما سيتم استخدامه فقط عمود inv_code
بحيث سيكون الشكل كالتالى كود : inv_code-1بحيث يكون رقم الفاتور عبارة عن رقم الناتج من قاعدة البيانات وتقوم بعمل ادراج -1 يدوياً به عند العرض
الى هنا واصبح الامر بدون ادنى مشكلة
الامر الاخير اذا كنت تريد عمل نفس الامر الاو حيث يكون تاريخ وياليه رقم يتم تلقائي كا 1 و 2 و 3
ولكن يتم اعادة البداء لـ 1 كل يوم او كل شهر او كل سنة كما تشاء
الامر هنا سيكون لدينا عدد 3 اعمدة لتقليل التعقيد وتسهيل الامر اثناء البحث وما شبح
وسيكون كالتالى id - inv_code - inv_num
الاول id من نوع ترقيم تلقائي
الثاني inv_code من نوع رقم
الثالث inv_num من نوع رقم
العمود الاول تلقائي فلا يوجد اى تدخل منك
الثاني سيكون عبارة عن تاريخ اليوم
والثالث سيكون قيمته عبارة عن
التحقق اولاً بكون استعلام يقوم بجلب اخر قيمة مدخلة عن تاريخ اليوم ليكون شكل الاستعلام كالتالى كود : SELECT TOP 1 inv_num FROM test WHERE inv_code >= 20190224 AND inv_code < 20190225 ORDER BY id DESCكود : DT(0)("inv_num")ولنقول ان قيمتها اصبحت مثلاً 30 وانت تريد اضافة فاتورة جدليدة لتكون 31
ليصبح الشكل النهائي هو كود : 20190224-31فكل ما عليك هو جعل قيمة inv_num كالتالى كود : DT(0)("inv_num") +1الان يصبح الشكل النهائي كود : id -> 50 مثلاطيب لو كان القيمة الناتجة من الاستعلام لا يوجد
لاننا عملين استعلام البحث عن كل يوم يبداء من 1
فهنا بتعمل كود تحقق اذا كان الاستعلام لا يوجد به قيمة فتجعل القيمة التى ستسجل فى inv_num هى 1 مباشراً
لتوضح الصورة اكبر انظر للتالى كود : Dim num As Integerبكده سيكون معاك 3 طرق يمكنك التعامل بها
اما ان تقوم بتوليد الرقم الذى يلى علامة - تلقائي من عمود id
أو انك تقوم بتثبيت رقم 1 ووضعه يدوياً
او انك تقوم بتوليد رقم يتم بزيادة +1 عن كل يوم او المدة التى تحددها كما تشاء
لم اقوم بعمل الامر فى المشروع المرفق
واحببت ان اشرح الامر هنا حتى تعم الفائدة منها للجميع حتى يتمكن كل واحد من تطبيق الفكرة
بطريقة كتابته للكود حتى لا يجبر على عملية النسخ واللصق للكود
تحياتى لك
وتمنياتى لك التوفيق
RE: توليد رقم فاتورة - حريف برمجة - 24-02-19 أو ممكن حقل واحد كالتالي : 1-20190224202135 وبعد عملية الحفظ تعمل دالة جلب آخر سجل ثم عمل تقسيم split بدلالة (-) تزيد رقم 1 على الرقم بعد (-) شوف هذا الموضوع نفس طلبك ! ترقيم خاص بتاريخ اليوم + التسلسل |