• 0
mmssk100

تكرار الرقم التلقائي

سؤال

السلام عليكم ورحمة الله وبركاته

إخواني الكرام انا عملت برنامج وقمت بوضعه على الشبكة

وقمت بعمل توليد رقم تلقائي بحيث يقوم بعدد السجلات ومن ثم يسجل رقم جديد

ولكن المشكلة هي كلاآتي احياناً وليس دائماً يتكرر الرقم التسلسلي بحيث انه يقوم موظف بالحفظ ولاخر بالحفظ ويتم تكرار الرقم وغالباً مايتكرر فلست ادري المشكلة في البرنامج ام في الشبكة

إذاً اين المشكلة وماهو الحل

ودمتم بخير البرنامج في المرفقات ارجو التعديل عليه

ss.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

10 إجابة على هذا السؤال .

  • 0

اخي الكريم helaly السلام عليكم ورحمة الله وبركاته

اشكرك على مجهودك وتجاوبك معي

ولكن ليس هذا ماقصدت فقد قمت بوضع ترقيم تلقائي من قاعدة البيانات وهذا ليس مااقصده تماماً

وقد وضحت سلفاً بأن البرنامج يقوم بتوليد رقم جديد بحيث يقوم بحساب السجلات ويضيف رقم جديد

فهذا ما اود توضيحه علماً بأني مشتاق لسماع شرح عن المشكلة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

نفرض أن عدد السجلات 4

الموظف الاول قام بحساب عدد السجلات فوجدها 4 ، وتصادف فى نفس الوقت أن قام الموظف الثانى بحساب عدد السجلات فأكيد سيجدها 4

فى هذه الحالة كلا من الموظفين سيضيف 1 ويصبح الرقم الجديد هو رقم 5 وتحدث المشكلة وحلها استخدام الترقيم التلقائى

الحل الأخر أن تقفل السجل حتى الانتهاء من اضافة البيانات، حول هذه الطريقة -> http://authors.aspalliance.com/aspxtreme/a...s.aspx?pageno=3

تم تعديل بواسطه helaly
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تفضل مثالك بعد التعديل .

تحياتي

ss.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
'البحث عن اكبر ترقيم وليس عن عدد السجلات

' لماذا ابحث عن اكبر قيمة وليس عن عدد السجلات

'لان عدد السجلات تزيد وتنقص حسب عمليات الاضافة والحذف

' ولكن اكبر قيمة لايمكن ان تتكرر

اذا افترضنا ان أكبر قيمة كانت 50

وقام الموظف الاول بالبحث عن اكبر ترقيم فسيحصل على 50 ، وتصادف فى نفس الوقت (وقبل أن يقوم الموظف الاول بحفظ المعامله برقم 51) أن بحث الموظف الثانى عن اكبر ترقيم فسيحصل على 50 أيضاً !!!

سيسجل الموظف الاول معاملته برقم 51 ، وسيسجل الموظف الثانى معاملته برقم 51 أيضاً ... (هنا تظهر المشكلة) !!! ، لأن الموظف الثانى حصل على اكبر قيمة قبل ان ينتهى الموظف الاول من حفظ المعامله (لأن نسخة البرنامج عند الموظفين ليس له علاقه بالاخر).

لابد أن تقوم الداتابيز بتنظيم الامر لأنها الشيئ المشترك بينهم. (أو عمل Lock قبل قراءة ووعمل Unlock بعد الحفظ للجدول)

تزداد احتمالات الاخطاء عند تباطئ الشبكة الذى ينتجه عنه إطالة الفتره الزمنية بين عملية القراءة وعملية الحفظ.

تم تعديل بواسطه helaly
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
اذا افترضنا ان أكبر قيمة كانت 50

وقام الموظف الاول بالبحث عن اكبر ترقيم فسيحصل على 50 ، وتصادف فى نفس الوقت (وقبل أن يقوم الموظف الاول بحفظ المعامله برقم 51) أن بحث الموظف الثانى عن اكبر ترقيم فسيحصل على 50 أيضاً !!!

سيسجل الموظف الاول معاملته برقم 51 ، وسيسجل الموظف الثانى معاملته برقم 51 أيضاً ... (هنا تظهر المشكلة) !!! ، لأن الموظف الثانى حصل على اكبر قيمة قبل ان ينتهى الموظف الاول من حفظ المعامله (لأن نسخة البرنامج عند الموظفين ليس له علاقه بالاخر).

لابد أن تقوم الداتابيز بتنظيم الامر لأنها الشيئ المشترك بينهم. (أو عمل Lock قبل قراءة ووعمل Unlock بعد الحفظ للجدول)

تزداد احتمالات الاخطاء عند تباطئ الشبكة الذى ينتجه عنه إطالة الفتره الزمنية بين عملية القراءة وعملية الحفظ.

من المفترض ان لا اقوم باضهار القيمة إلا في وقت الاضافة عزيزي .. أي أن اثناء اضافة السجل في القاعدة يتم تنفيذ الكود وليس اثناء فتح الفورم. لانه لو اعتبرنا ان لدينا اربع شاشات تعمل في نفس الوقت على اربعة اجهزة مختلفة ستحمل جميعها نفس القيمة لو اننا استدعينا القيمة قبل الاضافة . اما اثناء الاضافة فلن يتم اضافة إلا سجل واحد في كل مرة . أي ان تنفيذ الكود في كل الحالات سيبحث عن القيمة الاكبر أثناء الاضافة وليس اثناء فتح الشاشة .

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
من المفترض ان لا اقوم باضهار القيمة إلا في وقت الاضافة عزيزي .. أي أن اثناء اضافة السجل في القاعدة يتم تنفيذ الكود وليس اثناء فتح الفورم. لانه لو اعتبرنا ان لدينا اربع شاشات تعمل في نفس الوقت على اربعة اجهزة مختلفة ستحمل جميعها نفس القيمة لو اننا استدعينا القيمة قبل الاضافة . اما اثناء الاضافة فلن يتم اضافة إلا سجل واحد في كل مرة . أي ان تنفيذ الكود في كل الحالات سيبحث عن القيمة الاكبر أثناء الاضافة وليس اثناء فتح الشاشة .

تحياتي

اخى العزيز انا لم اذكر أثناء فتح الفورم، ولم اقصد ذلك

سأوضح الامر لك من خلال كودك الذى طرحتة فى المشاركة رقم 5#

تفضل مثالك بعد التعديل .

Private Sub Command1_Click()
Dim k As Integer

'البحث عن اكبر ترقيم وليس عن عدد السجلات
' لماذا ابحث عن اكبر قيمة وليس عن عدد السجلات
'لان عدد السجلات تزيد وتنقص حسب عمليات الاضافة والحذف
' ولكن اكبر قيمة لايمكن ان تتكرر

Data1.RecordSource = "select max(num) as numb from dd " ' نفترض هنا أن القيمة 50
Data1.Refresh

'وضع القيمة الجديدة في التكست
Text1.Text = (Val(Data1.Recordset.Fields("numb").Value) + 1)



' ======================================
'
' تصادف فى هذه اللحظة (وقبل أن يقوم الموظف الاول بحفظ المعامله برقم 51 فى قاعدة البيانات)
' أن بحث الموظف الثانى عن اكبر ترقيم فسيحصل على 50 أيضاً !!!
'
' ======================================



'لتحديث الصفحة
Data1.RecordSource = "select*from dd order by num"
Data1.Refresh
'لعدد السجلات وزيادة رقم
'للحفظ
Data1.Recordset.AddNew
Data1.Recordset.Fields("num").Value = Text1.Text
Data1.Recordset.Update
Data1.Refresh
MsgBox "شكراً لقد تم حفظ هذه المعاملة تحت قيد رقم" & " ( " & Text1.Text & " ) " & " بنجاح", 0 + 64 + 1572864, "تسجيل معاملة جديدة"

End Sub

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
اخى العزيز انا لم اذكر أثناء فتح الفورم، ولم اقصد ذلك

سأوضح الامر لك من خلال كودك الذى طرحتة فى المشاركة رقم 5#

أشكر لك سعة صدرك عزيزي Helaly

اخي الكريم : من خلال المثال السابق لايمكن تطبيق الفكرة فالمثال أعد بناءً على رغبة صاحب الموضوع ولم اراعي فيه هذه النقاط . ولكن انظر المثال المرفق . هذه ولكن ما تتحدث انت عنه هو ما اعنيه بالضبط .

تحياتي

ss.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخى عزيز omani

اساس المشكلة هو ما ذكره السائل

المشكلة هي كلاآتي احياناً وليس دائماً يتكرر الرقم التسلسلي بحيث انه يقوم موظف بالحفظ ولاخر بالحفظ ويتم تكرار الرقم وغالباً مايتكرر فلست ادري المشكلة في البرنامج ام في الشبكة

إذاً اين المشكلة وماهو الحل

مثالك فى مشاركه 9# لا يحل المشكله ولا يختلف كثيراً عن سابقه

اكرر

لابد أن تقوم الداتابيز بتنظيم الامر لأنها الشيئ المشترك بينهم. (أو عمل Lock قبل قراءة ووعمل Unlock بعد الحفظ للجدول)
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخواني الافاضل السلام عليكم

احببت ان اطلع على الامثلة المرفقه ووجدت انها من نوع php

اعتذر ان اسال باي اداة يمكن فتح مثل هذه الانواع

مع الشكر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .