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

كل الانشطه

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

  1. Today
  2. وحتى يظهر الاختلاف بشكل جيد قم بتجربة المرفق التالى سوف تجد انه تتم عملية الاخفاء من ماكر لا يتم عملية الاستدعاء داخل كل نموذج فى حالة عدم ضبط خاصية : Pop Up =Yes لن يختفى النموذج ويظل الاكسس عالق فى الخلفية بل سوف تتم استعادة الاطار فورا بشكل تلقائى حاول تفتح النموذج رقم 3 من زر الامر : Switch To Form3 ثم اذهب الى النموذج الاول وقم بتطبيق عملية الاخفاء وقم بالتبديل بين النموذجين الاول والثانى لن تحدث اى مشاكل Hide Access Frame.accdb
  3. سلام عليكم عيدكم مبارك كل عام وأنتم بخير سعيد بقبول إنظمامي الى الموقع أريد كيفية إنشاء فئات عمرية من 20 الى 30 من 30 الى 40 من 40 الى 50 + 50
  4. هلا ومليون هلا طب شوف المرفق ده استاذ ممكن الاستدعاء لاخفاء الاطار من ماكرو AutoExec او فى النموذج الاول للفتح ولا يتم استدعاء اخفاء اطار الاكسس فى كل نموذج يتم فتحة SaadPermissionsLast-2.zip
  5. بعد اذن الاساتذة اسمحولي تفضل استاذ @2saad المرفق بعد التعديل . ووافني بالرد . واذا راق لك . وافني بالرد كي اشرح لك التفاصيل . SaadPermissionsLast-2.rar
  6. معذرة اصل انا لم اجد خط مرسوم علشان امشى عليه ولم اجد من يرسم لى الخط الاكواد موجودة ومشروح كل شئ اللى عاوز ينفذ يقراء يفهم وينفذ اللى مش عاوز براحته هو الخسران وكل شخص بيتعلم من جميع التجارب الناجحة والغير ناجحة
  7. اعرض الملف صلاحيات مجموعة عمل مستخدمين الخصائص ببساطة مجموعات المستخدمين — كل مستخدم ينتمي لمجموعة وكل مجموعة لها صلاحياتها التحكم في الصلاحيات للنماج والتقارير — وعددها 5 صلاحيات لكل كائن (فتح / إضافة / تعديل / حذف / تصدير) حماية النماذج والتقارير — لا يتم فتح أي نموذج أو تقرير إلا بعد التحقق من الصلاحية التصدير الآمن — تصدير التقارير والاستعلامات لـ PDF/Excel مع التحقق من الصلاحية أولاً الصلاحيات على مستوى المجموعة أى انه بنقل اى مستخدم من مجموعة لاخرى تنطبق عليه فورا صلاحيات المجموعة صاحب الملف Debug Ace تمت الاضافه 03/23/26 الاقسام قسم الأكسيس  
  8. Version 1.0.0

    2 تنزيل

    الخصائص ببساطة مجموعات المستخدمين — كل مستخدم ينتمي لمجموعة وكل مجموعة لها صلاحياتها التحكم في الصلاحيات للنماج والتقارير — وعددها 5 صلاحيات لكل كائن (فتح / إضافة / تعديل / حذف / تصدير) حماية النماذج والتقارير — لا يتم فتح أي نموذج أو تقرير إلا بعد التحقق من الصلاحية التصدير الآمن — تصدير التقارير والاستعلامات لـ PDF/Excel مع التحقق من الصلاحية أولاً الصلاحيات على مستوى المجموعة أى انه بنقل اى مستخدم من مجموعة لاخرى تنطبق عليه فورا صلاحيات المجموعة
  9. الخصائص ببساطة مجموعات المستخدمين — كل مستخدم ينتمي لمجموعة وكل مجموعة لها صلاحياتها التحكم في الصلاحيات للنماج والتقارير — وعددها 5 صلاحيات لكل كائن (فتح / إضافة / تعديل / حذف / تصدير) حماية النماذج والتقارير — لا يتم فتح أي نموذج أو تقرير إلا بعد التحقق من الصلاحية التصدير الآمن — تصدير التقارير والاستعلامات لـ PDF/Excel مع التحقق من الصلاحية أولاً الصلاحيات على مستوى المجموعة أى انه بنقل اى مستخدم من مجموعة لاخرى تنطبق عليه فورا صلاحيات المجموعة الرابط للمرفق تجدونه هنا وملاحطة هامة جدا جدا المشاركة مش من باب التحدى والمنافسة انا بدات الكلام ان المرفق هدية وتم اخذ الاذن من صاحبه بالنشر يغنى المشاركة من باب المشاركة فقط
  10. مش فاهم بدلة ايه ورفعتها فين هى مش عندى على رابط هى ع الجهاز ومش عارف ارفعها ازاى اساسا
  11. مهو لو انت لابس البدلة ، كان رفعتها .. بس ماشي .. ارفع رابطها وأحاول ارفعهالك في مشاركتك ..
  12. طيب كان عندى قاعدة على سبيل الهدية وصاحبها وافق على النشر ولكن الحجم كبير لا استكيع الرفع هنا ماذا افعل لادارة صلاحيات مجموعات العمل لاكثر حتى من مليون مستخدم
  13. شكلك مصدوم ، ولا تكونش لسه مخضوض يكفينا مشاركتك أفكارك بصوت عالٍ أستاذنا الغالي .. شكراً لمرورك وأفكارك التي نتمنى أن يراها ويُثرى بها فكر من يحتاجها . أيضاً وبالوقوف إلى جانبك ، سأفكر بصوت عالي معك 🥰 هل من الممكن بناء صلاحيات كيفما أريد وبأسماء أحددها أنا ...؟؟؟ يعني :- نبدأ بالمشروع الجديد والذي ليس به أي صلاحيات ولا بأي شكل ولا بأي نوع . أقوم بإنشاء صلاحيات المستخدمين من نموذج مخصص لهذا الغرض لا يدخله إلا المسؤول البرمجي فقط لا غير . عند تسطيب أو تثبيت البرنامج لأول مرة بحيث وعلى سبيل المثال والتوضيح كفكرة . أنشئ عنوان الصلاحية الجديدة ، وليكن :- صلاحيات إدارية . ثم أحدد نوع وميزات وخصائص الصلاحيات التي سأبدأ بها . ولنكمل فرضاً = الدخول إلى نماذج محددة - أو عدم الدخول إلى نماذج محددة حسب الحاجة طبعاً بعد اختياري للنماذج ، قد نضيف أيضاً التعديل والإضافة والحذف = السماح أو المنع = ويمكن تحديد هذه الصلاحيات لكل نموذج بشكل منفرد . يعني ممكن في نموذج فاتورة البيع اعمل اضافة ، ولكن لا استطيع عمل حذف أو تعديل سجل . بينما في نموذج فاتورة الشراء ، مسموح أعمل حذف وممنوع من الاضافة والتعديل ... إلخ الآن انا ولنفترض حددت 10 بنود لصلاحية = صلاحيات إدارية . وبهذا الشكل والذي آمل أن أكون قد وصفته بشكل واضح ومفهوم استطيع عند انشاء وإضافة المستخدمين أم أحدد له عنوان الصلاحية وليس ما تحتويه . أي القالب الرئيسي لها .... وهكذا يعني بمعنى أفصح قليلاً ، ممكن يكون عندي صلاحيات متعددة وبأسماء أنا كمستخدم مسؤول أحددها وأحدد خصائصها بشكل كامل . ودمتم بخير
  14. تمام الكود السابق به مشكلة لو ان خاصية النموذج Pop Up =Yes فى كل النماذج لن تحدث اى مشكلة ولكن لو اردت الانتقال باغلاق النموذج الحالى وفتح نموذج اخر لو كانت الحاصية للنموذج الجديد المراد فتحة Pop Up =No للاسف سوف يتم اخفاء النموذج طيب والحل ايه علشان نخلص من المشكلة العويصة دى وانا قصدت وضع الحل بالتدرج لتكون مرجعا كان ممكن اضع الحل فورا ولكن دى نقطة مهمة الحل فى ان نقوم بعمل الكود فى الوحدة النمطية العامة بالشكل التالى Option Private Module Option Compare Database Option Explicit #If VBA7 Then Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As LongPtr, ByVal nIndex As Long) As Long Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare PtrSafe Function GetWindowRect Lib "user32" (ByVal hWnd As LongPtr, lpRect As WindowRect) As Long Private Declare PtrSafe Function MoveWindow Lib "user32" (ByVal hWnd As LongPtr, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long Private Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hWnd As LongPtr, ByVal nCmdShow As Long) As Long Private Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long #Else Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As WindowRect) As Long Private Declare Function MoveWindow Lib "user32" (ByVal hWnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long #End If Private Const GWL_EXSTYLE As Long = -20 Private Const WS_EX_APPWINDOW As Long = &H40000 Private Const SW_HIDE As Long = 0 Private Const SW_SHOWNORMAL As Long = 1 Private Const SW_SHOWNOACTIVATE As Long = 4 Private Const SM_CXVIRTUALSCREEN As Long = 78 Private Const SM_CYVIRTUALSCREEN As Long = 79 Private Type WindowRect LeftPos As Long TopPos As Long RightPos As Long BottomPos As Long End Type Private m_IsHidden As Boolean Private m_Rect As WindowRect Private m_StyleBackup As Long Public Sub HideAccessFrame() On Error GoTo ErrHandler If m_IsHidden Then Exit Sub Dim sOffenders As String sOffenders = GetNonPopupObjects() If Len(sOffenders) > 0 Then MsgBox "لا يمكن إخفاء إطار Access." & vbCrLf & vbCrLf & _ "الكائنات التالية تحتاج إلى ضبط PopUp = Yes :" & vbCrLf & _ sOffenders, _ vbExclamation Or vbMsgBoxRight Or vbMsgBoxRtlReading, _ "modWindowManager" LogError "HideAccessFrame", "Aborted — non-popup objects: " & sOffenders Exit Sub End If #If VBA7 Then Dim hApp As LongPtr #Else Dim hApp As Long #End If hApp = Application.hWndAccessApp If hApp = 0 Then LogError "HideAccessFrame", "Could not obtain hWndAccessApp." Exit Sub End If If GetWindowRect(hApp, m_Rect) = 0 Then LogError "HideAccessFrame", "GetWindowRect failed." Exit Sub End If Dim lWidth As Long Dim lHeight As Long lWidth = m_Rect.RightPos - m_Rect.LeftPos lHeight = m_Rect.BottomPos - m_Rect.TopPos m_StyleBackup = GetWindowLong(hApp, GWL_EXSTYLE) Dim lNewStyle As Long lNewStyle = m_StyleBackup And Not WS_EX_APPWINDOW SetWindowLong hApp, GWL_EXSTYLE, lNewStyle Dim lOffscreenX As Long Dim lOffscreenY As Long lOffscreenX = GetSystemMetrics(SM_CXVIRTUALSCREEN) + 200 lOffscreenY = GetSystemMetrics(SM_CYVIRTUALSCREEN) + 200 If MoveWindow(hApp, lOffscreenX, lOffscreenY, lWidth, lHeight, True) = 0 Then LogError "HideAccessFrame", "MoveWindow failed — rolling back style." SetWindowLong hApp, GWL_EXSTYLE, m_StyleBackup ShowWindow hApp, SW_SHOWNORMAL Exit Sub End If ShowWindow hApp, SW_HIDE ShowWindow hApp, SW_SHOWNOACTIVATE DoEvents m_IsHidden = True Exit Sub ErrHandler: LogError "HideAccessFrame", Err.Number & " - " & Err.Description End Sub Public Sub ShowAccessFrame() On Error GoTo ErrHandler If Not m_IsHidden Then Exit Sub #If VBA7 Then Dim hApp As LongPtr #Else Dim hApp As Long #End If hApp = Application.hWndAccessApp If hApp = 0 Then LogError "ShowAccessFrame", "Could not obtain hWndAccessApp." Exit Sub End If Dim lWidth As Long Dim lHeight As Long lWidth = m_Rect.RightPos - m_Rect.LeftPos lHeight = m_Rect.BottomPos - m_Rect.TopPos If MoveWindow(hApp, m_Rect.LeftPos, m_Rect.TopPos, lWidth, lHeight, True) = 0 Then LogError "ShowAccessFrame", "MoveWindow failed — frame may be offscreen." Exit Sub End If SetWindowLong hApp, GWL_EXSTYLE, m_StyleBackup ShowWindow hApp, SW_SHOWNORMAL m_IsHidden = False Exit Sub ErrHandler: LogError "ShowAccessFrame", Err.Number & " - " & Err.Description End Sub Public Function IsAccessHidden() As Boolean IsAccessHidden = m_IsHidden End Function Private Sub LogError(ByVal sSource As String, ByVal sMessage As String) Dim sEntry As String sEntry = "[" & Format(Now, "yyyy-mm-dd hh:nn:ss") & "] " & "modWindowManager." & sSource & " >> " & sMessage Debug.Print sEntry End Sub Private Function IsFormOpen(ByVal sFormName As String) As Boolean IsFormOpen = (SysCmd(acSysCmdGetObjectState, acForm, sFormName) And acObjStateOpen) <> 0 End Function Private Function IsFormPopup(ByVal sFormName As String) As Boolean On Error GoTo ErrHandler If IsFormOpen(sFormName) Then IsFormPopup = Forms(sFormName).PopUp Exit Function End If DoCmd.OpenForm sFormName, acNormal, , , , acHidden IsFormPopup = Forms(sFormName).PopUp DoCmd.Close acForm, sFormName, acSaveNo Exit Function ErrHandler: LogError "IsFormPopup", Err.Number & " - " & Err.Description IsFormPopup = False End Function Private Function GetNonPopupObjects() As String Dim sResult As String Dim i As Integer For i = 0 To Forms.Count - 1 On Error Resume Next Dim oForm As Access.Form Set oForm = Forms(i) If Err.Number = 0 Then If Not oForm.PopUp Then sResult = sResult & " [نموذج] " & oForm.Name & vbCrLf End If End If Err.Clear On Error GoTo 0 Next i For i = 0 To Reports.Count - 1 On Error Resume Next Dim oReport As Access.Report Set oReport = Reports(i) If Err.Number = 0 Then If Not oReport.PopUp Then sResult = sResult & " [تقرير] " & oReport.Name & vbCrLf End If End If Err.Clear On Error GoTo 0 Next i GetNonPopupObjects = sResult End Function Public Sub SwitchToForm(ByVal NewFormName As String, Optional ByVal OpenArgs As Variant) On Error GoTo ErrHandler If m_IsHidden Then If Not IsFormPopup(NewFormName) Then ShowAccessFrame MsgBox "تم استعادة إطار Access تلقائياً." & vbCrLf & vbCrLf & _ "النموذج """ & NewFormName & """ يحتاج إلى ضبط PopUp = Yes.", _ vbInformation Or vbMsgBoxRight Or vbMsgBoxRtlReading, _ "تنبيه" LogError "SwitchToForm", _ "Frame restored — '" & NewFormName & "' has PopUp = No." End If End If Dim sCurrentForm As String sCurrentForm = Screen.ActiveForm.Name If IsMissing(OpenArgs) Then DoCmd.OpenForm NewFormName, acNormal, , , , acWindowNormal Else DoCmd.OpenForm NewFormName, acNormal, , , , acWindowNormal, OpenArgs End If DoEvents DoEvents If Not CurrentProject.AllForms(NewFormName).IsLoaded Then MsgBox "فشل فتح النموذج: " & NewFormName, _ vbCritical Or vbMsgBoxRight Or vbMsgBoxRtlReading LogError "SwitchToForm", "Failed to load form: " & NewFormName Exit Sub End If With Forms(NewFormName) .Visible = True .SetFocus .Repaint End With If Not m_IsHidden Then If IsFormPopup(NewFormName) Then HideAccessFrame End If End If If IsFormOpen(sCurrentForm) Then DoCmd.Close acForm, sCurrentForm, acSaveNo End If Exit Sub ErrHandler: LogError "SwitchToForm", Err.Number & " - " & Err.Description If m_IsHidden Then ShowAccessFrame LogError "SwitchToForm", "Frame force-restored due to error." End If MsgBox "خطأ أثناء التبديل: " & Err.Description, vbCritical Or vbMsgBoxRight Or vbMsgBoxRtlReading End Sub الان اضفنا دالة للتحقق من الخاصية وبعض الدوال المساعدة والاهم اضفنا الدالة : SwitchToForm وظيفتها التنقل بين النماذج بسهولة والتبديل بينهم سواء كان فى الوضع العادى بدون: OpenArgs او باستخدام : OpenArgs ويتم استخدامها بالشكل التالى بدون OpenArgs ' بدون OpenArgs SwitchToForm "frmMain" ويتم استخدامها مع OpenArgs بالشكل التالى ' مع OpenArgs SwitchToForm "frmDashboard", "UserID=5" ويتم استخدامها مع OpenArgs ان كان متعددا بالشكل التالى SwitchToForm "frmReport", Array("2024", "Monthly")
  15. الحقيقة أني قمت بإعداد نظام مستخدمين أستخدمه في تطبيقاتي من فترة طويلة 15 سنة أو أكثر ويقوم بكل الوظائف المذكورة هنا كمنح الصلاحيات على مستوى النموذج من حيث - السماح بفتح النموذج من عدمه - إذا سمح للمتستخدم بفتح النموذج فهل يسمح له ( بإضافة بيانات - تعديل البيانات - حذف البيانات ) ويمكن للمستخدم أن يحصل على واحدة أو أكثر من هذه الصلاحيات - فيما يخص التقارير بالوضع الحالي فهو إما يسمح للمستخدم بفتح التقارير ككل أو لايسمح له بفتح أي تقرير النظام في وضعه الحالي يلبي إحتياجاتي (بالحد الأدنى) وأكثر من مرة أفكر بتوسيعه بحيث يصبح أكثر كفاءة ولكني أتكاسل نظراً لأنه يحتاج وقتاً وجهداً (رفاهية محروم منها😔) من الأفكار التي أريد إضافتها - مثلاً في الوضع الحالي عند تحديد نوع المستخدم على أنه مسؤول فبناءً عليه سيحصل المستخدم على جميع الصلاحيات بالتبيعية وبدون إمكانية منع أي صلاحية عليه وهذا الشيئ سيكون مثالياً لمسؤول النظام ولكن سيكون من الأفضل أن يتم تحديد مستويين لفئة المسؤول (مسؤول رئيسي - مسؤول فرعي) المسؤول الرئيسي هو مسؤول النظام الذي سيكون معه جميع صلاحيات النظام والمسؤول الفرعي هو المسؤول على جزئية أو قسم داخل النظام . فمثلا لو كان لدينا نظام شركة بسيط فعند تحديد المستخدم كسؤول نظام سيكون لديه صلاحيات تعديل بيانات الشركة وإدارة المسؤلين والمستخدمين وصلاحياتهم على مستوى النظام ككل أم عند تحديد مستخدم كمسؤول مالي مثلا فيتم منحه جميع الصلاحيات في إطار (النماذج والتقارير المالية والمستخدمين القائمين بالوظائف المالية) وبالمثل للمسؤول الإداري ومسؤول الإنتاج وهكذا - الإضافة الثانية خاصة بالتقارير فكما ذكرت سابقاً فإن الوضع الحالي يمنح المستخدم صلاحية فتح التقارير ككل أو عدم إمكانية فتحها ككل وبرأيي يفضل إضافة خيار بأنه عند منح صلاحيات فتح التقارير قيمكن تحديد ماهي التقارير التي يمكن فتحها هل الكل أم تقارير معينة هذه هي الأفكار التي حبيت أشاركها معكم لعلها تكون أساس يمكن لأي أحد أن ينطلق منها أو إبداء الملاحظات عليها أو مشاركة أي أفكار إضافية . سأرى أذا كان بإمكاني تجهيز النظام الخاص بي (بوضعه الحالي) كتطبيق مستقل يسهل إستخدامه ورفعه ضمن هذا الموضوع مالم فسأحاول تجهيزه مع إضافة الوظائف الإضافية التي ذكرتها هنا وأرفعها كأداة ضمن سلسلة الأدوات المساعدة في مكتبة الموقع إن شاء الله تعالى ومن الله العون
  16. تم تعديل اختيار الإجابة للمشاركة الظاهرة في الموضوع .
  17. مهو لو تم ارفاق ملف مطبق عليه الحل بتاعك ، كان انت ريحت نفسك وريحت صاحب الطلب 😁
  18. كود داخل الوحدة النمطية Option Private Module Option Compare Database Option Explicit #If VBA7 Then Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As LongPtr, ByVal nIndex As Long) As Long Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare PtrSafe Function GetWindowRect Lib "user32" (ByVal hWnd As LongPtr, lpRect As WindowRect) As Long Private Declare PtrSafe Function MoveWindow Lib "user32" (ByVal hWnd As LongPtr, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long Private Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hWnd As LongPtr, ByVal nCmdShow As Long) As Long Private Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long #Else Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As WindowRect) As Long Private Declare Function MoveWindow Lib "user32" (ByVal hWnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long #End If Private Const GWL_EXSTYLE As Long = -20 Private Const WS_EX_APPWINDOW As Long = &H40000 Private Const SW_HIDE As Long = 0 Private Const SW_SHOWNORMAL As Long = 1 Private Const SW_SHOWNOACTIVATE As Long = 4 Private Const SM_CXVIRTUALSCREEN As Long = 78 Private Const SM_CYVIRTUALSCREEN As Long = 79 Private Type WindowRect LeftPos As Long TopPos As Long RightPos As Long BottomPos As Long End Type Private m_IsHidden As Boolean Private m_Rect As WindowRect Private m_StyleBackup As Long Public Sub HideAccessFrame() On Error GoTo ErrHandler If m_IsHidden Then Exit Sub #If VBA7 Then Dim hApp As LongPtr #Else Dim hApp As Long #End If hApp = Application.hWndAccessApp If hApp = 0 Then LogError "HideAccessFrame", "Could not obtain hWndAccessApp." Exit Sub End If If GetWindowRect(hApp, m_Rect) = 0 Then LogError "HideAccessFrame", "GetWindowRect failed." Exit Sub End If Dim lWidth As Long Dim lHeight As Long lWidth = m_Rect.RightPos - m_Rect.LeftPos lHeight = m_Rect.BottomPos - m_Rect.TopPos m_StyleBackup = GetWindowLong(hApp, GWL_EXSTYLE) Dim lNewStyle As Long lNewStyle = m_StyleBackup And Not WS_EX_APPWINDOW SetWindowLong hApp, GWL_EXSTYLE, lNewStyle Dim lOffscreenX As Long Dim lOffscreenY As Long lOffscreenX = GetSystemMetrics(SM_CXVIRTUALSCREEN) + 200 lOffscreenY = GetSystemMetrics(SM_CYVIRTUALSCREEN) + 200 ' rollback If MoveWindow(hApp, lOffscreenX, lOffscreenY, lWidth, lHeight, True) = 0 Then LogError "HideAccessFrame", "MoveWindow failed — rolling back style." SetWindowLong hApp, GWL_EXSTYLE, m_StyleBackup ShowWindow hApp, SW_SHOWNORMAL Exit Sub End If ShowWindow hApp, SW_HIDE ShowWindow hApp, SW_SHOWNOACTIVATE DoEvents m_IsHidden = True Exit Sub ErrHandler: LogError "HideAccessFrame", Err.Number & " - " & Err.Description End Sub Public Sub ShowAccessFrame() On Error GoTo ErrHandler If Not m_IsHidden Then Exit Sub #If VBA7 Then Dim hApp As LongPtr #Else Dim hApp As Long #End If hApp = Application.hWndAccessApp If hApp = 0 Then LogError "ShowAccessFrame", "Could not obtain hWndAccessApp." Exit Sub End If Dim lWidth As Long Dim lHeight As Long lWidth = m_Rect.RightPos - m_Rect.LeftPos lHeight = m_Rect.BottomPos - m_Rect.TopPos If MoveWindow(hApp, m_Rect.LeftPos, m_Rect.TopPos, lWidth, lHeight, True) = 0 Then LogError "ShowAccessFrame", "MoveWindow failed — frame may be offscreen." Exit Sub End If SetWindowLong hApp, GWL_EXSTYLE, m_StyleBackup ShowWindow hApp, SW_SHOWNORMAL m_IsHidden = False Exit Sub ErrHandler: LogError "ShowAccessFrame", Err.Number & " - " & Err.Description End Sub Public Function IsAccessHidden() As Boolean IsAccessHidden = m_IsHidden End Function Private Sub LogError(ByVal sSource As String, ByVal sMessage As String) Dim sEntry As String sEntry = "[" & Format(Now, "yyyy-mm-dd hh:nn:ss") & "] " & "modWindowManager." & sSource & " >> " & sMessage Debug.Print sEntry End Sub وفى النموذج فى حدث التحميل HideAccessFrame ولو اردت عمل زر امر لاستعادة الاطار مرة أخرى يكفى فقط استخدام ShowAccessFrame
  19. فعلا اللى انت بتقولة صح مع الاصدارات الحديثة فى الاكسس والويندوز كمان انتظر جارى تجهيز الكود ابشر
  20. ممكن اقتراح ياجو خلي الترقيم حسب السنة والشهر والرقم (001-01-2026) بكده بيكون لديك حقل واحد للترقيم بدلاً من 3 حقول وايضاً ممكن الرقم يكون رقم (PCode) هل تريد ذلك ؟ أم كما انت . وافني بالرد بما تريد .
  21. لالا يا أخي الكريم لن ولم استطع أن أوفي حقك هذا خطأ مني يا أخي أنا آسف ماذا أفعل لكي أعطي حضرتك تمت الإجابة ؟؟ كده تمام
  22. يعني بعد تعبي ومجهودي تضع تمت الاجابه لديك !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  23. السلام عليكم اتفضل اخي العزيز عند تحديث Esal ضع الكود التالي If Me.Esal = 0 Then Me.NO = Me.NO + 1 End If عندما يصل esal الى 999 يكون عند الرقم 000 no=56 وكلما يصل الى 000 يزيد 1 مع القدير
  24. شكرا أخي الكريم أنا طبقت الكود كما هو علي الملف تبعي ولكن بعد فتح النموذج تختفي قاعدة البيانات
  1. أظهر المزيد
×
×
  • اضف...

Important Information