14-04-2016, 08:53 AM
(13-04-2016, 10:11 PM)MOUMEN78 كتب : الكمية الحقيقية 10حتما تستخدم مكون Table تفتحه عند التنفذ وتبقه كذلك
نبيع على الجهاز الأول 3 تبقى 7
والجهاز الثاني 2 تبقى 8
مجموع البيع 5 من المفروض تبقى الكمية 5
لنعد للمشكل:
عند الحذف تاخذ الكمية التي كانت عند فتج الجدول 10 والتي قد تكون تغيرت وهنا الخطأ
تنقص منها 3 وتحفظ 7 بالجدول
في الجهاز الاخر تكون بقيت 10 دون تحديث، عند بيع 2 تنقصها تبقى 8 التي تحفظها بالجدول دون اي تحقق وهنا نفس الخطأ السابق
مشكلة الكثير انه يقوم بانشاء برنامج وربطه بقاعدة بيانات و عندما ينتهي يحاول استخدامه بأكثر من جهاز مربوط بنفس قاعدة البيانات وهنا الخطأ، اي منظومة تعمل على شبكة يفر فيها قبل حتى تصميم قاعدة البيانات. لذلك قلت للسائل عليك بقرأة كتب قواعد البيانات لتفهم على الاقل كل توثيق Firebird مثلا وتفهم معنى مثل Stored Procedures / Triggers / Events / Transactions
الحلول:
- تتحقق من قيمة الكمية قبل الحفظ: مثلا عند بيع 3 تستخدم استعلام sql لتخذ قيمة الكمية، ان كانت كافية استعلام اخر للتعديل وانقاص 3 من نتيجة الاستعلام السابق، ثم التحقق من النتيجةى مرة اخرى.
- تحذف كل مكونات Table التي ببرنامجك وتغيرها بQuery تفتح عند الاستعمال وتغلق بعدها ما مراعات التحقق
- تستخدم ُEvents كما اقترج اخي Unprogramme
- تستدعي Refresh قبل اي تعديل على البيانات
- تستخدم stored procedure تمرر لها الكمية وهي تتكفل بالتحقق وانقاصها
- هناك حلول اخرى...حسب قاعدة البيانات/المشروع (البرنامج المطور)...لا يوجد حل مطلق.
راجع رد سابق لبعض الافكار
http://delphi4arab.net/forum/showthread....8#pid37638
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ


![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)