اذهب الي المحتوي
أوفيسنا

ابو جودي

أوفيسنا
  • Posts

    6997
  • تاريخ الانضمام

  • Days Won

    202

كل منشورات العضو ابو جودي

  1. من عيونى يا باش مهندس شرح الاكواد بالوحدة النمطية تفصيلا اولا اسم الجدول ولانه سوف يتم استخدامه كثيرا ولاننى احببت تصعيب الامر قليلا استخدمت الـ Unicode Public Function tblUUID() tblUUID = Chrw("85") & Chrw("115") & Chrw("121") & Chrw("115") & Chrw("83") & Chrw("101") & Chrw("99") & Chrw("117") & Chrw("114") & Chrw("101") & Chrw("100") End Function فلو قمنا بقرائته فى نافذة immediate من خلال ?tblUUID() لتنتج لنا اسم الجدول UsysSecured كما فى الصورة الاتية 2- التأكد من وجود الجدول فى قاعدة البيانات من عدمه Public Function ifTableExists(tblName As String) As Boolean If DCount("[Name]", "MSysObjects", "[Name] = '" & tblName & "'") = 1 Then ifTableExists = True End Function 3- السطر الاول انشاء الجدول من خلال استعلام السطر الثانى تشغيل الـ Function الاتى ChckUUID ,وسيتم شرحه لاحقا Public Function CrtTblUUID() DoCmd.RunSQL "CREATE TABLE " & tblUUID & "([ID] counter," & "[UUIDPC] text," & "[ApprovedNo] text," & "CONSTRAINT [Index1] PRIMARY KEY ([ID]));" ChckUUID End Function 4- التأكد من وجود قيم فى الجدول Public Function CountRec() As Boolean If DCount("*", tblUUID) = 1 Then CountRec = True End Function 5-التأكد من صلاحية مقتاح التسجيل الذى ارسلته لكم عند التجربة من خلال استخدام عدد 2 Function - ToGetAprv - GetUUID() وسيأتى شرحهم تباعا Public Function ChkApprovedNo() As Boolean If DLookup("ApprovedNo", tblUUID) = ToGetAprv(GetUUID()) Then ChkApprovedNo = True End Function ملاحظة عند الشرح الان وحدتنى قمت بعمل function باسم اخر لنفس الوظيفة وسوف اقوم بحذفه اسم ال function هو Public Function validat() As Boolean اعتذر على ذلك الخطأ 6- هذا ال Function للخثول على معرف فريد للجهاز يدعى UUID وببساطه هو هو اختصار للمعرف الفريد العالمي ، وهو معرف فريد يتم إنشاؤه آليًا ضمن نطاق معين يتم إنشاؤها بواسطة خوارزمية معينة تحدد المواصفات والعناصر بما في ذلك عنوان MAC لبطاقة الشبكة والطابع الزمني ومساحة الاسم (Namespace) والرقم العشوائي أو العشوائي الزائف والتوقيت والعناصر الأخرى وخوارزمية إنشاء UUID من هذه العناصر تعني الخصائص المعقدة لـ UUID أنه لا يمكن إنشاؤها إلا عن طريق الكمبيوتر مع ضمان تفردها Public Function GetUUID() Dim strComputer As String Dim objWMIService, colItems, objItem strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystemProduct", , 48) For Each objItem In colItems GetUUID = objItem.UUID Next End Function 7- اغلاق جميع النماذج المفتوحة ما عدا نموذج FrmNotReg ولعدم تسهيل الامر على العابثين تم استخدام الـ unicode فى كتابة اسم النموذج Public Function DoCloseForms() Dim F As Access.Form Dim i As Long For i = Forms.Count - 1 To 0 Step -1 Set F = Forms(i) If F.Name <> _ Chrw("70") & Chrw("114") & Chrw("109") & Chrw("78") & Chrw("111") & Chrw("116") & Chrw("82") & Chrw("101") & Chrw("103") _ Then DoCmd.Close acForm, F.Name End If Next i End Function فى النقطة رقم 5 فى الشرح قلت سوف يأتى لاحقا شرح الـ 2 function الاتى ذكر اسمائهم - ToGetAprv - GetUUID() GetUUID -- تم شرحة فى النقطة رقم 6 الـ ToGetAprv هو function يتم تمرير قيمة GetUUID() الجهاز الحالى اليه ليقوم بتحويله الى unicode يعنى من ظهر لهم هذا الرقم الخاص بالنسخة فى نموذج التسجيل 46364331-3536-4638-3344-4232FFFFFFFF طبعا كما سبق هذا هو معرف الـ UUID وبعد ان يتم تمريره الى الـ function ToGetAprv ليتم تحويله الى unicode المفروض انه يظهر على الشطل التالى ولكن قمت ببعض التعديلات على الكود الذى يقوم بالتجويل الى الـ unicode بحيث يتم الابقاء على الارقام فقط من دون Chw("") & ولذلك كانت النتيجة كالاتى 525451545251514945515351544552545156455151525245525051507070707070707070 ولذلك فان ال Public Function ChkApprovedNo() As Boolean If DLookup("ApprovedNo", tblUUID) = ToGetAprv(GetUUID()) Then ChkApprovedNo = True End Function يقوم بالوصول الى الرقم ذلك وان كان يساوى الرقم الذى يتم عمل لصق له فى نموذج التسجيل يتم فتح النموذج الرئيسي 8- الكود الاخير لاخر روتين فى الموديول يقوم بعمل كل ماسبق يتأكد من وجود الجدول لو مش موجود ينشئ الجدول ولو الجدول موجود يتأكد من عدد السجلات لو 0 سجل يتم انشاء سجل ويضع به رقم UUID فى الحقل الخاص به ولو السجلات تساوى 1 يقوم بالتأكد من قيمة رقم UUID ان كان المكتوب فى الجدول = الخاص بهذا الجاز يكمل باقى الخطوات والا يوقم بعمل تحديث له للرقم فى الحقل داخل الجدول بما يساوى رقم رقم UUID للجهاز وبعد ذلك يتم تحويل الـ رقم UUID الى unicode مع االبقاء على الرقام فقط ويتأكد من تلك القيمة فى الحقل الخاص بها للتأكد فان كانت يتم فتح النموذج الرئيسي والا يعود الى نموذج التسجيل ولذلك هذا هو المستخدم فى الحدث عند الفتح ويمكن وضعه بنموذج البدء بسهولة من خلال اسمه ChckUUID , او Call ChckUUID بس خلاص Public Function ChckUUID() If ifTableExists(tblUUID) Then Else: CrtTblUUID If DLookup("UUIDPC", tblUUID) <> GetUUID Then DoCmd.SetWarnings False: DoCmd.RunSQL "UPDATE UsysSecured SET UsysSecured.UUIDPC = GetUUID();": DoCmd.SetWarnings True DoEvents If CountRec() Then If DLookup("UUIDPC", tblUUID) = GetUUID Then If ChkApprovedNo Then _ DoCmd.Close acForm, _ Chrw("70") & Chrw("114") & Chrw("109") & Chrw("78") & Chrw("111") & Chrw("116") & Chrw("82") & Chrw("101") & Chrw("103") _ : DoCmd.OpenForm Chrw("70") & Chrw("114") & Chrw("109") & Chrw("77") & Chrw("97") & Chrw("105") & Chrw("110"), , , , , acDialog _ Else: DoCloseForms: DoCmd.OpenForm Chrw( _ "70") & Chrw("114") & Chrw("109") & Chrw("78") & Chrw("111") & Chrw("116") & Chrw("82") & Chrw("101") & Chrw("103"), , , , , acDialog Exit Function End If Else DoCmd.SetWarnings False: DoCmd.RunSQL "INSERT INTO UsysSecured ( UUIDPC ) SELECT GetUUID() AS UUID;": DoCmd.SetWarnings True End If End Function بس ممكن بدل الذهاب الى نموذج التسجيل اغلاق القاعدة نهائيا لمن يريد وطبعا للوصول للحماية القصوى وضع كلمة مرور على محرر الاكواد وكلمة سر لتشفير قاعدة البيانات عند الفتح واغلاق الشيفت واخفاء الاطار وعمل قاعدة ريموت لتمرر كلمة المرور الى القاعدة الحالية عند فتحها وطبعا تلك القاعدة سوف يتم تحويلها الى accde وهذا ما سوف اطرحه لاحقا بس الان انا متعب ملاحظة تم تعديل المرفق الرئيسي بالتعديل الأخير الذى تم تدارك الاخطاء به وسوف يتم حذف كل المرفقات بالموضوع تخفيفا على سيرفر المنتدى اجمل الامانى بكده ينتهى موضوع العبث ويتم تأمين القاعدة بأقصى درجات الأمان لمن يريد
  2. بعد جزاه الله خيرا طبعا استاذى الحبيب @الفلاحجى ولكن التعديل الاتى ان شاء الله تم فيه تدارك ما سهوت عنه وان شاء الله يعمل الان بنجاح عند الجميع.... بعد تأكيد تجربتكم ان شاء الله اقوم بتعديل المرفق الرئيسي وبالنسبة لكود تفعيل القاعدة لجهاز حضرتك يا باش مهندس اتفضل ولو اتنقلت لجهاز تانى لا القاعدة تفتح عادى ولا الكود ده يفعلها واتمنى تجربة القاعدة المرفقة الان اولا 526752675253525245484852554552684948455648535445675167485270535453485149 بالنسبة لكبر او صغر مفتاح التسجيل هل فارق معاك فى شئ ؟! تم تعديل المرفق الرئيسي ... ابوجودى
  3. وذلك مفتاح تفعيل خاص بالجهاز الحالى فقط 484848484848484845484848484548484848454848484845484850524968505167565267 ولو نقلت نفس القاعدة لجهاز آخر لن تعمل ولو استخدمت نفس مفتاح تفعيل
  4. ان شاء الله سوف اراجع افكارى او ربما عدم تركيزى افقدنى شئ ما اتفضل انسخ الرقم الاتى وقم بالضغط على زر الامر past 526752675253525245484852554551554948455648515045665667485270525552565149 سوف يخبرك انه خطأ وبعدين جرب الاتى 526752675253525245484852554551554948455648515445665667485270525552565149 سوف تعمل بعد ذلك القاعدة بشكل طبيعى جدا
  5. المرفق الاول لو فتحته بالشيفت اصلا لن تجد الجدول ويبدو ان هناك خلل فى حالة عدم وجوده على كل ممكن الرقم كوبى نستكمل باقى الخطوات
  6. استاذى العزيز واخى الحبيب الاستاذ @الفلاحجى حتى وان كان موجود من المفترض الحصول على نفس النتيحة كذلك ممكن اعادة التجربة مع وجود الجدول ورجاء نسخ الرقم ووضعه فى المشاركة من النموذج FrmNotReg من خلال زر الامر Copy الموجود بالنموذج
  7. طيب تريد الاعتماد على اى صيغة >>---> wav or mp3
  8. كيف يحدث ذلك من المفروض الا يفتح وان ينقلك الى النموذج FrmNotReg هل قمت بفتح النموذج بشكل طبيعى ام انك تعديت الخطوات المنطقية لالية العمل ؟!
  9. ممكن مرفق القاعدة مع المقطع الصوتى الذى تريد اضافته
  10. شكرا على الدعم باش مهندس @Eng.Qassim رجاء اخبرنى هل حاولت فتح النموذج FrmMain وما النتيجة ؟
  11. طيب تلميح أخر يبدو اننى لم اضع الوصف المناسب حتى تعمل القاعدة بشكل طبيعى لابد ان يتم فتح نموذج FrmMain فعند نسخ القاعدة لاى جهاز اخر سوف تقوم بفتح نموذج FrmNotReg بدلا من النموذج الرئيسيى واعتقد ان هذا ما حدث معكم اساتذتى الكرام منتظر رد حضراتكم تلميح آخر لم يتم وضع القاعدة بتلك الطريقة كنوع من تحدى او اثبات استحالة الفتح.. فقط تجربة الفكرة ببساطة يسهل كسر الحماية فى هذه الاونة بكل سهولة للمحترفين وفى النهاية اعلم انه ليست هناك حماية مطلقة.. ولكن هذا الجزء الأول وسوف ارتقى فى الافكار بناء على نجاح التجارب تدريجيا للوصول الى درجة احترافية ان شاء الله تناسب من يريد تأمين عملة بالقدر الكافى فى انتظار رد اساذتى الكرام استاذى الجليل ومعلمى القدير و والدى الحبيب الاستاذ @jjafferr استاذى الجليل ومعلمى القدير الباش مهندس @Eng.Qassim
  12. ممكن اسكرين شوت من النموذج اللى فتح ؟ ملحوظة هامة لم اقم بتأمين كامل القاعدة يمكن ان تقتح بالضغط على زر الـ Shift برجاء فتح القاعدة بطريقة عادية جدا وتصوير شاشة للنموذج التى تفتح عليه القاعدة
  13. السلام عليكم ورحمة الله وبركاته بناء على طلب احد الاحباب هذا العمل للتجربة اولا برجاء فتح القاعدة وموافتى بالاتى هل تم فتح القاعدة بشكل طبيعى أم أنه طلب منكم وضع رقم ترخيص لتشغيل القاعدة طيب فى حالة طلب رقم الترخيص من فضلك انسخ رقم الـ Activation Number من النموذج من خلال زر الامر Copy وقم بلصقه هنا فى مشاركة للتأكد من فاعلية الفكرة سوف أرسل لكم رقم ترخيص License Number لفتح القاعدة وبعد ذلك سوف تعمل بنجاح الى ان يتم نقلها لجهاز اخر وستتوقف عن العمل ولن يتم فتحها بنفس الرقم السابق والذى أرسلته اليكم ملاحظة رقم الترخيص يتغير من جهاز لاخر يعنى الشخص الذى سوف ارسل لع رقم الترخيص يخص جهازه الحالى فقط ولن ينفع مع شخص غيره ممكن نجرب سويا Anti Copy 3.zip
  14. الموضوع مخالف عدم اختيار عنوان مناسب يصف الموضوع بشكل مختصر غير ان الموضوع نفسه مخالف لانه يعد انتهاك لحقوق صاحب القاعدة الذى قام بإغلاقها آمل ان تعذرنا عند تطبيق اجراء مخالفة قواعد وقوانين المشاركة يغلق ،،،
  15. يعنى ممكن تضيفه كنموذج فرعى للنموذج الرئيسى بتاعك لو مفتوح دايما فالبرنامج او اجعل هذا النموذج فردى كما هو واجعله مفتوح ومخفى دائما طول فتره عمل البرنامج طبعا جزاكم الله خيـرا استاذى القدير واخى الحبيب الاستاذ @الفلاحجى ولتمام القائدة للجميع تم التعامل مع المشكلة لايف ريموت اكسس لوحظ عدم وجود النموذج frmChkCon اصلا بالقاعدة والقليل من الاكواد التى على بعض النماذج فى الحدث Error والتى لا تثمن ولا تغنى من جوع بيدوا انه تم الدمج بين طريقتين لنفس السبيل بعد تدارك الموقف وظبط الاكواد كما ينبغى واضافة النماذج اللازمة من المثال الأصلى وبعد التجربة لوحظ مشكله بعدم اغلاق القاعدة لوجود احد النماذج مفتوحة وبالتالى تم تعليق القاعدة تم تلاشى هذه المشكلة باضافة الروتين الاتى ليقوم باغلاق كل شئ اولا Public Sub Logout() Dim F As Access.Form Dim i As Long ' Loop all open forms, from last to first, to avoid problems due to closing forms ' (removing them from the Forms collection) in the loop For i = Forms.Count - 1 To 0 Step -1 Set F = Forms(i) ' Close all forms except the login form If F.Name <> "frmLogin" Then DoCmd.Close acForm, F.Name End If Next i End Sub رجاء من الاستاذ @ahmus فضلا وكرما وليس امرا ارفاق قاعدة البيانات النهائية بعد التعديلات اللازمة لتعم القائدة على الجميع وشكرا
  16. تقصد ما يقدر حد ينسخها من جهاز لجهاز أخر
  17. معلومة ايه ما فى اى معلومات هنا خالص تقريبا وجزاكم الله خيرا على الدعوات الطيبات اسأل الله تعالى ان يرزقكم والمسلمون اجرها وفضلها بكرمه اضعافا كثيرة بعدد خلقة .. اللهم امين امين امين
  18. الكود معه نجمتين يعنى ملازم اول وانت بكل بساطة تنزعهم منه وتريده ينفذ طلباتك طب ازاى بس
  19. وهاد تعديل طفيف تنيسق شرطى انظر عندم عدم وجود نتيجة فى ال sCOR وعند التحديث للقيم وعند التركيز داخل الحقل وبما انك رجل منذ القدم معنا ياريت تختار افضل اجابة ليتم العلم انه تم الرد وتوصلت للنتيجة المطلوبة ولا يحتاج الى متابعة وو... Evaluation-HR- Final.zip
  20. شوف يا سيدى انا كنت ناوى اعمل جدول تانى زى ما قلت لك فى الرد النظرى على اعتبار ان التقييم شهرى ولكن بما انه هناك EvalID فتمام انظر الى الجدول tblEvalDetails تم اضافة حقل EvalID ليكون لكل موظف تقيمه الخاص تم ربط الحقول EvalID , EmpID , QuestionID مع بعضهم كمفتاح اساسى حتى لا يتم تكرار نفس الاسئلة لنفس الموظف لنفس رقم التقييم تم عمل استعلام الحاقى باسم qryAddQusToEvaDtils وظيفته الحاق كل الاسئلة فى الجدول tblEvalDetails واضافة رقم الموظف ورقم التقييم فى النموذج الخاص بالتقيم وعند اختيار موطف يتم تشغيل الاستعلام لان الكود تم وضعه عند تحديث مربع سرد الموظف بس خلاص هو بس بيتم احضار كل الاسئلة دفعة واحدة وبيتم وضع التقييم على كل سؤال فى النموذج الفرعى واحد بعد الاخر لان قبل التحديث كان لابد ان يضيف الاسئلة فى النموذج الفرعى تباعا من خلال مربع السرد
  21. هو انت تريد تعديل ام شرح ؟ انت قلت تريد تعديل والان صار التعديل معك كما تمنيت تماما
×
×
  • اضف...

Important Information