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

حل مشكلة برنامج متعدد المستثمرين

بدأه mouhamadamer في 20 مايو 2009 · 9 رد · 1,289 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أخوتي الأكارم

صممت برنامج محاسبة متعدد المستثمرين مع استخدام قاعدة بيانات interbase وواجهتني مشكلة وهي في إدخال سجلين في نفس الجدول من قبل مستثمرين اثنين حيث أن الجدول له رقم تسلسلي id غير مكرر يزداد بشكل أتوماتيكي وقت التنفيذ عند إضافة سجل جديد (يأخذ أكبر قيمة للـ id ويزيدها واحد)، والمشكلة تكمن في أنه عند إضافة سجل جديد من المستثمر الأول يأخذ الـ id رقم 1 وإضافة سجل جديد أيضاً من قبل المستثمر الثاني يأخذ الـ id رقم 2 طبعاً هذا في نفس الوقت (أي المستثمرين يدخلون سجلين على جدول واحد في نفس الوقت) تظهر المشكلة عند حفظ الجدول (عند حفظ الجدول من قبل المستثمر الأول سوف يأخذ الـ id رقم 2 مثلاً والمستثمر الثاني أجرى عملية حفظ أيضاً الـ id سوف يأخذ رقم 2 لأن عملية الزيادة للـ id تكمن في أخذ أكبر قيمة للـ id زيادتها واحد وبالتالي البرنامج سوف يعطي رسالة أن id هو primary key وغير مكرر.

هل من حل ؟

مع جزيل الشكر

#2

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

أعتقد إن شاء الله ستفيدك هذه الوصلة,

/index.ph...=186879&hl=

لاحظ تابع getmaxid في المشاركة رقم 8.

وفقني الله و إياك لما يحب و يرضى.

تم تعديل هذه المشاركة بواسطة Like Delphi في 20 مايو 2009 في 12:48

قال تعالى: ((وَمَا أَصَابََكُمْ مِنْ مُصِيبَةٍ فَبمَا كَسَبَتْ أَيْدِيكُمْ وَ يَعْفُو عَنْ كَثِيرٍ)) :.:.: الشورى: الآية 30.

IN ALLAH WE TRUST

:.:.:.:.:.:.:.:.:.:.:.:.:.:

#3

أخي الكريم

عند عملية الحفظ قم بالتأكد من أن الـ id لم يحجز بعد و في حال لم يحجز تقوم بالحفظ بطريقة أعتيادية وإلا تقوم بإضافة 1 على الـ id وتكمل الحفظ

أرجو أن يفيدك الحل

في حال لم تكن الطريقة واضحة أحاول توضيحها بمثال

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#4

الحل بسيط كما أشار الأخ rober من خلال بوكل صغير تضعه في زر الحفظ بعد حجز id وقبل إتمام عملية الحفظ

تم تعديل هذه المشاركة بواسطة tahasit في 20 مايو 2009 في 15:29

986902102.jpg
#5

أنا أوافق الأخ rober

أو عندما تأخذ الرقم تقوم بقفل الجدول حتى ينهي المستخدم الآخر عمله علما أنني لاأفضل هذه الطريقة لما لها من تأخير وأفضل طريقة الأخ rober

#6

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

شكراً لك أخ Rober وشكراً لجميع الأخوة المشاركين على اهتمامهم للموضوع

لكن أخ Rober ممكن توضح الطريقة بمثال

مع جزيل الشكر

#7

السلام عليكم

ادا كنت يا تشتغل على الانتربيز يمكنك استخدام الجنراتور و ربطه بالداتا ست من نوع اي بي اكسبرس و هو يولد الارقام تلقائيا على السيرفر بدون تدخل برمجي من طرفك و ادا زبطت معاك قوللنا نزيد نوضحلك اكثر

لا اله الا انت سبحانك اني كنت من الظالمين

#8

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

نعم أنا اتشغل على الانتربيز واستخدمت الجنراتور و ربطه بالـ Table ولكنه أعطى رسالة خطأ (مفادها أن هناك تكرار في id) عند إدخال سجلين في نفس الوقت من قبل مستثمرين اثنين

#9

أخي الكريم

جرب الملف المرفق ففيه مثال عن الطريقة التي تحدثت عنها في مشاركتي السابقة

حاول أن تقوم بتغيير القيمة في edit1 إلى قيمة موجودة في الجدول على سبيل المثال ( 4 )

بهذه الحالة أنت تمثل حالة أن السجل قد تم حجزه من قبل مستخدم أخر لأن الرقم ( 4 ) موجود مسبقا و لاحظ ما سيحدث

أرجو أن يكون المرفق هو ما تريده و في حال لم يكن وافيا نحاول محاولة أخرى :blush:

test.rar

تم تعديل هذه المشاركة بواسطة rober في 2 يوليو 2009 في 20:47

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#10

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

شكرأ لك أخ Rober جزيل الشكر

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