تحليل قاعدة بيانات موظفين ورواتب
#41
جزاك الله خيرا على الرد و المتابعة.
أنا أقصد ، مادمت تقوم بجميع العمليات داخل القاعدة البيانات (الإجراءات المخزنة) ، هل Transaction تكون داخل الإجراء أم بواسطة  دلفي؟
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
[-] كل من 1 user says قال شكرا ل أبو معاذ على المشاركة المفيدة
  • Delphi4Us
الرد
#42
الTransactionتكون للبرنامج الذي استدعى الProcedure
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
[-] كل من 2 users say قال شكرا ل محمد عبد العزيز على المشاركة المفيدة
  • أبو معاذ, Delphi4Us
الرد
#43
سؤال آخر لو سمحت ،
فيما يتعلق بحماية الجداول .
كيف تقوم بمنع المستخدم   من التعديل أو الحذف  لسجل  مشغول من طرف مستخدم آخر.
بمعنى آخر :
[صورة: 896724069.png]
كيف يمكن منع المستخدم Delphi4Us  من الدخول على هذا الملف المشغول و التحديث عليه أو الحذف له ؟
كحل أولي ، أضفت حقلا في الجدول الرئيسي اسمه  used من نوع shortint له قيميتن 0 أو 1 ،
فعندما يدخل المستخدم  أبو معاذ للتعديل على الملف رقم 1 ، أقوم بتغيير قيمة  الحقل used من 0 (القيمة الافتراضية) إلى 1 ،
وعندما يريد المستخدم Delphi4Us   الدخول على الملف رقم 1 ، لا يمكنه فعل شيء سوى المعاينة.
أرجو أن تكون الفكرة واضحة.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
الرد
#44
(02-06-2018, 12:33 AM)mobile كتب : وعليكم السلام ورحمة الله وبركاته

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

وعليكم السلام هل ممكن البرنامج
الرد
#45
بالنسبة الى التعديل على جدول مفتوح لم افكر فيه الان في قاعدة بيانات فايربيرد لان المنظومة التي اجهزها لا تعمل على شبكة .
هناك قواعد بيانات مثل AbsoluteDatabase فيها هذه الخاصية فهي تخبرك ان السجل الذي تحاول فتحه مفتوح للتعديل ولا يمكنك الولوج اليه .
هذا الباب طويل ، هناك حسب ما قرات طرق عديدة
ولكن فكرت مرة وقلت كل مستخدم ينقر زر تعديل ويكون بحالة تعديل يتم تسجيل ذلك السجل بجدول ما ، بحيث اذا اردت انت ان تنقر على زر تعديل يتم قراءة ذلك الجدول اذا وجد اسمه منعك حتى يخرج الشخص الاخر من حالة التعديل بالنقر على الغاء او حفظ .
فكرة عابرة من الرائد فكري .
او ربما يمكن استخدام الـ events في فايربيرد فعندما يحدث تغيير في البيانات يتم تحديث البيانات عند الجميع الذين يفتحون هذا السجل مع رسالة تخبرك ان البيانات قد تغيرت فكرة عابرة ايضا من الرائد فكري .
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد
#46
[quote pid='45797' dateline='1528918700']

[صورة: 14307f91052d23d.jpg]

[/quote]
السلام عليكم ،

من فضلك ما هي المكونات المستعملة للحصول على هذا الجمال في الفورم؟

جزاك الله خيرا.


إقتباس :Delphi4Us يبدوا انني بصدد الحصول على ابن جديد ، ارجوا ان يكون ولدا صالحا ومباركا .


اسأل الله أن ينبته نباتا حسنا ، و يجعله من الصالحين المصلحين.

اللهم آمين.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
الرد
#47
(20-06-2018, 07:08 PM)أبو معاذ كتب : كيف تقوم بمنع المستخدم من التعديل أو الحذف  لسجل  مشغول من طرف مستخدم آخر.
حاول تغيير طريقة التفكير، إنسى مسالة المنع، قاعدة البيانات هي التي تحدد ذلك
حاول مطالعة ما تجد من توثيق عن Firebird وكيف يعمل خاصة ال
Transaction
(20-06-2018, 07:08 PM)أبو معاذ كتب : كحل أولي ، أضفت حقلا في الجدول الرئيسي اسمه  used من نوع shortint له قيميتن 0 أو 1 ،
فعندما يدخل المستخدم  أبو معاذ للتعديل على الملف رقم 1 ، أقوم بتغيير قيمة  الحقل used من 0 (القيمة الافتراضية) إلى 1 ،
الحل غير ناجع، تابع لماذا
1- أبو معاذ اتصل بالقاعدة ونفذ استعلام مثلا select جدول ما، هنا Transaction تبقى Active يعني لم تقم بCommit او Rollback  (طبعا هنا كلام اخر حول المكون المستخدم في الاتصال فبعض منها فرضا يكون autocommit يعني يستدعي Commit بعد كل عملية )
2- Delphi4Us اتصل بالقاعدة ونفذ استعلام مثلا select لنفس الجدول السابق او جدول اخر وله ايضا Transaction
3- أبو معاذ اتصل بالقاعدة ونفذ استعلام وقالم بتغيير قيمة الحقل used من 0 (القيمة الافتراضية) إلى 1 ومن المفروض يقوم بCommit
حتى هنا الحقل used بالنسبة لDelphi4us لا يزال 0
Delphi4Us يستطيع مشاهدة التغيير فقط في حال الTransaction التي قام بها كانت بعد Commit التعديل لTransaction الاخرى.
هل فهمت حتى الان ؟
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
الرد
#48
(21-06-2018, 09:09 AM)B.M.AbdelAziZ كتب :
(20-06-2018, 07:08 PM)أبو معاذ كتب : كيف تقوم بمنع المستخدم من التعديل أو الحذف  لسجل  مشغول من طرف مستخدم آخر.
حاول تغيير طريقة التفكير، إنسى مسالة المنع، قاعدة البيانات هي التي تحدد ذلك
حاول مطالعة ما تجد من توثيق عن Firebird وكيف يعمل خاصة ال
Transaction
(20-06-2018, 07:08 PM)أبو معاذ كتب : كحل أولي ، أضفت حقلا في الجدول الرئيسي اسمه  used من نوع shortint له قيميتن 0 أو 1 ،
فعندما يدخل المستخدم  أبو معاذ للتعديل على الملف رقم 1 ، أقوم بتغيير قيمة  الحقل used من 0 (القيمة الافتراضية) إلى 1 ،
الحل غير ناجع، تابع لماذا
1- أبو معاذ اتصل بالقاعدة ونفذ استعلام مثلا select جدول ما، هنا Transaction تبقى Active يعني لم تقم بCommit او Rollback  (طبعا هنا كلام اخر حول المكون المستخدم في الاتصال فبعض منها فرضا يكون autocommit يعني يستدعي Commit بعد كل عملية )
2- Delphi4Us اتصل بالقاعدة ونفذ استعلام مثلا select لنفس الجدول السابق او جدول اخر وله ايضا Transaction
3- أبو معاذ اتصل بالقاعدة ونفذ استعلام وقالم بتغيير قيمة الحقل used من 0 (القيمة الافتراضية) إلى 1 ومن المفروض يقوم بCommit
حتى هنا الحقل used بالنسبة لDelphi4us لا يزال 0
Delphi4Us يستطيع مشاهدة التغيير فقط في حال الTransaction التي قام بها كانت بعد Commit التعديل لTransaction الاخرى.
هل فهمت حتى الان ؟

جزاك الله خيرا أخي عبد العزيز ،
ربما لم يكن سؤالي واضحا .

[صورة: 168394819.png]
في الصورة أعلاه بها قائمة الملفات (maitre/detail)  إذا ضغطت على رقم الملف تلاحظ محتوى الملف في dbgrid اسفله.
فرضا أن أبو معاذ دخل إلى الملف رقم 1 للتعديل أو الطباعة.
ودخل الأخ  Delphi4Us  إلى نفس الملف لحذفه ،
كيف ستكون العملية.
الحل الذي وجدته هو انشاء جدول  اسمه ملفاتي به رقم الملف  فقط ،
عندما يقوم أبو معاذ بالدخول إلى الملف رقم 1 مثلا ، ادخل  رقم الملف في الجدول  ملفاتي .
إذا أراد Delphi4Us  الدخول إلى الملف ، أقوم باستعلام بسيط على الجدول ملفاتي هل الملف المطلوب مشغول أو لا ؟
إذا كان مشغول ، Delphi4Us  لا يمكنه الدخول على الملف للتعديل أو الحذف ، فقط للاطلاع أو الطباعة.
عندما يخرج أبو معاذ من الملف رقم 1 ، أقوم بحذف قيمته في جدول ملفاتي.
أرجو أن تكون الفكرة واضحة.
هل من اقتراح آخر.؟
جزاكم الله خيرا.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
الرد
#49
السلام عليكم اخ ابو معاذ كل هذه الامور هي من خصائص قاعدة البيانات سابحث ان شاء الله لاني اتذكر اني قرأت مثل هذه الامور

اخ ابو معاذ اعتقد ان طريقة انشاء حقل و تغيير القيمة خاطئة
لكن في المستقبل في حالة اردت استخدام Flags او كما فعلت انت FireBird يوفر RDB$SET_CONTEXT و
RDB$GET_CONTEXT
تقوم بوضع متغير و تغيره بالـRDB$SET_CONTEXT ثم تقرأه بالـ RDB$GET_CONTEXT

كمثال من برنامجي
كود :
  rdb$set_context('USER_TRANSACTION', 'VENTE_FLAG1', 1);

VENTE_FLAG1 اسم المتغير 1 هي القيمة
للقراءة

كود :
AS declare variable i d_integer; begin  select rdb$get_context('USER_TRANSACTION', 'VENTE_FLAG1') from rdb$database into :i;  if (i = 1) then Exit;
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
[-] كل من 1 user says قال شكرا ل S.FATEH على المشاركة المفيدة
  • أبو معاذ
الرد
#50
بالنسبة الى السكين أخ ابو معاذ سبق وقلت ما هو في موضوع اخر .
المكونات هي BusinessSkinForm طبعا مع تدخلات أخرى فهي معها برنامج لتحرير السكين والذي هو عبارة عن مجموعة صور ، لن تجد سكين جاهز يلبي او يعطيك المنظور او الشكل الذي تريده لا بد وان فيه شئ لن ترضى عنه وهنا يمكن التدخل وتغيير هذا 
وهناك ادوات هي من برمجتي او من تصميمي وسبق ان طرحتها في موضوع سابق مثل Tab-page الذي يظهر في الصورة الى الركن العلوي ناحية اليسار حيث العلاوات والدرجات والمصرف 
ولا اسرار فيه ابدا مجموعة Panel مع بعض الصور والازرار والتبديل بينها 
عندما تراه تعجب به او بهذه المكونات وعندما ترى الكود المصدري ستجدها عبارة عن صور يتم التبديل بينها وربما ستضحك من طريقة تصميمها
اذكر عندما ظهر ويندوز المرئي اول مرة قلت لشخص ان كل ما تراه عبارة عن صور .
الازرار والنوافذ والقوائم كلها صور .
حدق مندهشا ومبديا اعتراضه وقال : ماذا تقول كيف تكون صور فقط ...؟
لم يستطيع ان يتخيل الامر .
فكل السكين والادوات ماهي الا صور وازرار و Panel فقط وهذه الاخيرة ما هي الا صور اختر الصورة الصحيحة 
والخط ايضا من تعديلي الخاص .
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم