المشاركات : 25
المواضيع 11
:
: 0
الإنتساب : Nov 2011
لا
تتغير بعد اغلاق البرنامج في الاجهزة العميلة (clients)
وتأخد القيمة المسجلة على اخر جهاز يتم اغلاق البرنامج
للتوضيح مثلا
الكمية الحقيقية 10
نبيع على الجهاز الأول 3 تبقى 7
والجهاز الثاني 2 تبقى 8
مجموع البيع 5 من المفروض تبقى الكمية 5
لكن الكمية التي تسجل هي الكمية المسجلة في اخر جهاز يتم فيه إغلاق البرنامج فلو كان الجهاز الأول تبقى الكمية في السيرفر 7 بدلا من 5
مع العلم أن كل الكمية المباعة من الجهازين مسجلة في السيرفر أي 5
أرجوا أن أكون قد أوصلت الفكرة
المشاركات : 1,252
المواضيع 170
:
: 1,500
الإنتساب : Jul 2009
طيب ، هل ممكن إرفاق الكود الذي يتم فيه تغيير كمية السلعة المباعة؟
وماذا عن ال Transaction ، هل تتعامل معها ؟
ثم وضح أكثر المكونات التي تستعملها ، هل هي IBX أم DBExpress ؟
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
(13-04-2016, 10:11 PM)MOUMEN78 كتب : الكمية الحقيقية 10
نبيع على الجهاز الأول 3 تبقى 7
والجهاز الثاني 2 تبقى 8
مجموع البيع 5 من المفروض تبقى الكمية 5
حتما تستخدم مكون Table تفتحه عند التنفذ وتبقه كذلك
لنعد للمشكل:
عند الحذف تاخذ الكمية التي كانت عند فتج الجدول 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
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
المشاركات : 25
المواضيع 11
:
: 0
الإنتساب : Nov 2011
14-04-2016, 07:58 PM