مرحباً georgos
انظر لما ساقوله الان وطبق لما يناسبك
لنقول انك تريد ان يكون رقم الفاتورة عبارة عن تاريخ اليوم وياليه رقم متزايد مثل 1 و 2 و 3
فكل ما ستفعله التالى
فى الجدول بقاعدة البيانات ستقوم بانشاء عدد 2 عمود الاول
تحت اسم id والاخر تحت اسم inv_code مثلاً
الان الـ id ترقيم تلقائي والى هنا لا يوجد مشكلة
والثانى inv_code سيكون من نوع رقم
الان عند اتمام تسجيل الفاتورة فعندك id سيتم ادراج رقم تلقائي تسلسلي
وعند عمود inv_code ستقوم باضافة قيمة تاريخ اليوم كما تشري اليه
الى هنا والامر جميل
طيب كيف اظهر طريقة رقم الفاتور
عند عرض بيانات الفاتورة ستقوم بعرض شكل رقم الفاتورة بهذا الشكل
بحيث نقول مثلاً ان رقم الفاتورة مثلاً 20190224 وان الرقم التسلسلى مثلاً 104
فيصبح شكل العرض عند الادراج الاثنين معاً
الامر الثاني وهو اذا كان رقم 1 هو ثابت غير متغير
فانت هنا ستقوم بعمل نفس الاعمدة ولكن كل ما سيتم استخدامه فقط عمود inv_code
بحيث سيكون الشكل كالتالى
بحيث يكون رقم الفاتور عبارة عن رقم الناتج من قاعدة البيانات وتقوم بعمل ادراج -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
بعد طريقة الاستعلام كالتالي سيكون لديماً القيمة على هذا الشكل
ولنقول ان قيمتها اصبحت مثلاً 30 وانت تريد اضافة فاتورة جدليدة لتكون 31
ليصبح الشكل النهائي هو
فكل ما عليك هو جعل قيمة
inv_num كالتالى
كود :
DT(0)("inv_num") +1
الان يصبح الشكل النهائي
كود :
id -> 50 مثلا
inv_code -> 20190224
inv_num -> 31
طيب لو كان القيمة الناتجة من الاستعلام لا يوجد
لاننا عملين استعلام البحث عن كل يوم يبداء من 1
فهنا بتعمل كود تحقق اذا كان الاستعلام لا يوجد به قيمة فتجعل القيمة التى ستسجل فى inv_num هى 1 مباشراً
لتوضح الصورة اكبر انظر للتالى
كود :
Dim num As Integer
If dd.Rows.Count <> 0 Then
num = DT(0)("inv_num") + 1
Else
num = 1
End If
بكده سيكون معاك 3 طرق يمكنك التعامل بها
اما ان تقوم بتوليد الرقم الذى يلى علامة - تلقائي من عمود id
أو انك تقوم بتثبيت رقم 1 ووضعه يدوياً
او انك تقوم بتوليد رقم يتم بزيادة +1 عن كل يوم او المدة التى تحددها كما تشاء
لم اقوم بعمل الامر فى المشروع المرفق
واحببت ان اشرح الامر هنا حتى تعم الفائدة منها للجميع حتى يتمكن كل واحد من تطبيق الفكرة
بطريقة كتابته للكود حتى لا يجبر على عملية النسخ واللصق للكود
تحياتى لك
وتمنياتى لك التوفيق