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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. السلام عليكم 🙂 اخي الفاضل canary2522 ، في المرات القادمة ، رجاء مراعاة قوانين المنتدى : اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة و بصفة خاصة نؤكدعلى ما يلي 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف جعفر
  2. اخي قاسم 🙂 جميع المشاركات اعلاه ترد على سؤالك ، رجاء اخبرنا الخطوات التي لم تستطع القيام بها ، حتى نستطيع مساعدتك 🙂 جعفر
  3. وعليكم السلام 🙂 اخي بلال ، لا توجد بيانات كافية لطلبك ، انت تطلب منا ان نخمن ، ولما نعطيك الاجابة ستقوم باعطاء معلومات اكثر علشان توصل للحل الذي في بالك !! الاستعلام هذا يقوم بالعمل ، وتلاحظ اني استعملت حقل "الموسم المدرسي" كمعيار ، فيجب عليك بعد اضافة البيانات ، باضافة حقل المكان او المدرسة كمعيار آخر يشير الى مربع التحرير والسرد في النموذج ، . حاليا وضعت الكود التالي على حدث "تحميل النموذج" ، ولكن عليك وضع الكود على حدث "بعد تحديث" مربع التحرير والسرد ، واكمال بقية الحقول (طبعا بعد ان تضيفها للاستعلام) : Private Sub Form_Load() Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("Select * From qry_Sums") rst.MoveFirst Me.Male = rst!Male Me.Female = rst!Female Me.Certificate_L = rst!Certificate_L Me.Certificate_M = rst!Certificate_M rst.Close: Set rst = Nothing End Sub . والنتيجة . جعفر 1437.موسسة1.accdb.zip
  4. السلام عليكم 🙂 انا متابع الموضوع من البداية ، ونصيحة الاخوان في مكانها ، وبقية النصائح هنا: . كما عندي هذه الملاحظات في الكود: 1. لا تستخدم On Error Resume Next إلا في حالات جدا خاصة ، وانما استعمل رقم الخطأ وتعامل معاه: Private Sub Form_Load() On Error GoTo err_Form_Load Me.TNO.SetFocus DoCmd.FindRecord Forms!FRM_01!TNO, , , , , , True No_FRM: 'continue code here Exit_Form_Load: Exit Sub err_Form_Load: If Err.Number = 1234 Then 'ignore, Resume Next ElseIf Err.Number = 2145 Then 'ignore, No proper value from incoming Form Resume No_FRM Else MsgBox Err.Number & vbCrLf & Err.Description Resume Exit_Form_Load End If End Sub . 2. ولو انك تقدر تستخدم فلتر النموذج هكذا : myCriteria = "" myCriteria = myCriteria & "(" myCriteria = myCriteria & "[BRANDS]= '" & Me.cmbBRANDS.Column(1) & "'" myCriteria = myCriteria & ")" Debug.Print myCriteria Me.Filter = myCriteria Me.FilterOn = True . وهذه نصائح على استعماله: . ولكني انصحك بإستخدام فلتر النموذج عن طريق الاستعلام : . 3. لا تستخدم Dim بدون ان تُعرّف نوع المتغير ، يعني اذا استخدمت (Dim i) فهذا معناه Dim i as Variant 4. لما تستعمل الامر Set rs = CurrentDb.OpenRecordset ، فإنك تضع جميع البيانات الجدول/الاستعلام في ذاكرة الكمبيوتر Ram ، فيجب عليك حذف هذه البيانات في نهاية الكود ، هكذا: rst.close: set rs = nothing جعفر
  5. وعليكم السلام ورحمة الله وبركاته القاعدة تقول: استعمل اصغر (اقدم) نسخة في صنع البرنامج ، فلن تحصل على مشاكل في النسخ الاحدث ، والسبب ، ان النسخ الاحدث يكون فيها اضافات وميزات غير موجودة في النسخ الاقدم. انصحك بقراءة هذا الموضوع ، فقد ناقشنا فيه الكثير : جعفر
  6. السلام عليكم 🙂 يمكن متابعة الموضوع من موقع مايكروسوفت مباشرة: https://support.microsoft.com/en-us/office/error-in-access-when-opening-a-database-on-a-network-file-share-6cbc1560-62c2-46e7-9980-d079a46f5acc او من المنتدى الذي تشارك به مايكروسوفت: https://answers.microsoft.com/en-us/msoffice/forum/all/lock-file-problems-with-access-1601380121086/9cb70637-7d21-4e1e-941e-11b1c9e217c6 او من الموقع الذي يتابع الموقعين اعلاه ويعطيك الخلاصة: https://www.devhut.net/access-lock-file-issues/ حسب آخر المعلومات الموجودة: التحديثات اللي عملت المشكلة هي : KB5002104 for Office 2013 KB5002099 for Office 2016 Office 2019 Version 1808, build 10381.20020 revert to 10380.20037 Office LTSC 2021 Version 2108, build 14332.20204 revert to 14332.20176 and for Microsoft365 users, the build numbers of concern are: Current Channel Version 2111, build 14701.20248 revert to 14701.20226 Monthly Enterprise Channel Version 2110, build 14527.20340 revert to 14430.20342 Monthly Enterprise Channel Version 2109, build 14430.20380 revert to 14430.20342 Semi-Annual Enterprise Channel (Preview) Version 2108, build 14326.20692 revert to 14326.20600 Semi-Annual Enterprise Channel Version 2102, build 13801.21086 revert to 13801.21050 Semi-Annual Enterprise Channel Version 2008, build 13127.21842 revert to 13801.21050 . التحديثات التي عملت المشكلة ، هي للاوفيس وليست للوندوز ، ولدينا الحلول التالية: هناك تحديث صدر . ولكن التحديث اصلح الاوفيس 2019 فقط ، ولا تزال المشكلة في الاصدارات التالية: الاوفيس 2013 ، الاوفيس 2016 MSI ، الاوفيس LTSC 2021 فإذا كنت من اصحاب الوندوز التي تنتظر تحديث آخر يحل المشكلة ، يمكنك عمل التالي للتخلص من المشكلة: قم بإزالت وحذف هذه التحديثات ، هكذا : https://docs.microsoft.com/en-us/office/troubleshoot/installation/ability-to-uninstall-office بالنسبة لمسار قاعدة البيانات الخلفية (الجداول) ، استخدم اسم مسارها ولا تختصره بحرف ، يعني استعمل Server_01\myDB\ABC.accd\\ ، ولا تستعمل الاختصار z:\myDB\ABC.accd ، اوقف تحديثات الوندوز ، لأنك لو لم توقفها ، فسيقوم الوندوز بتنصيب هذه التحديثات مرة اخرة ، وتحصل لك المشكلة مرة اخرى. او قمت بإزالت الاوفيس ، وتركيب الاوفيس 2019 (الافيس 2010 لم يتأثر بالتحديث ، لأن التحديث لا يخصه). رجاء من الاخوة الذين يعانون من هذه المشكلة ، ان يخبرونا بالجديد ، حتى يستفيد الجميع 🙂 جعفر
  7. 1. استخدامي الامر Len طريقتي في التعرف على ان المتغير: my_info المتغير ليس فاضي my_info = "" وليس فيه قيمة isNull(my_info)= true يعني بدل if my_info="" or isnull(my_info)= true then استعمل if len(my_info & "")=0 then . 2. لماذا استخدمت if لما الكود يقرأ الدالة لأول مرة ، فقيمة المتغير my_info هو "" (لأننا اعلنا ان string ، بينما لو كان المتغير رقم / مثل integer او Double او .. فتكون قيمته 0) ، فيقوم الكود بالذهاب الى الجدول مرتين (مرة لكل Dlookup) (مع انك تستطيع الذهاب الى الجدول مرة واحدة وقراءة قيمة الحقلين مرة واحدة ) ، ولما تقرأ الدالة مرات اخرى ، فيقوم الكود بالذهاب الى الجدول مرتين ، بينما لما استخدمت الامر if في الدالة ، فالدالة لما تجد ان المتغير my_info فيه قيمة (اي انه ذهب للجدول سابقا واحضر القيمتين) ، فلا تذهب للجدول ، وانما تعطي/تظهر القيمة مباشرة 🙂 جعفر
  8. ولا يهمك ، تفضل Private Sub b_emp_add_Click() On Error Resume Next If Forms![LoginFourm]![Delete] = 0 Then MsgBox خطأ .. ليس لديك صلاحيات اصدار أذن", 0 + 16 + 1048576", fMy_Msgs Else DoCmd.OpenForm "Permission_add", , , , acFormAdd End If End Sub . والدالة option comapre database option explicit dim my_info as string public function fMy_Msgs() as string if len(my_info & "")=0 then my_info = DLookup("[name_pro]", "[info]") & " | " & DLookup("[Version_pro]", "[info]") end if fMy_Msgs = my_info end function جعفر
  9. وعليكم السلام 🙂 1. بهذه الطريقة ننادي الدالة fMy_Msgs لتعطينا الرسالة : Private Sub b_emp_add_Click() On Error Resume Next If Forms![LoginFourm]![Delete] = 0 Then call fMy_Msgs Else DoCmd.OpenForm "Permission_add", , , , acFormAdd End If End Sub 2. اعمل وحدة نمطية جديدة ، واعطيها اسم mod_My_Msgs مثلا (ولكن لا تحفظها باسم fMy_Msgs ، لأن هذا اسم الدالة) : option comapre database option explicit dim my_info as string public function fMy_Msgs() if len(my_info & "")=0 then my_info = DLookup("[name_pro]", "[info]") & " | " & DLookup("[Version_pro]", "[info]") end if MsgBox "خطأ .. ليس لديك صلاحيات اصدار أذن", 0 + 16 + 1048576, my_info end function . جعفر
  10. السلام عليكم 🙂 نعم هذه هي الطريقة الصحيحة ، ولا انصح ابدا بإستخدام On Error Resume Next إلا في حالات جدا ضيقة 🙂 بالنسبة لعملك ، فخذ الطريقة التي تريحك 🙂 وطبيعي ان الكمبيوتر يحتاج وقت لمعالجة كل سطر في الكود ، والوقت يعتمد على الامر الموجود في ذلك السطر ، وفي معظم الاحيان هذا الوقت جدا تافه ولا نعيره اهتماما ، خصوصا في الكمبيوترات الجديدة 🙂 اما الطريقة الاولى ، OpenArgs ، فلا يعرف الكثير من المبرمجين عنها ، والكثير من الذين يعرفون ، لا يعرفون بأن بامكانهم ارسال اكثر من معلومة بها 🙂 جعفر
  11. اعتقد هذا اللي تبحث عنه : استعمل هذا الكود بدل الموجود عندك: Private Sub تفصيل_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo err_Form_MouseMove Try_Again: '... Me.a1.Visible = False Me.a2.Visible = False Me.a3.Visible = False Me.a4.Visible = False Me.A5.Visible = False Me.a6.Visible = False Me.a7.Visible = False Me.a8.Visible = False Me.a9.Visible = False '... Exit_Form_MouseMove: Exit Sub err_Form_MouseMove: If Err.Number = 2165 Then 'set focus on another element, then hide it Me.b9.SetFocus Resume Try_Again Else MsgBox Err.Number & vbCrLf & Err.Description Resume Exit_Form_MouseMove End If End Sub . ولازلت انصحك بالمشاركة التي اشرت لك عليها 🙂 جعفر
  12. لقيت النموذج 🙂 انصحك بإستخدام القوائم المنسدلة في هذه المشاركة ، والتي قام بها اخونا @Moosak : . فهي مشابهه لطريقة عرض قوائمك ، وخفيفة على البرنامج (بدل 9 نماذج فرعية) 🙂 جعفر
  13. رجاء ، لما تريد ان تضع الكود في مشاركتك ، 1. انقر على هذا الزر : . 2. الصق الكود هنا ، واعمل عليه التغيير الذي تحب : . نعود الى موضوغك: رجاء ارفاق الجزئية من برنامجك الذي فيه مشكلة 🙂 جعفر
  14. همممم ، طريقتك توقف عمل جميع الرسائل التحذيرية في الكود ، بينما انا اعطيتك الطريقة الصحيحة في التغلب على الرسالة بالذات !! 1. لم اجد كود اغلاق النموذج ، 2. قد يكون هناك رسالة تحذيرية اخرى في النموذج ، ولكنها لا تظهر بسبب استخدامك السطر اعلاه لإيقاف جميع الرسائل !! جعفر
  15. اعمل زر في النموذج الرئيسي ، . ثم ضع الكود التالي على حدث "النقر" : Private Sub cmd_Delete_Click() Me.Subform.SetFocus 'if the cursor is on a New Record, Exit If Me.Subform.Form.NewRecord = True Then Exit Sub DoCmd.SetWarnings False DoCmd.RunCommand acCmdDeleteRecord DoCmd.SetWarnings True 'ReSeq the Child Numbers Call ReSeq End Sub Sub ReSeq() Dim rst As DAO.Recordset Dim i As Integer Set rst = Me.Subform.Form.RecordsetClone rst.MoveFirst Do Until rst.EOF i = i + 1 rst.Edit rst!Childern_ID = i rst.Update rst.MoveNext Loop End Sub جعفر 1433.Delete_SubForm_Record_n_ReSeq.accdb.zip
  16. سؤال: ايش بتعمل في الصور ، هل هي للعرض فقط ، او تريد تستعملهم لشيء آخر ؟ جعفر
  17. انا اعطيتك الحل ، بينما السؤال هو: ما سبب ظهور رسالة تحديث السجلات؟ فالجواب ان اكسس يحذر المستخدم في حالة استعلام: الحاق ، تحديث ، حذف ، وعليه عندنا الطرق التالية لتفادي رسائل التحديث هذه: 1. نطلب من الاكسس ايقاف جميع الرسائل التحذيرية ، ثم نشغيل الاستعلام ، ثم نطلب من الاكسس اعطاء الرسائل التحذيرية (طبعا الرسائل بعد تنفيذ الاستعلام) : . 2. نستخدم الامر التنفيذي (وهذا لن يفتح الاستعلام ، وانما يشغله بشكل صامت) : currentdb.execute ("اسم الاستعلام") . 3. الغاء علامة الصح هنا : . . جعفر
  18. لما يكون النموذج في وضع Dialog (مو منبثق Popup) فيكون مثل نافذة رسائل الاكسس: بحيث لا تستطيع ان تستخدم اي من كائنات قاعدة البيانات ، غير الموجودة في نافذة الرسالة ، يتوقف الكود عند هذا السطر ولا يتحرك للسطر التالي إلا بعد اغلاق النافذة. لهذا السبب يجب عدم استخدام هذه الخاصية (النماذج) إلا في حالات جدا خاصة. الطريقة الاولى: لحل هذه المشكلة ، يجب علينا ارسال جميع المعلومات المطلوبة ، ضمن امر فتح النموذج FRM2 ، ويمكننا عمل هذا عن طريق المتغير OpenArgs الموجود كآخر متغير في امر فتح النموذج ، فيكون الكود: Private Sub Frm2_Click() 'since we open the Form in a Dialog mode, 'we cannot send any further lines of code until the Form is closed 'so while opening the Form, we will send further info in "OpenArgs" variable 'so that when Form 2 is open, we can process this data there. 'Coming from:FRM1, setfocus field:TNO, TNO value: me.TNO DoCmd.OpenForm "FRM2", acNormal, , , , acDialog, "FRM1|TNO|" & Me.TNO End Sub . وفي حدث "تحميل" النموذج FRM2 ، نطلب منه تحليل هذه المعلومة ، والقيام بالمطلوب : Private Sub Form_Load() On Error GoTo err_Form_Load If IsNull(Me.OpenArgs) Then GoTo No_OpenArgs Dim x() As String 'OpenArgs info: 'Coming from:FRM1 'setfocus field:TNO 'TNO value: me.TNO If Split(Me.OpenArgs, "|")(0) = "FRM1" Then x = Split(Me.OpenArgs, "|") Me(x(1)).SetFocus DoCmd.FindRecord x(2), , , , , , True End If No_OpenArgs: 'continue code here Exit_Form_Load: Exit Sub err_Form_Load: If Err.Number = 2142 Or Err.Number = 94 Or Err.Number = 9 Then 'ignore, No proper value from OpenArgs Resume No_OpenArgs Else MsgBox Err.Number & vbCrLf & Err.Description Resume Exit_Form_Load End If End Sub . الطريقة الثانية: Private Sub Frm2_Click() DoCmd.OpenForm "FRM_02", acNormal, , , , acDialog End Sub . وفي حدث "تحميل" النموذج FRM2 ، Private Sub Form_Load() On Error GoTo err_Form_Load Me.TNO.SetFocus DoCmd.FindRecord Forms!FRM_01!TNO, , , , , , True No_FRM: 'continue code here Exit_Form_Load: Exit Sub err_Form_Load: If Err.Number = 2145 Then 'ignore, No proper value from incoming Form Resume No_FRM Else MsgBox Err.Number & vbCrLf & Err.Description Resume Exit_Form_Load End If End Sub . جعفر
  19. وعليكم السلام 🙂 وانا ادلو بدلوي : DoCmd.OpenForm "frm_03" Forms!frm_03!Id.SetFocus 'لست بحاجة الى هذا السطر DoCmd.FindRecord Me.Id, , , , , , True . الطريقة : كأنك فتحت النموذج الآخر وعملت Ctl+F ، فعندك جميع الاعدادات في نافذة البحث ، في السطر الاخير من الكود 🙂 جعفر
  20. انت تريد ان تخفي كائن/كائنات في النموذج ، لذا ، يجب ان تجعل التركيز على كائن/حقل/زر آخر ، ثم يمكنك ان تجعل الكائن مخفي 🙂 وبعض الاوقات ما تهمك رسالة الخطأ ، لأن الفأرة تكون على جميع انواع الكائنات ، فالنموذج عندك يعمل بطريقة صحيحة ، ولا تريد هذه الرسالة ، لذا يجب ان تصطاد هذه الرسالة ، وتخبر الكود بالمواصلة ، شيء من هذا القبيل: Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo err_Form_MouseMove '... 'the code '... Exit_Form_MouseMove: Exit Sub err_Form_MouseMove: If Err.Number = 2165 Then 'ignore Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description Resume Exit_Form_MouseMove End If End Sub جعفر
  21. بدل العلاقة بين الجدولين ، انا عملت العلاقة بين النموذج الرئيسي والفرعي ، ولكن ، تفضل . واضفت حقل لتسلسل العائلة/الاطفال . . في النموذج الفرعي ، ولما تكتب اسم من اسماء افراد العائلة ، وعند حدث "بعد التحديث" ، يحصل الاسم على الرقم التلقائي التالي ، بهذا الكود: Private Sub الاسم_AfterUpdate() 'Get the Next Seq number for this child Me.Childern_ID = Nz(DMax("[Childern_ID]", "tb2", "[Father_ID]=" & Me.Parent!id), 0) + 1 End Sub جعفر 1433.test.accdb.zip
  22. السلام عليكم 🙂 . . . جعفر 1433.test.accdb.zip
  23. وعليكم السلام 🙂 حسب علمي ، هناك 3 ساعات ممكن استعمالها: 1. ساعة الكمبيوتر ، 2. ساعة كمبيوتر آخر في الشبكة ، مثل ساعة السيرفر : . . 3. وساعة الانترنت ، واللي لازم تكون مرتبط بالانترنت علشان تحصل على الوقت : اخذ الجزء المطلوب من المرفق من هنا: جعفر
×
×
  • اضف...

Important Information