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

استفسار : قاعدة بيانات اكسس والاستخدام على الشبكة

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

الاخوة الكرام انا لدي برنامج فيجوال مربوط بقاعدة بيانات بطريقة ادو وضعت البرنامج على مجلد مشترك

لدي عد 5 مستخدم لإدخال البيانات

المشلكة تحدث عند اقيام مستخدمين بالإدخال في نفس الوقت

يحدث رن تايم ارر ويغلق البرنامج

وتظهر رسالة تفيد بانه يجب اغلاق الجدول

حوالت باغلاق الجدول

يظهر الخطا والرسالة تقول

قد ينتج قيم متكرره في المفتاح الاساسي

ماهو الحل وإذا كان هناك مثل يستخدم قاعدت بيانات على المشاركة

ولكم خالص الشكر والتقدير

#2

العمل هو انك تميز كل مستخدم بطريقة ما

مثلا تضع على كل جهاز ملف نصي مثلا في الدرايف C :\ وتكتب بالملف حرف يمثل رمز الكمبيوتر الحالي بحيث يختلف الرمز عن الرموز في الاجهزة الاخرى ولنفترض ان الرمز هو A.وقم بقراءة محتويات الملف عند فتح البرنامج لاول مرة. وعند حفظ الفاتورة لشاشة الادخل قم باضافةهذا الرمز الى رقم الفاتورة الاساسي .

فإذا كان رقم الفاتوةر هو 53699 سيصبح 53699A

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

وكإقتراح :

اقترح تصميم جدول اخر يحتوي على حقلين :

الحقل الأول يمثل رمز الكمبيوتر مثلا A

الحقل الثاني :يمثل رقم الفاتورة الجديد وبالتالي سيصبح عندك لكل جهاز تستلسل رقمي خاص به

وهذه افضل طريقة

لحل المشكلة

تم تعديل هذه المشاركة بواسطة mostafazidani في 16 نوفمبر 2009 في 11:26

*************************************************

**************************************************

مصطفى زيداني

#3

اشكرك اخي على تجاوبك

المشكله بهذه الطريقة يكون عند كل موظف تسلسل خاص

يجب ان يكون التسلسل واحد لان هناك من يقوم بالبحث

بستخدام الرقم بغض النظر عن مدخل البيانات

ضروري جداً ان يكون الرقم متسلسل

مثلا :

الموظف احمد اضاف 661

الموظف علي من جهاز اخر اضاف 662

احمد 663

احمد 664

علي 665

احمد 667

وهكذا

#4

السلام عليكم

أخى سأذكر لك الطريقة التى أعمل بها وهى مجربة على شبكة بها أكثر من 20 مستخدم

لاتستخدم مجلد مشاركة فقط قم بوضع النسخة الكاملة على جهاز سيعمل كسيرفر للاجهزة الأخرى

1- عند كتابة الاكواد قم دائما باستخدام app.path للاشارة لمكان قاعدة البيانات ولا تكتب مسارها بالكامل لكى يعمل البرنامج بشكل سليم

2- عند كل جهاز يوجد قاعدة بيانات مؤقته انا اسميها دائما temp مثلا

3- عندما يبدأ المستخدم فى كتابة بيانات فاتورة مبيعات مثلا لا يكون لها رقم حتى ينتهى من ادخال البيانات التى يرغب فيها والتأكد منها ثم ضغط مفتاح "حفظ" حيث أن هذه البيانات تكون داخل قاعدة البيانات المؤقتة وعند ضغط مفتاح "حفظ" يتم نقل جميع البيانات من قاعدة البيانات المؤقتة على الجهاز الى قاعدة البيانات الموجودة على السيرفر وتظهر رسالة تفيد نجاح عملية الحفظ ورقم الفاتورة التى تم الحفظ بها بناء على تسلسل الجدول الموجود على السيرفر ولا تنسى تفريغ بيانات قاعدة البيانات المؤقتة بعد عملية الحفظ حتى لا ينسى المستخدم ويضغط أكثر من مرة على مفتاح "حفظ" فيتم تسجيل محتويات الفاتورة أكثر من مرة تحت رقم مختلف

4- لا تقم بنسخ ملف التشغيل الى الاجهزة الاخرى فقط قم بعمل مفتاح اختصار لملف التشغيل على سطح مكتب أجهزة المستخدمين

* لهذه الطريقة عدة مزايا :

1- تخفيف الضغط على الشبكة لأدنى حجم ممكن حيث أن الاتصال يتم اثناء نقل البيانات فقط

2- عدم فتح قناة اتصال دائمة بين المستخدم وقاعدة البيانات مما يقلل الحمل من على قاعدة البيانات وأيضا يتلافى الكثير من المشاكل التى تتعرض لها قاعدة البيانات نتيجة إنهاء الاتصال عن طريق المستخدم بطريقة غير شرعية

3- مراجعة البيانات وتعديلها وتنقيحها قبل إرسالها للسيرفر يقلل من عملية التعديل والحذف والاضافة التى تتم على قاعدة البيانات الرئيسية

والله الموفق

تم تعديل هذه المشاركة بواسطة pcghost في 17 نوفمبر 2009 في 18:36

#5

مشكلتك في ان ال Access غير معد للاستخدام من اكثر من شخص في وقت واحد

استخدم SQL Server او MySQL

اذا اصريت ان تستخدم الاكسيس اذا عليك انت تتاكد ان المستخدم لوحده فقط يحاول الكتابه على الجدول (Insert, Update, Delete)

سبحان الله وبحمده *** سبحان الله العظيم

www.quraany.com

www.arabcs.com

#6

المشكلة انك عند فتح الشاشات تقوم بالبحث عن اخر قيمة وتضعها في الفورم ذاته .. اي انه لو ان آخر قيمة في السجلات لديك هي 623 فقام أحمد بفتح شاشته استعداداً لادخال جديد سوف يحصل على الرقم 624 وأيضا لو قام محمد بفتح شاشة الادخال استعدادا للادخال سوف يحصل على نفس الرقم . وهنا سوف تكون الأولوية للشخص الذي يقوم بالادخال أولا .

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

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

تقبل تحياتي

OMANI FOR EVER

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

post-12787-12780191801974.jpg

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

#7

شكراً لكم اخوتي الكرام

شكراً لك اخي العماني

فعلا انا ابحث عن اخر قيمة واضيف عليها

سوف احاول ان ابحث عن اكبر قيمه واضيف عليها

شكراً جزيلا لكم جيمعاً

#8

انا مع الاخ xr في ما تقدم به الان انت تواجه هذه المشكلة و غدا ستقع في مشاكل اكبر عند كبر حجم القاعدة و زيادة البيانات و النصيحة اخي العزيز قم بالانتقال الى sql server في اسرع وقت , العملية ليست معقدة فقط انت تحتاج الى تحويل القاعدة و تنصيب sql server على جهاز واحد ثم تامين الاتصالات من بقية الاجهزة لمسار القاعدة الموجود في السيرفر (الجهاز الذي نصبت عليه sql server) كل ما ستغيره في البرنامج هو كود الاتصال فقط .

اما من ناحية الـ sql server انت بحاجة الى اضافة مستخدمين للتعامل مع القاعدة.

هكذا تصبح لديك الامور اسهل و ايسر و اسرع و اضمن للمستقبل .

#9

بودي ان انتقل إلى sql ولكن واجهتني مشاكل في الإتصال بالقاعدة ومشاكل في البحث

على العموم ان بحثت عن الموضوع كثير ووجدت حل بس لا يعتبر حل نهائي

اقوم بتحديث الجدول قبل عملية الإضافة بحيث احصل عملية الإضافة

لكن لا بد ان تتم العملية ببطء

بحيث اضيف من الجهاز الاول ثم انتظر قليلا واضيف من الجهاز الثاني وهكذا

إذا قمت بالعملية بسرعة تحصل نفس المشكلة وهذه ليست عملية

* كذلك اريد مثال على قاعدة بيانات sql على سيرفر متصل بها مستخدمين أن امكن ... ولكم خالص الشكر

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…