الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه mmssk100 في 17 أكتوبر 2009 · 10 رد · 1,467 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

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

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

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

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

ss.rar

#2

.

ss.rar

#3

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

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

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

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

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

#4

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

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

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

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

تم تعديل هذه المشاركة بواسطة helaly في 18 أكتوبر 2009 في 04:34

#5

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

تحياتي

ss.rar

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

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

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

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

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

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

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

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

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

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

تم تعديل هذه المشاركة بواسطة helaly في 26 أكتوبر 2009 في 00:37

#7
helaly كتب:
اذا افترضنا ان أكبر قيمة كانت 50

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

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

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

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

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

تحياتي

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

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

تحياتي

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

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

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

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

تحياتي

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

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

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

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

تحياتي

ss.rar

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#10

اخى عزيز omani

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

mmssk100 كتب:

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

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

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

اكرر

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

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

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

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

مع الشكر

مواضيع مشابهة