24-02-19, 08:42 PM
مرحباً 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 مثلا
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 عن كل يوم او المدة التى تحددها كما تشاء
لم اقوم بعمل الامر فى المشروع المرفق
واحببت ان اشرح الامر هنا حتى تعم الفائدة منها للجميع حتى يتمكن كل واحد من تطبيق الفكرة
بطريقة كتابته للكود حتى لا يجبر على عملية النسخ واللصق للكود
تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]
ساهم دائماً فى
لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
▼ شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]
ساهم دائماً فى
لكل من يقوم بالمساهمةفى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
▼ شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية

