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

Foksh

الخبراء
  • Posts

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

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

  • Days Won

    128

كل منشورات العضو Foksh

  1. ما شاء الله ، تبين أن في المنتدى مبدعون لا نراهم في الساحة كثيراً ، إلا أن بصماتهم تبقى لامعة كأسمائهم أخي @بحار الاكسس 🥰
  2. أشكرك استاذه حنان على مشاركتك فكرتي المتواضعة ، وباعتقادي يوجد حل طبعاً لتساؤلاتك ، اشوف حل واتابع معك مع العلم أنه لا يمكن حفظ القيم الجديدة في متغير ( زي ما حضرتك عارفة أكيد ) ، وإنما سيكون هناك مكان يتم فيه حفظ مواضع العناصر ( وهذا لا شك فيه ) وأعتقد انها جداول النظام ، أو التعديل في خصائص العناصر في وضع العرض للنموذج وليس عرض التصميم!! 🤗
  3. لا شكر على واجب اخي الكريم @شريف كونكت .. في أقرب فرصة إن شاء الله اليوم نوصل لحل في التقرير عند وضع الطباعة 🤗
  4. نرجو الإهتمام بالعنوان ليمثل وصف المشكلة وذلك إلتزاماً بقواعد المنتدى لتلافي إغلاق المواضيع.
  5. هو فعلاً انا لاحظت بالبطئ الذي ذكرته ، ولكن هذا ما خطر ببالي بناءً على تصميمك لطريقة عرض البيانات في النموذج الفرعي !! اذا أتيت بفكرة أخرى سأتابع معك ، والباب للمشاركات مفتوح على مصراعيه
  6. لم اقم بالتجربة على التقارير فعلاً كونك لم تأتي بتحديد التقارير ، ولكن جرب انت واخبرنا بالنتيجة ، وأنا سأقوم بالتجربة غداً أيضاً ، وإن لم يتم الامر على التقارير سنقوم باللازم.
  7. أخي الفاضل @jo_2010 .. لدي فكرة ، جربها وأخبرني بالنتيجة في حدث بعد التحديث للكومبوبوكس S_Tests استخدم هذا الكود للفلترة :- Private Sub S_Tests_AfterUpdate() Dim strFilter As String If IsNull(Me.S_Tests) Then strFilter = "" Else strFilter = "[Requests] Like '*" & Me.S_Tests & "*'" End If Me.Search_Sub.Form.Filter = strFilter Me.Search_Sub.Form.FilterOn = True Me.Search_Sub.Requery End Sub وفي حدث عند التحميل للنموذج استخدم الغاء فلترة النموذج الفرعي :- Private Sub Form_Load() Me.Search_Sub.Form.Filter = "" Me.Search_Sub.Form.FilterOn = False End Sub وهذا الملف بعد التعديل :- Laboratory_2024.accdb
  8. يا صفاء ، الفورم الأول الحدث بعد التحديث ، الفورم التاني الحدث عند التغيير لقيمة مربعات النص الغير منضمة ،، وبالنبة للنقطة التانية ، غيري نوع المتغير Integer إلى Double . جربي واديني خبر
  9. أنا مش فاهم ايه اللي انتي عايزاه بالظبط 😅 !!!!!! تقدري تخفيهم وتخلي مقاساتهم 0 ( طول وعرض ) . وعلى فكره ، الطريقتين شغالات ولكن كل وحدة في حدث مختلف 😁
  10. على العموم ، من خلال تجربة سابقة لي في أحد برامجي ، جرب هذه الفكرة التي تتيح لك اختيار العنصر الذي تريد تحريكه ( مربع نص ، زر ، كومبوبوكس ) .... إلخ . بدايةً سنقوم بإنشاء مديول عام ولنفترض اسمه Drag_Drop وسيحتوي على هذا الكود البسيط :- Option Compare Database Option Explicit Public DragControl As Control Public XOffset As Single Public YOffset As Single Public Sub StartDrag(ctrl As Control, X As Single, Y As Single) Set DragControl = ctrl XOffset = X YOffset = Y End Sub Public Sub Dragging(X As Single, Y As Single) If Not DragControl Is Nothing Then DragControl.Left = DragControl.Left + (X - XOffset) DragControl.Top = DragControl.Top + (Y - YOffset) End If End Sub Public Sub EndDrag() Set DragControl = Nothing End Sub للتوضيح والشرح للمديول :- المتغير DragControl هو متغير من نوع Control يتم فيه تخزين العنصر الذي يتم سحبه حاليًا . المتغيران XOffset و YOffset هما من نوع Single وظيفتهما تخزن إحداثيات الماوس عند بداية عملية السحب . الدالة StartDrag التي ستعيد بدء عملية السحب للعنصر المحدد . حيث أنها تستقبل ثلاث معاملات [ ctrl (العنصر الذي يتم سحبه)، X و Y (إحداثيات الماوس في نقطة النقر) ] . الدالة Dragging التي تستخدم أثناء جر العنصر . حيث ستقوم بتحديث موقع DragControl (العنصر المحدد للسحب) بناءً على إحداثيات الماوس الحالية . وستستخدم XOffset و YOffset لضمان تحديث العنصر بالشكل الصحيح مع تحريك الماوس . الدالة EndDrag التي سوف تنهي عملية السحب بتفريغ قيمة DragControl ، مما يعني أنه لم يعد هناك عنصر يتم تحريكه . سنحتاج الجدول ControlPositions يتم تخزين قيم الموقع والإحداثيات لكل عنصر داخل أي نموذج . وسنحتاج إلى الحقول التالية ( ID و FormName و ControlName و ControlLeft و ControlTop ) . وهي بعد الحقل ID ترقيم تلقائي ( حقل لإسم النموذج ، وحقل لاسم العنصر داخل هذا النموذج ، وحقلين للإحداثيات ( اليسار والأعلى ) لكل عنصر . الآن في النموذج الذي سيتم التنفيذ عليه ؛ نقوم بوضع هذه الأكواد ( حجز المتغيرات والثوابت ، والإحداث عن الاغلاق والفتح ، والتحريك للماوس ) للنموذج فقط .. Option Compare Database Option Explicit Public DragControl As Control Public XOffset As Single Public YOffset As Single Public Sub StartDrag(ctrl As Control, X As Single, Y As Single) Set DragControl = ctrl XOffset = X YOffset = Y End Sub Public Sub Dragging(X As Single, Y As Single) If Not DragControl Is Nothing Then DragControl.Left = DragControl.Left + (X - XOffset) DragControl.Top = DragControl.Top + (Y - YOffset) UpdateControlPosition DragControl End If End Sub Public Sub EndDrag() Set DragControl = Nothing End Sub Private Sub Form_Load() Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim ctrl As Control Set db = CurrentDb Set rs = db.OpenRecordset("ControlPositions", dbOpenDynaset) Do While Not rs.EOF For Each ctrl In Me.Controls If ctrl.Name = rs!ControlName Then ctrl.Left = rs!ControlLeft ctrl.Top = rs!ControlTop Exit For End If Next ctrl rs.MoveNext Loop rs.Close Set rs = Nothing Set db = Nothing End Sub Private Sub Form_Close() Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim ctrl As Control Set db = CurrentDb Set rs = db.OpenRecordset("ControlPositions", dbOpenDynaset) strSQL = "DELETE * FROM ControlPositions WHERE FormName='" & Me.Name & "'" db.Execute strSQL, dbFailOnError For Each ctrl In Me.Controls If TypeOf ctrl Is Control Then strSQL = "INSERT INTO ControlPositions (FormName, ControlName, ControlLeft, ControlTop) " & _ "VALUES ('" & Me.Name & "', '" & ctrl.Name & "', " & ctrl.Left & ", " & ctrl.Top & ")" db.Execute strSQL, dbFailOnError End If Next ctrl rs.Close Set rs = Nothing Set db = Nothing End Sub Private Sub UpdateControlPosition(ctrl As Control) Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Set db = CurrentDb Set rs = db.OpenRecordset("ControlPositions", dbOpenDynaset) strSQL = "SELECT * FROM ControlPositions WHERE FormName = '" & Me.Name & "' AND ControlName = '" & ctrl.Name & "'" If Not rs.EOF Then rs.Edit rs.Fields("ControlLeft").Value = ctrl.Left rs.Fields("ControlTop").Value = ctrl.Top rs.Update Else rs.AddNew rs.Fields("FormName").Value = Me.Name rs.Fields("ControlName").Value = ctrl.Name rs.Fields("ControlLeft").Value = ctrl.Left rs.Fields("ControlTop").Value = ctrl.Top rs.Update End If rs.Close Set rs = Nothing Set db = Nothing End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Not Me.ActiveControl Is Nothing Then StartDrag Me.ActiveControl, X, Y End If End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Dragging X, Y End If End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) EndDrag End Sub الآن نأتي للأحداث الخاصة بالعناصر التي نرغب في منح المستخدم حرية تغيير مواقعها . وسأبدأ بالتنفيذ على ( مربع نص TextBox1 و زر Command10 ) فقط ، والباقي مجرد تكرار مع تغيير الأسماء للعناصر . Private Sub TextBox1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Form_MouseDown Button, Shift, X, Y End Sub Private Sub TextBox1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Form_MouseMove Button, Shift, X, Y End Sub Private Sub TextBox1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Form_MouseUp Button, Shift, X, Y End Sub Private Sub Command10_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Form_MouseDown Button, Shift, X, Y End Sub Private Sub Command10_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Form_MouseMove Button, Shift, X, Y End Sub Private Sub Command10_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Form_MouseUp Button, Shift, X, Y UpdateControlPosition Me.ActiveControl End Sub وهذا المرفق تنفيذ ما تم شرحه سابقاً Move And Drops.accdb
  11. أخي شريف ، عندك كود !!! أين الكود ؟؟؟؟؟؟ المرفق السابق ملف MDE أي لا يمكن الوصول إلى الأكواد أو طريقة عرض التصميم !!!!!!!!!!!! وإذا كان المقصد من كلمة متشفرة = محمية بكلمة مرور فهذا شيء آخر يختلف عن ملف مقفل Accde أو MDE . على العموم انت تريد موضوع جديد من البداية وليس تعديل على الكود لعدم وجوده أساساً . بالنسبة لي سأرى ما يمكن فعله وأتابع معك في هذه الفكرة
  12. عندك طريقتين للحل ، اختاري اللي يعجبك calc.accdb
  13. بدايةً ارجو منك اخي الكريم @شريف كونكت الإلتزام بقوانين المنتدى ومن ضمنها وصف المشكلة في العنوان ، ثم ارفاق ملف حتى لو الكود مشفر 🤗
  14. الجملتين عكس بعض يا @safaa salem5 وليه تلزمي نفسك بالحدث عند التغيير ؟؟؟ مجرد فكرة ، جربي الحدث بعد التحديث للحقلين Private Sub volume_AfterUpdate() Me.total = Nz(Me.volume, 0) * Nz(Me.conc, 1) End Sub Private Sub conc_AfterUpdate() Me.total = Nz(Me.volume, 0) * Nz(Me.conc, 1) End Sub مجرد فكرة 😅
  15. أهلاً وسهلاً بك اخي الكريم @feth بداية للتفريق بين الباركود ، ورمز الإستجابة السريعة QR . باعتقادي أن الباركود لن يحمل كمية الحروف والأرقام التي ستكون في الفاتورة ، على عكس رمز الـ QR وسبب هذه الملاحظة هو انني استخدمت رمز الـ QR في أحد برامجي ( نظام الحضور والإنصراف ). على العموم حالياً لست أمام جهاز كمبيوتر ولكن تنفيذ فكرتك بإذن الله أمر بسيط.
  16. نعم صحيح ، فعلاً لا أحد يعلم ما الفائدة التي ينتظرها صاحب الموضوع من اخفاء هذا التنبيه وليس الفائدة من مربع الحوار ( رسالة جاري الطباعة ) 😁 فعلاً الويندوز سيحتاج لفرض صلاحيات من المستخدم ليتم تنفيذ أحد الطلبات التي تختص بنظام الويندوز ..
  17. شكراً لك أخي الحبيب @ahmed draz على لطفك وكلماتك الطيبة .. المنتدى عامر بالمحبة الموصولة بين أعضائه 🥰 . ونتمنى أن نكون عند حسن الظن 💐
  18. ما الهدف من الفكرة المطلوبة ؟؟
  19. اخي الغالي ، لا حاجة لاختيار افضل اجابة إلا اذا حصلت على الحل لمشكلتك .. حسناً لنوسع الفكرة بشكل أوسع ، سنتعامل مع مكتبة API لتعطيل رسائل النظام . أولاً انشاء مديول جديد وسنضع به هذا الكود البسيط ( يعمل على النواتين 32 و 64 ) :- Option Compare Database Option Explicit #If VBA7 Then ' 64-bit declarations Private Declare PtrSafe Function LockWindowUpdate Lib "user32" (ByVal hwndLock As LongPtr) As Long #Else ' 32-bit declarations Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long #End If Sub DisableScreenUpdates() LockWindowUpdate Application.hWndAccessApp End Sub Sub EnableScreenUpdates() LockWindowUpdate 0 End Sub ثم عند حدث الطباعة نستدعيه بهذا الشكل :- DisableScreenUpdates DoCmd.OpenReport "اسم_التقرير", acViewNormal EnableScreenUpdates أيضاً قيد التجربة لأني لا املك طابعة في الوقت الحالي
  20. ليس هناك اي احراج اخي الكريم @Zooro1 أبداً ,, في الواقع انا شاركت من عند الموضوع اللي بيتكلم عن وقت محدد اذا لم يتم تحريك الماوس فيه يتم اغلاق النموذج أو اظهار رسالة وانت تعدل حسب حاجتك للحدث عند انقضاء الوقت ، أما موضوع الصور ده فهو لم يظهر عندي من الأساس ولا اقم بمتابعته للأسف .. أما موضوع اخفاء العناصر في النموذج سهل جداً . في الكود اللي ارسلته لك في حدث عند التحميل سيتم فحص الجدول الذي أشرت اليه اذا كان هناك اي سجلات فيتم اظهار العناصر في النموذج الحالي . واذا لم يكون هناك اي سجلات ( الجدول فارغ ) فيتم اخفاء جميع العناصر في الجدول . admin.accdb جرب احذف سجلات الجدول وارجع افتح النموذج وشوف
  21. لا جعل الله ختلافاً فيما بيننا لا على صغيرة ولا كبيرة
  22. أخي الكريم @الوااااثق ، بدايةً أهلاً وسهلاً بك في عالمنا المتواضع في هذا المنتدى . ثانياً حتى لو امكانياتك بسيطة في الآكسيس فلا بد لك من وضع حجر الأساس في مشروعك بإنشائك للجداول على الأقل . وللتوجيه من وجهة نظري اتبع ما يلي :- الإبتعاد عن تسمية الحقول بمسميات عربية أثناء تصميم الجداول . لا تستخدم رموز مثل ( $ و % و # و @ ..... الخ ) أو مسافات في أسماء الحقول كمثال ( Student Name ) فالأفضل لك كمثال إما ( Student_Name ) أو ( StudentName ) لا تستخدم أسماء للحقول في الجدول تكون من الثوابت في لغات البرمجة مثل ( Name , Date , From , To ) .... الخ لأنها ستجعل العمل مربك أثناء كتابتك للإستعلامات أو الأكواد . اهتم بأنواع الحقول ( رقمي ، نصي ، تاريخ ، ترقيم تلقائي ... الخ ) بشكل سليم أثناء التصميم . يجب ان يكون لديك حقل مفتاح أساسي أو غير مكرر ليسهل لك ربط الجداول والسجلات ببعضها البعض . ثالثاً ستجد جميع في المنتدى ( حسب وقتهم طبعاً ) قد ساعدك ولو بمعلومة بسيطة تكون لك حل لمشكلة أو جواباً لتساؤلاتك .
×
×
  • اضف...

Important Information