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

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : مشكلة في تحديث البيانات على الأجهزة المربوطة على شبكة (/showthread.php?tid=4695)

الصفحات: 1 2


RE: مشكلة في تحديث البيانات على الأجهزة المربوطة على شبكة - MOUMEN78 - 13-04-2016

لا 
تتغير بعد اغلاق البرنامج في الاجهزة العميلة (clients)
وتأخد القيمة المسجلة على اخر  جهاز يتم اغلاق البرنامج
للتوضيح مثلا
الكمية الحقيقية 10
نبيع على الجهاز الأول 3 تبقى 7
والجهاز الثاني 2 تبقى 8
مجموع البيع 5 من المفروض تبقى الكمية 5
لكن الكمية التي تسجل هي الكمية المسجلة في اخر  جهاز يتم فيه إغلاق البرنامج فلو كان الجهاز الأول تبقى الكمية في السيرفر 7 بدلا من 5
مع العلم أن كل الكمية المباعة من الجهازين مسجلة في السيرفر أي 5
أرجوا أن أكون قد أوصلت الفكرة


RE: مشكلة في تحديث البيانات على الأجهزة المربوطة على شبكة - أبو معاذ - 14-04-2016

طيب ، هل ممكن إرفاق الكود الذي يتم فيه تغيير كمية السلعة المباعة؟
وماذا عن ال Transaction ، هل تتعامل معها ؟
ثم وضح أكثر المكونات التي تستعملها ، هل هي  IBX  أم DBExpress ؟


RE: مشكلة في تحديث البيانات على الأجهزة المربوطة على شبكة - محمد عبد العزيز - 14-04-2016

(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.php?tid=7595&pid=37638#pid37638


RE: مشكلة في تحديث البيانات على الأجهزة المربوطة على شبكة - MOUMEN78 - 14-04-2016

[size=small]في برمجة الشبكات القاعدة عامة تقول[/size]

[size=small]لا تتصل الا عند الحاجة[/size]
[size=small]لا تبقى متصلا لوقت طويل (اتصل، اقضي حاجتك ثم اقطع الاتصال)[/size]
[size=small]عند الاتصال اطلب فقط ما تحتاج من بيانات[/size]
هذا هو الحل رغم أني تعبت في تطبيق هذا الحل وتصحيح البرنامج - إلا أنه فعال واعطاني الحل البرنامج شغال 10/10
شكرا لكل من تفاعل معي ولم يبخلنا بالنصائح بارك الله فيكم Tongue Tongue Tongue Tongue Tongue