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

ابو جودي

أوفيسنا
  • Posts

    6,833
  • تاريخ الانضمام

  • Days Won

    187

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

  1. موديول: كود إضافة قيمة غير موجودة بالقائمة لمربع سرد (Not In List) يتم استدعاء الكود فى الحدث >>------> عند عدم الوجود فى القائمة - NotInList من خلال الكود الاتى مع تغيير tableName باسم الجدول المراد اضاقة القيمة الجديدة اليه وتغيير FieldName باسم الحقل داخل الجدول المراد اضاقة القيمة الجديدة اليه Call CmboNotInList("tableName", "FieldName", NewData, Response) الموديول Public Sub CmboNotInList(ByVal strTableName As String, ByVal strFieldName As String, ByVal strNewData As String, ByRef intResponse As Integer) On Error GoTo Proc_Err Dim sSQL As String Dim sMsg As String intResponse = acDataErrContinue sMsg = """" & strNewData & """ is not in the current list. " & vbCrLf & vbCrLf & "Do you want to add it? " If MsgBox(sMsg, vbYesNo, "Add New Data") <> vbYes Then GoTo Proc_Exit End If sSQL = "INSERT INTO [" & strTableName & "] " & "([" & strFieldName & "])" & " SELECT """ & strNewData & """;" With CurrentDb .Execute sSQL If .RecordsAffected > 0 Then intResponse = acDataErrAdded End If End With Proc_Exit: Exit Sub Proc_Err: MsgBox Err.Description, , "ERROR " & Err.Number & " CmboNotInList" Resume Proc_Exit Resume End Sub مرفق Not In List.mdb
  2. موضوع هام جدا جدا جدا يضم بين طياته الدرر الكثيرة تليون نتيجة البحث من موديول بكل سهولة , الفلاتر المتعددة , المرونة فى تصميم كود داخل موديول
  3. فكرة اعجبتنى واجب الاحتفاظ بها والعودة اليها متى شئت بسهولة لذلك اضع الكود هنا والمرفق فى كشكولى المتواضع نسخ احتياطى لقاعدة الجدوال تلقائيا عند فى كل مرة يتم فيعا اغلاق القاعدة الامامية الكود داخل المديول وتلميحات الشرح بقدر المستطاع '--25-10-2021-----------------------------------------------' Option Compare Database Option Explicit Function RunSub() Dim dbs As DAO.Database Dim tdf As DAO.TableDef Dim strPathDB As String Dim strNameExtensionDB As String Dim strNameDB As String Dim strExtensionDB As String Dim strBackupPath As String Dim strNewNameBackupDB As String Dim fso As Object Dim Syso As Object Set dbs = CurrentDb() With dbs For Each tdf In .TableDefs 'Is the table a linked table? If tdf.Attributes And dbAttachedODBC Or tdf.Attributes And dbAttachedTable Then With tdf 'Connect property contains path of link strPathDB = .Properties("Connect").Value 'Path of linked database tables strPathDB = Replace(strPathDB, ";DATABASE=", vbNullString) End With End If Next tdf End With 'Backup path directory strBackupPath = CurrentProject.Path & "\Backup\" Set fso = CreateObject("scripting.filesystemobject") 'Create the Backup folder if it does not exist If Not fso.FolderExists(strBackupPath) Then fso.createfolder (strBackupPath) 'Database name with extension strNameExtensionDB = Right(strPathDB, Len(strPathDB) - InStrRev(strPathDB, "\")) 'Database name without extension strNameDB = Left(strNameExtensionDB, InStrRev(strNameExtensionDB, ".") - 1) 'extension only strExtensionDB = Right(strPathDB, Len(strPathDB) - InStrRev(strPathDB, ".")) 'New name for backup database strNewNameBackupDB = strNameDB & "-Backup-" & Format(Now, "mm-yyyy") & "." & strExtensionDB 'Backup database save path directory strBackupPath = strBackupPath & strNewNameBackupDB DBEngine.Idle 'Copy the backup database to its directory Set Syso = CreateObject("Scripting.FileSystemObject") Syso.copyfile strPathDB, strBackupPath Set Syso = Nothing DoCmd.RunCommand acCmdExit End Function المرفق ملاحظة هامة جدا هذا مثال فقط ينقصه اعادة ربط الجداول المرتبطة من قاعدة الخلفية فقط حتى يعمل النسخ الاحتياطى على اكمل وجه Automatically Backup.zip
  4. هلا والله وميت مليون هلا استاذى الجليل ومعلمى القدير و والدى الحبيب استاذ @jjafferr والله فعلا انا عن نفسي احس بالانس وبالامان بوجودكم انتم وباقى اساتذتى العظماء فى المنتدى لانه بفضل الله تعالى ثم انتم لكل مشكلة فى جعبتكم لها حل أدامكم الله روح طيبة تسكن القلوب .. ووجه باسم ترتاح له العيون .. ونفس مطمئنة تمتلك النفوس .. وأسأله عز وجل أن يعطيكم من عطــاياه ويمنحكم عفوه ورضاه ويغفر لكم من عمركم ما مضى ويقدر لكم الخير فيما أتى .. وأن يجعل السعادة رفيقتكم في الدنيا والآخره.. اللهم آمين.
  5. جزاكم الله خيـــــــرا اساتذتى العظماء وفكرتى المتواضعة على الطريقة الجعفرية كل الشكر استاذ @jjafferr لان الفكرة اصلا اكتسبتها منكم سابقا والحل الان منكم سيدى نقوم بعمل موديول عام Public Function IconByChk(ByVal strFieldNameA As String, ByVal strFieldNameB As String) IconByChk = CurrentProject.Path & "\ico\" & strFieldNameA & strFieldNameB & ".png" End Function ويتم استدعاءه فى الاستعلام img: IconByChk([completed],[printed]) واخيرا المرفق Show One img.zip
  6. جزانا الله واياكم خير الجزاء يعلم الله وانا كذلك واحاول من وقت نشر الموضوع
  7. من الناحية المنطقية لا ولكن ربما يوجد حل غير منطقى والله لازلت افكر واحاول وما سبق هو رايى المتواضع وانا اقل طالب علم قد يكون لدى اساتذتنا حلول فلا تيأس وانتظر
  8. لا يمكن تحقيق ذلك , والله اعلم
  9. احيانا نغير خصائص النموذج Border style لتكون None فى هذه الحالة لا نستطيع تغير مكان النموذج من خلال السحب والافلات بالماوس وحل هذه المشكلة يكمن فى الاتى ننشئ موديول ونضع به الكود الاتى Option Compare Database Option Explicit 'API to move a form with a mouse down event Public Const WM_NCLBUTTONDOWN = &HA1 Public Const HT_CAPTION = &H2 #If VBA7 Then Public Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As LongPtr, _ ByVal wMsg As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr Public Declare PtrSafe Function ReleaseCapture Lib "user32.dll" () As Long #Else Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Public Declare Function ReleaseCapture Lib "user32.dll" () As Long #End If Public Function MovFrm(ByVal F As Form, ByVal X As Single) X = ReleaseCapture() X = SendMessage(F.hWnd, WM_NCLBUTTONDOWN, HT_CAPTION, 0) End Function ونذخب الى النموذج وفى الحدث on Mouse Down لــ FormHeader نضع السطر الاتى Call MovFrm(Me, X) اخيـــــــرا مرفق التطبيق API to move a form.mdb
  10. السلام عليكم ورحمة الله وبركاته احيانا تحدث مشكلات عند تنفيذ احد الاجراءات تبعا للكود المستخدم فكرتى المتواضعة فى هذا المرفق 1- تسجيل الاخطاء ليقف المصمم , المطور , المبرمج على مكان الخطأ تحديدا ورقمه لسهولة حل المشكلة 2- تجاوز الاخطاء كما يترائى لـ المصمم , المطور , المبرمج من خلال الأخطاء التى تم تصيدها وتسجيلها بالجدول Write Error Log .mdb
  11. المهم انا راجعت الكود مرارا وتكرار وكان هذا حالى وانا اقوم بمراجهة الكود هههه وعنوان الموضوع سؤال عن :مشكلة عند اضافة بيانات من خلال Recordset من موديول
  12. هاهاهاهاهاهاهاهاهاها والله لم انتبه اننى اعلنت عنها فى المتغير انها Database وليس Recordset جزاااكم الله خيرا استاذى الجليل @ناقل من البارحة وانا لا اعرف السبب وابحث هنا وهناك
  13. للعلم انا حليت المشكلة باستخدام الكود الاتى ... لكن كنت اريد الوقوف على السبب رغم ان نفس الالية بالكود السابق تعمل معى على نفس الجهاز فى قاعدة اخرى 'Set db = CurrentDb() 'Set rs = db.OpenRecordset("tblErrorLog") With CurrentDb.OpenRecordset("tblErrorLog") .AddNew ![FildenameOnTable] = ObjectNameOnForm .Update .Close End With
  14. السلام عليكم ورحمة الله تعالى وبركاته فى موديول عام استخدمت هذا الجزء من الكود ولكن للمرة الأولى تحدث هذه المشكلة معى ولا ادرى السبب Dim db As DAO.Database Dim rs As DAO.Database Set db = CurrentDb() Set rs = db.OpenRecordset("tblErrorLog") rs.AddNew
  15. الان فى المرفق التالى ان شاء الله سوف يتم اضافة الاتى - مويول التشفير - نموذج اضافة المجموعات - نموذج اضافة اسئلة الأمان نموذج اضافة المجموعات سوف يكون غير منضم اى للاضافة فقط وسوف يقوم بتشفير اسم المجموعة لانه لو كان للتعديل كذلك سوف نضطر لاعادة فك التشفير وبتلك الخطوة نفقد جزء من الحماية وهو معرفة اسماء المجموعات وكذلك مع نموذج الاسئلة وبما اننى لا اجد التفاعل المناسب فى الرد على اسألتى وقررت عدم طرح اى اسألة مستقبلا لن يتم العمل كما يترائى للاعضاء وهذا ما احزننى ولم اكن اريده استكمال الموضوع كله من وجهة نظرى ومن واقع الشرح الذى سوف يتضمنه الموضوع من يريد اضافة او تعديل فليتفضل هو بعمل ما يترائى له ولكن لن يكون على مرفقاتى او اثناء الشرح حتى لا نفقد التركيز سواء انا فى التصور لاخراج العمل او للمتابع تباعا لما اقدمه
  16. هذه خطوة اولى فى الحماية اعرف قد يرى البعض ان لا قيمة لها ولكن ان شاء الله مع وضع الكثير من خطوات الحماية يرتقى العمل الى مستوى احترافى تدريجيا بأمر الله
  17. وهذا ما حسبته بسبب عدم التفاعل فى المناقشة والرد على اسألتى والاهتمام اصلا بما كتبته مسبقا هذا السؤال سوف يكون النتيجة الحتمية قمت ببدأ تسمية الجدوال يا افندم بــ Usys لذلك سوف يعتبرها الاكسس من جداول النظام وسوف يتم اخفاؤها اليا .... ولذلك هذه خطوة الحماية الأولى لتتمكن من رؤية الجدوال لابد من اظهار جداول النظام
  18. المرفق رقم ( 2 ) فى المرفق الاول تحدثنا عن التشفير هذا المرفق يحتوى فقط على الجداول اللازمة لانشاء نظام الصلاحيات يختوى المرفق على - جدول UsystbllvlControlForms هذا الجدول الخاص بادراج اسماء النماذج المراد تطبيق صلاحيات الفتح والاضافة والتعديل والحذف عليها - جدول UsystbllvlGroup هذا الجدول الخاص باضافة اسماء المجموعات التى نريد عمل الصلاحيات لها - جدول UsystbllvlQuestions هذا الجدول الخاص باضافة اسئلة الأمان التى سوف يقوم المستخدم بإختيارها والإجابة عليها اثناء تقديم طلب التسجيل والتى سوف تمكنه من استعادة كلمة المرور فى حالة نسيان كلمة المرور - جدول UsystbllvlRegistrationUsers هذا الجدول الذى سوف يتم اضافة بيانات المستخدمين فيه والتى تحتاج قيما بعد لتفعيلها من قبل مسئول النظام -جدول UsystbllvlUsers جدول بيانات المستخدمين SecurityLevelGroup.mdb
  19. لا اجد التفاعل بالردود المناسبة على اسألتى على بركة الله اكمل العمل كله كما سوف يترأى لى من وجهة نظرى طيب حتى لا يقال لى ان الجداول مستقبلا او النماذج سوف اتعمدت تسمية كل الكائنات التى تخص الصلاحيات بالبداية Usys لذلك سوف تعتبر تلك الكائنات تابعة للنظام وسوف تختفى تلقائيا ارى من وجهة نظرى ان التشفير يكون فقط لـ اسم المستخدم , كلمة المرور , الاجابات الثلاث تعمدت ان تكون ثلاث حتى ان خمن احد المقربين من المستخدم اجابة سؤال وكانت صحيحة يقف امام سؤلاين اخرين
  20. ممكن اشرح لك بالصور الطريقة اليدوية ولكن افضل ذلك برمجيا
  21. استاذ @jjafferr دائما يقدم ابسط الحلول ما بيهوى التعقيد اما انا معقد شوف بطبعى لا احب التقيد لذلك دائما ابحث عن الحلول التى ترضى طموحى وخيالى دون ان تقيدنى حتى وانا طالت واحيانا اجد ان تنوع الحلول يثمن المعرفة
  22. كنت اريد التأكد هل وجود المسافات الزائدة تشكل فارق النتيجة المرجو الحصول عليها اما عن سؤال حضرتك كيف اضفتها هههههههه انا لا اعرف المرفق كان هكذا من احد رواد المنتدى فى سؤال له لا اعرف هل هذا ناتج عن مشكلة ام ماذا قصدت بأننى تعمدت ذلك اى تعمدت التأكد من ان الحلول لن تأثر تلك المسافات عليها لأفكر ان كان لها تأثير على اقوم بعمل حسابات فى الكود لازالتها اولا ـــــــــــــــ لكن بوجه عام انا ان احببت اضافة مسافات وانا متعمدا لذلك اضغط على زر Alt من لوحة المفاتيح ضغط مستمر وفى نفس الوقت اكتب الارقام 255 تلك طريقة الـ Asci
  23. حقول جدول المستخدمين من وجهة نظرى سوف تكون كالاتى فهل لكم وجهة نظر أخرى فى الغاء احد الحقول او الزيادة عليها ومن جهتكم اى حقول تريدون تشفر بياناتها ؟! كلمة المرور , الاسم الرباعى , البريد الالكترنى , الاجابات على الاسئلة
×
×
  • اضف...

Important Information