مرحبا شباب
عندي عمود في قاعده البيانات nvarchar يحتوي على رقم الفاتوره ويكون كالاتي M-1 , M-2 .....
و استخدمت خاصيه select MAX(bill_num) لاحصل على اخر رقم فاتوره و ازيد عليه 1
لكن لان الحقل للعمود nvarchar يقراء فقط لحد M-9 ولا اعرف ما السبب.
السؤال كيف احصل على اعلى قيمة لرقم الفاتوره من عمود nvarchar ؟؟
وشكرا
استخدام MAX على عمود نصي هو مثل ORDER BY ولكن سيأخذ آخر ترتيب حرفي
لهذا عدم نجاح طريقتك سببه أن العمود نصي، وعليه سيتم ترتيبه على أساس أنها أحرف وليست أرقام
فطبيعي تجد M-9 أكبر M-10 في الترتيب الحرفي لأن ثالث حرف وهو 9 أكبر من 1
إذا كان الحرف M ثابت فاجعل العمود رقمي ثم أضف الحرف بعد الاستعلام عن طريق الكود
اخي Amir alzubidy شكرا لك على الكود المختصر
اخي طالب برمجة انا استخدم الحرف الاول حسب طبيعه الفاتوره لذلك سيختلف الحرف
مشكورين .
حسب طبيعة الفاتورة أي تقصد نوع الفاتورة
ضع عمود لنوع الفاتورة نصي وعمود لرقم الفاتورة رقمي ولمعرفة آخر رقم فاتورة لنوع معين تستعلم بالطريقة التالية
PHP كود :
SELECT MAX([inv_no]) FROM [Invoice] WHERE [inv_type] = 'M'
وإذا كان التسلسل الرقمي لا يفصل بنوع الفاتورة تستعلم بالطريقة التالية
PHP كود :
SELECT MAX([inv_no]) FROM [Invoice]
وبما أن التسلسل الرقمي لا يفصل بنوع الفاتورة والأفضل تجعل الترقيم تلقائي
فحينها لن تحتاج لهذا الاستعلام من الأساس لأنك ستعرف الرقم بعد إضافة الفاتورة
يفضل وضع نوع الفاتورة رقمي ووضع جدول لأنواع الفواتير يتم ربطه به
(09-12-17, 08:41 PM)طالب برمجة كتب : [ -> ]حسب طبيعة الفاتورة أي تقصد نوع الفاتورة
ضع عمود لنوع الفاتورة نصي وعمود لرقم الفاتورة رقمي ولمعرفة آخر رقم فاتورة لنوع معين تستعلم بالطريقة التالية
PHP كود :
SELECT MAX([inv_no]) FROM [Invoice] WHERE [inv_type] = 'M'
وإذا كان التسلسل الرقمي لا يفصل بنوع الفاتورة تستعلم بالطريقة التالية
PHP كود :
SELECT MAX([inv_no]) FROM [Invoice]
وبما أن التسلسل الرقمي لا يفصل بنوع الفاتورة والأفضل تجعل الترقيم تلقائي
فحينها لن تحتاج لهذا الاستعلام من الأساس لأنك ستعرف الرقم بعد إضافة الفاتورة
يفضل وضع نوع الفاتورة رقمي ووضع جدول لأنواع الفواتير يتم ربطه به
كلام سليم صديقي وشكرا على المساعدة