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

كل الانشطه

هذه الصفحة تحدث تلقائياً

  1. Today
  2. سألت الذكاء فأعطاني عدة حلول الغريب ان ذكر الصندوق ولكن لم يقل انه اسود سؤالي : هل يمكن حماية محرر فيجوال في اكسس وهو على صيغة accdb بدون استخدام كلمة المرور المعتادة داخل المحرر ودون استخدام قفل مفتاح اشيفت .. هل من طريقة مبتكرة فريدة او جديدة قال Gemini نعم، هناك طرق "خارج الصندوق" تتجاوز الحماية التقليدية بكلمة مرور (VBA Project Password) التي يسهل كسرها حالياً، أو تعطيل مفتاح Shift الذي يمكن تجاوزه بسهولة. إليك مجموعة من الأساليب المبتكرة والاحترافية لحماية كود VBA في ملفات accdb: 1. تحويل الملف إلى صيغة ACCDE (الخيار الأقوى والأكثر شيوعاً) هذه ليست مجرد كلمة مرور، بل هي عملية "تجميع" (Compilation) للكود. كيف تعمل: يقوم اكسس بحذف الكود المصدري (Source Code) تماماً والإبقاء فقط على نسخة تنفيذية يفهمها الجهاز. النتيجة: لن يتمكن أي شخص من فتح محر VBA أو رؤية سطر واحد من الكود، حتى لو حاول ذلك. ملاحظة: احتفظ دائماً بنسخة accdb الأصلية للتعديل، لأنك لن تستطيع استرجاع الكود من ملف accde. 2. التمويه وتشتيت المنطق (Code Obfuscation) إذا كان لا بد من بقاء الملف بصيغة accdb، يمكنك استخدام استراتيجية "الغموض" بدلاً من "القفل": تغيير الأسماء: استبدل أسماء المتغيرات والدوال الواضحة بأسماء عشوائية لا معنى لها (مثلاً: بدلاً من CalculateSalary استخدم x7_v2). استدعاءات غير مباشرة: استخدم Application.Run لاستدعاء الدوال بدلاً من استدعائها مباشرة، مما يجعل تتبع مسار الكود كابوساً للمتطفل. 3. نقل الكود إلى مكتبة خارجية (DLL) باستخدام VB6 أو .NET هذه الطريقة تعتبر "مستوى المحترفين" وتجعل الوصول للكود مستحيلاً تقريباً من داخل اكسس: الفكرة: بدلاً من كتابة الكود الحساس داخل اكسس، قم بكتابته في لغة برمجة أخرى (مثل C# أو VB.NET) وقم بتصديره كملف DLL. التطبيق: داخل اكسس، تقوم فقط بعمل "استدعاء" للدالة الموجودة في الملف الخارجي. الميزة: الكود لا يوجد أصلاً داخل قاعدة البيانات ليتم فتحه أو كسره. 4. طريقة "فخ التحقق" (Conditional Execution) يمكنك وضع كود في بداية تشغيل البرنامج يتحقق من "بصمة" معينة للجهاز (مثل الرقم التسلسلي للهاردسك)، وإذا لم يتطابق، يقوم الكود بمسح نفسه أو إغلاق التطبيق فوراً. مثال: > "إذا فتح المستخدم محرر VBA وحاول التعديل، يتم تفعيل ماكرو مخفي يقوم بحذف سجلات أساسية أو تعطيل الواجهات." (هذه الطريقة دفاعية وليست وقائية). 5. استخدام Add-ins الخارجية للتشفير هناك أدوات متقدمة (مثل VBA Code Guard) تقوم بتغيير بنية الكود داخل الملف بطريقة تجعل قراءته مستحيلة بشرياً حتى لو تم فتح المحرر، حيث تظهر الرموز كطلاسم غير مفهومة. أي الطرق تفضل؟ إذا كنت تبحث عن الأمان المطلق وسهولة التنفيذ، فإن تحويل الملف إلى ACCDE هو الحل الأمثل. أما إذا كنت ترغب في حماية برمجية معقدة تسمح لك بإدارة التراخيص، فنقل الكود إلى DLL هو الطريق الصحيح. هل تود أن أشرح لك كيفية تحويل ملفك إلى ACCDE أو كيفية ربط مكتبة DLL بملف اكسس؟
  3. Yesterday
  4. يبدو أنه قد اختلط علي الأمر بين مشكلة قد طرحتها ، ومشكلة أخرى فعلاً .. شكراً للتنبيه مهندس محمد .. حتى أن مهندسنا لم يقم بلفت انتباهي بإن أجابتي كانت قد حلت أم لم تحل المشكلة .. أما بحكم أنني أستخدم التنسيق Am/Pm ولا استخدم اللغة العربية مطلقاً في أجهزتي ، فقد غفلت عنها فعلاً .
  5. واجهتني نفس المشكة و حلها يكون - في جهازي على الاقل - في الاعدادات الاقليمية في جزئية التاريخ يكون رمز الصباح و المساء بدلا من ص و م يكون AM , PM عندما فعلت ذلك تم حل المشكلة
  6. الله يبارك في حضرتك وفي أخي خليفة
  7. هذا الذي ظهر لي ويبدو انني وهمت العمر له حقه .. فسامحونا .. كنت اتعامل مع مربع سرد حقيقي 😞
  8. ههههههه انا قطعت لك نصف الطريق ، واعتقدت أنك قادر على انشاء استعلام حذف بشرط قيمة المسلسل الحالية . لكن قام الأستاذ خليفة بطرح الفكرة بنكهته الخاصة .
  9. شكرا جزيلا لكما وبارك الله فيكما وغفر الله لنا ولكما وزادكما الله من علمه
  10. شكراً لك على المساهمة أستاذ خليفة ولكن كفكرة في التنفيذ يمكن استخدام المفاتيح Alt + F11 للدخول إلى محرر الأكواد 😁 أضف إلى ذلك أنه في المطلوب و الصورة التوضيحية لم أتطرق إلى إلغاء مفتاح الشفت أو إخفاء أي أشرطة أو التعديل في خصائص آكسيس . أنا أتكلم عن قاعدة بيانات مفتوحة المصدر تماماً ، بدون أي خدع من تلك التي نستعملها عند قفل المشروع وتهيأته للتحويل إلى Accde . حتى أنني لم أتطرق إلى قفل محرر الأكواد بكلمة مرور 😉 .
  11. مجرد فكرة جرب وافني بالرد وسأكمل معك التفاصيل . Accdb Save.rar
  12. lمشاركة مع استاذ @Foksh تفضل استاذ @2saad محاولتي حسب ما فهمت . ووافني بالرد . Saad-2.rar
  13. شكرا أخي الفاضل الملف شغال تمام ولكن الاسم لم يحذف من الجدول الرئيسي بعد نقله الي الآخر
  14. جرب الملف التالي .. saad (2).accdb
  15. عفوا اخي @ابوخليل ولكن آخر خيار في القائمة خاص بالتصفية كما بالصورة ارجو توضيح فكرتك بالصور لأني بصراحة لأول مرة أعرفها
  16. أخي الفاضل طبقت زي ما حضرتك قلت ولكن لم يفلح
  17. السلام عليكم ورحمة الله وبركاته .. كنت قد طرحت سؤال بخصوص إمكانية منع المستخدم في قاعدة البيانات الحالية من فتح محرر الأكواد VBA دون تحويل الملف الى أي صيغة أخرى غير الـ ACCDB . يعني قاعدة بيانات مفتوحة المصدر Accdb ولكن بمنعه من الدخول الى محرر الأكواد بدون حفظ القاعدة بصيغة ACCDE - ACCDR. كما في الصورة المرفقة كمثال للتوضيح :-
  18. وعليكم السلام ورحمة الله وبركاته .. استعمل استعلام إضافة للجدول . انشئ استعلام والصق الـ SQL التالي فيه :- INSERT INTO Tbl_elmohawlen ( ID, Stucod, Studentname, Stucard, alsaf_Id, gender ) SELECT [Forms]![frm_Reports]![f] AS Expr1, [Forms]![frm_Reports]![كود الموظف] AS Expr2, [Forms]![frm_Reports]![m] AS Expr3, [Forms]![frm_Reports]![تاريخ الميلاد] AS Expr4, [Forms]![frm_Reports]![alsaf_Id] AS Expr5, [Forms]![frm_Reports]![gender] AS Expr6; انشئ زر في النموذج ، واجعله يفتح الاستعلام السابق . استعمل الجملة لاستدعاء الاستعلام كمثال :- DoCmd.OpenQuery "Query1"
  19. إخواني الأعزاء بعد سلام الله عليكم ورحمة الله في الملف المرفق به جدول للتلاميذ باسم Tbl_student وجدول آخر باسم Tbl_elmohawlen عندما ادخل علي النموذج واعمل بحث علي تلميذ تظهر بياناته محتاج اعمل زر يقوم بترحيل بعض بيانات الاسم من جدول Tbl_student وترحيله الي جدول Tbl_elmohawlen ثو يقوم بحذفه من جدول Tbl_student saad (2).accdb
  20. تفضل/ي استاذ/ة @ruan الشرح والمرفق حسب مافهمت . ووافني بالرد . Ruan-1.rar
  21. استاذي العزيز .. حقول المستدعاة من جدول المعلومات تم جعلة غير منظم .. اما بافي حقول جدولي الصادر والوارد لا تاحذ مسمى الحقول المستدعاة وكما مبين في الصورة المرفقة . اتمنى وفقت في بيان المشكلة . مع الشكر
  22. شكرا جزيلا أخي الفاضل وبارك الله فيك وأكثر الله من أمثالك وغفر الله ذنبك ورفع قدرك
  23. بدايةً ، وعليكم السلام ورحمة الله وبركاته .. مرفق لا يحتوي على أي سجلات .. المطلوب غير مفهوم بتاتاً .. للتصويب بالتوضيح وبإضافة السجلات أخي الكريم ، حتى تجد إجابة على طلبك المبهم .
  24. ثلاث جداول مترابطه .. حقول جدولي الصادر والوارد تظهر قيمة خطأ مع خالص التحيات 1.rar
  25. انا من العاديين وجدت الحل هنا Modify Loolups ويدويا وبأبسط صورة .. اضافة وحذف كالتالي : افتح الجدول على العرض وليس التصميم انقر بزر الفأرة الأيمن على الحقل .. ستظهر قائمة اختر آخر بند في أسفل القائمة .. سيظهر لك مربع حوار .. واستمتع .. اكتب ما تريد واحذف ما تريد
  26. شكراً لك مهندسنا الغالي على متابعتك .. الفكرة السابقة ، عملت على جهاز ولم تعمل على جهاز آخر .. لذا قد يكون التعديل بحذف مصدر صف الليست بوكس lstAPI . وحفظ النموذج واعتماده بدون مصدر صف له . وسيتم تحميلها عند فتح النموذج تلقائياً . ويمكن لنا أن نضع السطر التالي :- Me.lstAPI.RowSource = "" في حدث عند اغلاق النموذج .. وبالتالي لن يتم تعيين قيمة لمصدر صف الليست بوكس عند اغلاقه . أيضاً تحديث الدالة CX_CreateTables المسؤولة عن إنشاء الجداول ، بحيث تقوم بإظهار الجداول بعد إنشائها :- Private Sub CX_CreateTables() On Error GoTo EH Dim db As DAO.Database Dim ws As DAO.Workspace Dim td As DAO.TableDef Set db = CurrentDb Set ws = DBEngine.Workspaces(0) ws.BeginTrans If Not CX_TableExists(T_REG) Then db.Execute "CREATE TABLE " & T_REG & " (" & _ "ID AUTOINCREMENT CONSTRAINT PK_" & T_REG & " PRIMARY KEY, " & _ "ToolName TEXT(64) NOT NULL, " & _ "ToolVersion TEXT(32) NOT NULL, " & _ "InstalledOn DATETIME, " & _ "OfficeVersion TEXT(16), " & _ "Is64Bit YESNO)", dbFailOnError db.Execute "CREATE UNIQUE INDEX UX_" & T_REG & "_ToolName ON " & T_REG & " (ToolName)", dbFailOnError End If If Not CX_TableExists(T_OBJ) Then db.Execute "CREATE TABLE " & T_OBJ & " (" & _ "ID AUTOINCREMENT CONSTRAINT PK_" & T_OBJ & " PRIMARY KEY, " & _ "ObjName TEXT(128) NOT NULL, " & _ "ObjKind TEXT(32) NOT NULL, " & _ "Lines LONG, " & _ "LastScan DATETIME)", dbFailOnError db.Execute "CREATE UNIQUE INDEX UX_" & T_OBJ & "_ObjNameKind ON " & T_OBJ & " (ObjName, ObjKind)", dbFailOnError db.Execute "CREATE INDEX IX_" & T_OBJ & "_Kind ON " & T_OBJ & " (ObjKind)", dbFailOnError End If If Not CX_TableExists(T_PROC) Then db.Execute "CREATE TABLE " & T_PROC & " (" & _ "ID AUTOINCREMENT CONSTRAINT PK_" & T_PROC & " PRIMARY KEY, " & _ "ObjName TEXT(128) NOT NULL, " & _ "ObjKind TEXT(32) NOT NULL, " & _ "ProcName TEXT(128) NOT NULL, " & _ "ProcKind TEXT(32) NOT NULL, " & _ "StartLine LONG, " & _ "ProcLines LONG, " & _ "LastScan DATETIME)", dbFailOnError db.Execute "CREATE INDEX IX_" & T_PROC & "_Obj ON " & T_PROC & " (ObjName, ObjKind)", dbFailOnError db.Execute "CREATE INDEX IX_" & T_PROC & "_Proc ON " & T_PROC & " (ProcName)", dbFailOnError End If If Not CX_TableExists(T_API) Then db.Execute "CREATE TABLE " & T_API & " (" & _ "ID AUTOINCREMENT CONSTRAINT PK_" & T_API & " PRIMARY KEY, " & _ "ApiName TEXT(128), " & _ "Category TEXT(64), " & _ "Description LONGTEXT, " & _ "Code LONGTEXT, " & _ "Is64Bit YESNO)", dbFailOnError db.Execute "CREATE UNIQUE INDEX UX_" & T_API & "_ApiName ON " & T_API & " (ApiName)", dbFailOnError End If ws.CommitTrans For Each td In CurrentDb.TableDefs If Left(td.name, 4) = "zCX_" Then DoCmd.SelectObject acTable, td.name, True End If Next td Exit Sub EH: On Error Resume Next ws.Rollback ShowError "CX_CreateTables" End Sub
  1. أظهر المزيد
×
×
  • اضف...

Important Information