السلام عليكم ورحمة الله وبركاته
الأخوة أعضاء هذا المنتدى الجميل
سوف أعرض عليكم مشكلتي مع السيرفر وأرجو من كل من لديه معلومه بأن لا يبخل بها علينا
المشكلة هي
قمت بعمل برنامج مستشفى مصغر يقوم البرنامج بعمل فواتير المراجعين على الاستقبال ويوجد لديا فواتير أجله خاصة بشركات التأمين وفواتير كاش
ويعمل على البرنامج أكثر من 10 مستخدمين في وقت واحد على الاستقبال
بالنسبة لقاعدة البيانات وهي اس كيو ال بالطبع فقد قمت بعمل جدول اسمه INV_NO وهذا الجدول به حقل واحد فقط وهو خاص فقط لعمل الترقيم بمعنى أن كل عملية أو كل فاتورة يقوم البرنامج بمقارنة أخر رقم ويضيف عليه واحد ويأخذ رقم فاتورة جديد ويضيف عليه حرفين CH إذا كانت الفاتورة كاش وحرفين CR إذا كانت الفاتورة أجل .
ملحوظة شكل الفواتير عندي على هذا النحو CH-0000 - CR-0000 بمعنى الحرفين يرمزو لنوع الفاتورة أن كانت كاش أو أجل
وسوف أضع الكود المستخدم في ذلك وهو كالتالي
Private Sub GenFatora() strSql = "SELECT Max([INV_NO].INV_NO_CR) AS MaxOfOrderID " & _ "FROM [INV_NO];" txtDocNo.Text = "CR-" & (Val(GET_MAX_ID(strSql, "MaxOfOrderID")) + 1) ' If RsInv.State = adStateOpen Then RsInv.Close: Set RsInv = Nothing RsInv.Open "UPDATE [INV_NO] SET [INV_NO_CR] ='" & txtDocNo & "'", CN, adOpenStatic, adLockPessimistic End Sub
والمشكلة هي أن في بعض الأحيان يقوم السيرفر بإعطاء رقم فاتورة واحد لأكتر من مستخدم
بمعنى أنه يكون عندي رقمين متشابهين
بمعنى أنه ممكن أن يعطي رقم 1 لأكثر من مستخدم في آن واحد
فكل ما أريده هو ما هي المشكلة هل هي
-بطء من السيرفر او الأجهزة الطرفية في سرعة تنفيذ العملية
-أو هل هو خطأ في الكود
-أو هو خطأ في كود الاتصال بقاعدة البيانات
- هل هناك خاصية معينة في اس كيو ال لتنظيم هذه العملية وعدم تكرارها
والسؤال الأخر هل هذه المشكلة ممكن أن تحصل في حال أذا ضغط عدد 2 مستخدمين على كوماند الحفظ في آن واحد وبالطبع ممكن أن تحصل هذه العملية لكثرة المرضى وازدحام الاستقبال .
وأنا أعرف أن اس كيو أل يقوم بترتيب العمليات الوارده إليه والاستجابه لها FIFO
أحد الأخوه ممكن أن يقول لي لماذا لا تعمل ترقيم تلقائي داخل جدول الفواتير
ولكن المشكله ان عندي حروف في الفاتورة للتمييز بينهم
وأخيرا أرجو من كل من لديه فكره بأن لا يبخل بها
وشكرا مقدما