اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

sandanet

الخبراء
  • Posts

    1,366
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    19

مشاركات المكتوبه بواسطه sandanet

  1. منذ ساعه, أبو عبدالله الحلوانى said:

    كلمة بو غير مجودة بالجدول tblSpecialParts ولو أضفتها لرأيت أن الاسم الرابع سيظهر كاملا

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

     

    منذ ساعه, أبو عبدالله الحلوانى said:

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

    نعم كلامك صحيح ونقطة في محلها فعلا خصوصا لو كان لدينا برنامج كبير لكني في الواقع افضل تقليص عدد الجداول ^_^ ولو ان كود الاستاذ جعفر كنز ثمين لايمكن تجاهله لكن بالتأكيد سنحتاجه عاجلا ام آجلاً.

     

    منذ ساعه, أبو عبدالله الحلوانى said:

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

    معناها لو قمنا بالغاء الاستعلام qry_SP فسنلغي دالة sp من الوحدة النمطية ايضاً فهي ليست مستخدمة الا في ذلك الاستعلام بالاضافة الى إلغاء جدول SomeNameTbl فهو متعلق بالاستعلام فقط ..وبالتالي سنتمكن من تقليص عدد الاكواد المستخدمة ^_^

     

    تحياتي

    • Thanks 1
  2. 7 ساعات مضت, أبو عبدالله الحلوانى said:

    جرب هذا المرفق بعد التعديلات السابقة

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

    كما ان لدي بعض التساؤلات التي استوقفتني

    السؤال الاول : ماهو الفرق بين استخدام طريقتكم التي تفضلتم بها و طريقة الاستاذ اباجودي التي تفضل بها في مرفقه ؟ هل يمكن اعتبار ان الفكرتين تؤديان الى نفس النتيجة أم هنالك فرق جوهري بالأمر؟ ارجو التوضيح فهذه نقطة مهمة جدا فكلا المرفقين فيهما حلول رائعة 

     

    السؤال الثاني: لماذا تستخدم دالة MakeMsg التي تستوجب اضافة جدول ووحدة نمطية للبرنامج في حين اننا نبحث عن طريقة لتقليص الاكواد قد المستطاع؟ بالرغم من انها تحتوي على لمسات استاذنا الكبير جعفر لكننا هنا بصدد تبسيط الاكواد قدر المستطاع

     

    السؤال الثالث: ما فائدة الاستعلام "qry_SP" ؟ وهل بالامكان استبداله بكود برمجي؟

     

    ارجو ان يتسع صدرك لاستفساراتي 

     

    تحياتي

    • Thanks 1
  3. في ٢‏/١‏/٢٠٢١ at 13:43, أبو عبدالله الحلوانى said:

    فهذا المرفق بعد التعديل عليه بما يناسبني 

    أخي العزيز أبو عبدالله شكراً لك على المرفق الأخير الأكثر من رائع والشكر لكل من ساهم به ولو بفكرة بسيطة

    اثناء عمل compile للكود يظهر خطأ في الدالة التالية

    x = Split(testSpcailPart(M), " ")

    اعتقد ان الكود يجب ان يكون بهذا الشكل 

    x = Split(testSpcailPart(M, 4), " ")

    كما اني لاحظت ان الاسم الرباعي لو كان مركبا مثل هذا  "جاب الله نور الدين عصام الدين بن مسعود" لا يتم قبوله إلا إذا قمنا بتقليص الاسم يعني استبدال اسمين مركبين باسمين غير مركبين

    فما هو سبب حدوث ذلك؟

    • Thanks 1
  4. 3 دقائق مضت, ابا جودى said:

    والله لك وحشة عود احمد يا هلا والله ومليون هلا

    بس لا تقول سبقوك وانت وصلت

    انت نقلت من الاستاذ جعفر اعترف مع انلا قلت ما حد يغش من حل اخوة كل واحد يحل بنفسه 🤬

    طبعا امزح معكم استاذى الجليل ومعلمى القدير

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

    بالنسبة للحل الذي توصلت إليه فهو للأسف لم يكن نقلاً عن اساتذتي الكبار والذين افتخر بحلولهم السحرية دائماً ويشرفني ان اقتبس منهم لكني بالحقيقة من خلال التجربة والبحث وماقادني للطريقة هو البحث في المواقع الاجنبية كما في الصورة 

    كما انني قمت بتبسيط الدالة أكثر ^_^ انظر الى الكود في ملفي المرفق في التعليق السابق 

    Untitled.png

    • Haha 1
  5. السلام عليكم ورحمة الله وبركاته

     

    تحية طيبة وبعد ...

     

    كل عام وأنتم بخير وبصحة وسلامة إن شاء الله .. اتمنى ان يكون عام 2021 عام خير على أمة محمد أجمعين.

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

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

    Select Case KeyAscii
    Case 48 To 57, 65 To 90, 97 To 122  ' Numbers and english letters
        KeyAscii = 0
    Exit Sub
    End Select

    الارقام من 48 الى 57 هي للأرقام والباقي للحروف الانجليزية

     

    تحياتي 

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

     

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

     

    لكن لدي سؤال بسيط وهو لو تم نسخ محتويات الفلاش بالكامل الى فلاش اخر مع اخذ سيريال الفلاش ميموري الاول ووضعه مكان الفلاش الثاني فسوف يعمل البرنامج أليس كذلك؟

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

     

    تحياتي

     

  7. في ٢٠‏/٨‏/٢٠٢٠ at 09:32, naseralmaky said:

    ايه الكود الي يظهر الجداول المرتبطة

    جرب الكود التالي

    Dim dbs As Database, tdf As TableDef
        
        Set dbs = CurrentDb
        For Each tdf In dbs.TableDefs
        If left(tdf.Name, 4) <> "msys" And tdf.Attributes = 1 Then
                tdf.Attributes = tdf.Attributes - dbHiddenObject
        End If
        If tdf.Attributes = 1073741825 Then tdf.Attributes = 0
        Next tdf
        Set dbs = Nothing
    Application.SetOption "Show Hidden Objects", 1
    Application.SetOption "Show System Objects", 1

     

  8. 10 ساعات مضت, محمد التميمي said:

    لماذا تغيب علينا كثيراً انا احب اطروحاتك وافكارك

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

     

    تحياتي

  9. أخي الكريم شكرا لك على هذا البرنامج الجميل 

    ملاحظاتي عليه قبل تجربته هي كالتالي:

    1- في اول عملية تشغيل للبرنامج وقبل ظهور اي فورم تظهر رسالة بانه باقي 9 أيام على انتهاء الفترة التجريبية 

    بعدها اغلقت البرنامج وفتحته من جديد فظهرت لي نفس الرسالة لكن اصبحت 8 ايام على انتهاء الفترة التجريبية

    وعند اغلاق البرنامج مرة اخرى وفتحه تثبت المدة المتبقية على 8 ايام

     

    2- واجهة البرنامج فيها تنبيه بعدد الايام التي مضت على استخدام البرنامج من مجموع 15 يوم وهي ايضا في اول تشغيل اعطتني 6 ايام وبعدها اعطتني 7 ايام 

     

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

    في ٢٨‏/٧‏/٢٠٢٠ at 15:11, btsh said:

    5- استخدام رقم الهارد ورقم البرسوسر الثابت لتفعيل لبرنامج

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

    انظر للمرفق 

     

    تحياتي

    11.png

    11.png

    key_maker.mdb protection_sandanet.accdb

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

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

     

    لذلك قررنا انه سيكون التحقق عن طريق استخدام اسم المعالج مع رقم الـ UUID فإذا وجد تطابق فهذا يعني ان الجهاز مصرح له وان البرنامج يجب ان يعمل عند المستخدم ولا يطالبه بكود تفعيل جديد.

     

    المرفق التالي هو اخر ماتوصلنا إليه 

     

    ملاحظة: هنالك طريقة لحماية البرنامج اون لاين وهي طريقة فعالة ايضاً لكنها تتطلب اتصال انترنت مستمر عند المستخدم - الطريقة مشروحة هنا 

     

    تحياتي

    key_maker.mdb protection_sandanet.accdb

    • Like 1
  11. منذ ساعه, jjafferr said:

    لكن الرابط لم يكن للبرنامج من موقع الشركة او رابط للتنزيل فقط

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

     

    تحياتي

  12. اساتذتي الكرام تحية طيبة لكم

    انا رأيي الشخصي ان صيغة الـ accde  هي الحق الوحيد الذي يمتلكه المبرمج في حماية اكواده عندما يريد نشر برنامجه على الانترنت .. اما من يقفل الاكواد وينشر قاعدة البيانات بصيغة accdb فلايحق له الاعتراض على من يصل للأكواد.

     

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

     

    تحياتي  

    • Like 2
  13. نعم اخي الكريم يمكنك عمل ذلك بسهولة عن طريق تعريف متغيرات عامة (public) في وحدة نمطية على حسب عدد التقارير والنماذج التي تريد حساب عدد مرات فتحها ومن ثم تضع في حدث عند الفتح لكل نموذج او تقرير المتغير الخاص بها وظيفته تخزين قيمة عددية تزيد كلما يفتح النموذج او التقرير وبامكانك معرفة العدد عن طريق اظهار رسالة بقيمة المتغير هذا

     

    تحياتي 

×
×
  • اضف...

Important Information