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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. السلام عليكم بالاشارة الى الموضوع التالي ، والطرق التي تمت الاشارة اليها : في المشاريع اللي احتاج لها اعدادات ، كنت استعمل جدول بسطر واحد ، ولكن في احد مشاريعي ، هذه الاعدادات وصلت الى 21 ولا تزال في زيادة ، فعملت تغيير في الجدول ، واصبح هناك سجل خاص لكل واحدة من الاعدادات: . . وهذا شكل النموذج المستمر للمستخدم: . وبياناته : . ونعرف انه في النموذج المستمر ، لا نستطيع التحكم بشكل حقل دون آخر (إلا عن طريق التنسيق الشرطي ، وعن طريق كود خاص يخص مربع الزر Command button) ، لذلك كان من المهم ان اكتب عبارة معين في اسم الحقل حتى اميزه عن الآخرين (او ان اعمل حقل اكتب فيه طريقة التعامل مع هذا السجل (استفيد منه في التنسيق الشرطي مثلا)) ، لذا نرى ان زر (command button) جميع الحقول التي بحاجة الى اختيار مجلد لها ، بدأ اسم الحقل بالكلمة Path (طبعا هذا مثال) ، وعليه استطعت ان اخفي الزر لبقية السجلات هكذا: Private Sub Detail_Paint() If Left(Me.sName, 4) <> "Path" Then Me.cmd_Path.Transparent = True Else Me.cmd_Path.Transparent = False End If End Sub وعند فتح البرنامج ، اقوم بتشغيل هذه الدالة حتى يتم استيراد البيانات من الجدول الى ذاكرة اكسس : Option Compare Database Option Explicit ' '- tbl_Settings contain the defaults for this program, '- instead of having all these fields in one record, '- we have records of these fields sName, sValue, sDataType '- so here we deal with these values, read/write ' '- jjafferr '- v1. 17/04/2025 ' Function tbl_Settings_Data() '- load the values for the table to TempVars, for each field Dim rstS As DAO.Recordset Dim RC As Long, i As Long Set rstS = CurrentDb.OpenRecordset("Select * From tbl_Settings") rstS.MoveLast: rstS.MoveFirst: RC = rstS.RecordCount For i = 1 To RC '- clean the old values of THIS record TempVars.Remove (rstS!sName) '- since TempVars is Variant, lets set the actual field values based on the field sDataType If rstS!sDataType = "Number" Or rstS!sDataType = "Yes/No" Then TempVars.Add (rstS!sName), CLng(rstS!sValue) ElseIf rstS!sDataType = "Text" Then TempVars.Add (rstS!sName), CStr(rstS!sValue) ElseIf rstS!sDataType = "Date/Time" Then TempVars.Add (rstS!sName), CDate(rstS!sValue) End If rstS.MoveNext Next i rstS.Close: Set rstS = Nothing End Function Function ListTempVars() '- list all TemVars values in this Database Dim i As Long For i = 0 To TempVars.Count - 1 Debug.Print TempVars(i).Name, TempVars(i).Value, VarType(TempVars(i)) Next i End Function Function Update_a_Field(New_Value As String, Field_Name As String) ' ' usage from the Form, for example: ' Call Update_a_Field(Forms!frm_Main!BG_Pixel_Color, "Color_Reference") ' '- update the field value in the table DoCmd.SetWarnings False 'DoCmd.RunSQL ("UPDATE tbl_Settings SET sValue =" & Me.BG_Pixel_Tolerance & " WHERE sName='Color_Tolerance'") DoCmd.RunSQL ("UPDATE tbl_Settings SET sValue =" & New_Value & " WHERE sName='" & Field_Name & "'") DoCmd.SetWarnings True '- update the TempVar TempVars.Remove (Field_Name) '- Remove the field TempVars.Add (Field_Name), New_Value '- add the field with the new value End Function . وعليه ، وعند طلب اي قيمة في البرنامج ، استعمل: اسم الحقل في الجدول Path_Employees_Pic_Folder طريقة طلب القيمة TempVars!Path_Employees_Pic_Folder طريقة استعماله Me.Picture = TempVars!Path_Employees_Pic_Folder & Me.Employee_ID & ".jpg" . السبب الذي جعلني استخدم TempVars يدلا عن الاكواد العامة او الدوال الخاصة هو ، اني اخذ البيانات من الجدول مرة واحدة فقط عند تشغيل البرنامج ، وهذه البيانات تبقى في ذاكرة البرنامج حتى عند استلام رسالة خطأ (عند ظهور رسالة الخطأ ، يقوم اكسس بحذف جميع المتغيرات التي بذاكرنه ، ما عدا بيانات TempVars) ، وبكل بساطة يمكننا قراءة قيمتها من نافذة immediate window في صفحة الكود هكذا: . رجاء ملاحظة ان علامة الاستفهام يجب ان تكون بالانجليزي. ---------------------------------------------------------- 30-05-2025 تم اضافة كود تحديث بيانات الجدول و TempVars ، واتضح انه اسهل مما كنت اتوقع 🙂 جعفر
  2. وعليكم السلام اما طريقتي: 1. اعمل مجلد للصور (مثلا اسمه Logo) في نفس مكان وجود قاعدة بياناتك (الكود المسار سيختلف اذا كانت قاعدة بياناتك هي الواجهة او جداول البيانات)، 2. اعمل صورة لإسم الشركة (مثلا img_Company.jpg) ، وصورة اخرى لإسم الفرع ، القسم ، الشعبة ، وهكذا ، صورة لكل شيء تريد عرضه في البرنامج او طباعته)، 3. فب النموذج او التقرير اعمل كائن للصورة (مثلا Company_img)، 4. في حدث OnLoad للنموذج ، او حدث تنسيق قسم التفصيل في التقرير ، اكتب الكود التالي لكل صورة me.Company_img.picture= currentproject.path & "\Logo\img_Company.jpg" .
  3. وانا كذلك، اصدار المرفق احدث .. لا يمكن فتحه عندي 2010 32 بت
  4. الموقع التالي فيه روابط وفيها برنامج اكسس ممكن الاستفادة منه (البرنامج للبيع، بس يمكنك انزاله بلاش) : https://isladogs.co.uk/32-64-bit-conversion/index.html
  5. وعليكم السلام اهلا اخي فادي 🙂 اهم شيء في هذا الموضوع، هو الرجوع الى تعليمات مايكروسوفت في التعامل مع دوال نواة 64 بت ، في الرابط التالي: https://www.microsoft.com/en-us/download/details.aspx?id=9970 ملف النص في الرابط اعلاه يعطيك تفاصيل الدالة على نواة 64 بت. المثال الذي استعملته انت، وانا متأكد بأنك كنت حريص في انتقاء الدالة، توجد به 3 فروقات عن الدالة في ملف مايكروسوفت (السطر الثاني من ملف مايكروسوفت) : والمسألة لا تتوقف عند هذا السطر فقط، فهناك دوال معقدة تحتاج الى استعمال if# في دالتي الخاصة. رجاء قراءة الموضوعين التاليين ، فطريقة العمل تختلفان ، وفيهما بعض الامثلة المختلفة: . .
  6. وعليكم السلام رجاء اعمل نسخة احتياط من برنامجك ، واحفظها في مكان آمن بعيد عن ملفات عملك. هذا الموضوع يفيدك في تصدير المرفقات من الجدول الى مجلد في الكمبيوتر . وهذا الموضوع لحذف المرفقات من الجداول (ولكن يجب ان تتأكد ان جميع المرفقات تم تصديرها اولا)
  7. يا اهلا وسهلا Jo نعم يمكن ، فقط اعمل مسار الصورة (img_path مثلا) كاملا في الاستعلام مصدر بيانات النموذج، ثم اجعل هذا الحقل مصدر بيانات الصورة. ومن واقع التجربة ، فستحتاج الى تكبير حجم الحقل (طولا وعرضا) حتى ترى الصورة بحجم مناسب، وتأكد ان احجام الصور لا تكون كبيرة (500x500 يعتبر حجم كبير ومناسب) حتى لا يصبح برنامجك بطيئ.
  8. وعليكم السلام انصحك بقراءة هذه المواضيع: . . . . اما بالنسبة الى برنامجك ، فتفضل التصفية بالاستعلام (اما التصفية في النموذج ، فرجاء قراءة اول موضوع اعطيتك رابطه اعلاه). 1630.10.accdb
  9. واقعا الموضوع سهل ، اذا بدأنا بطريقة معينة : 1. اجعل النماذج متراكمة ، 2. فقط اجعل النموذج الصغير يكون منبثق ، وافتحه بالطريقة العادية عند فتح النموذج الكبير 1629.Front.accdb
  10. اما اذا اردت النموذج الصغير دائما في المقدمة ، افتحه بهذه الطريقة DoCmd.OpenForm "FINISHED CAED",,,,,acDialog بدلا عن DoCmd.OpenForm "FINISHED CAED",acNormal
  11. وعليكم السلام في نهاية كودك ، وقبل الرسالة ، اكتب هذا السطر: FORMS("FINISHED CAED").setfocus FORMS("FINISHED CAED").Controls("FAL").setfocus وتقدر تختار اي كائن يصير ال التركيز عليه ، مو شرط الحقل اللي كتبته لك.
  12. 1. رجاء استعمال النسخة التي ارفقتها لك: 1628.2_Import_New_DB_Compact_Repair.accdb 2. اوقف البرامج المضادة للفيروسات ، ومن ضمنها التي تاتي مع الوندوز 10 ، Windows Security 3. كذلك اوقف جميع البرامج التي تراقب برامج الكمبيوتر مثل Adware 4. افصل الحاسبة عن الشبكة والانترنت 5. ادخل في البرنامج بينما تكون ماسك مفتاح الشف ، فهل الاكواد جميعها موجودة؟ من الواضح هناك برنامج خارجي يعتقد ان برنامجك فايروس ، فيقوم بحذف جميع الاكواد ، وخصوصا اذا كانت الحاسبة جزءً من شبكة الشركة ، وهذه الشركة لديها شروط قوية على نوع البرامج الممكن استعمالها
  13. امسك مفتاح الشفت ، ثم افتح البرنامج ، حتى تدخل في وضع التصميم ، هل الاكواد جميعها موجودة ؟ اذا نعم ، لا تفتح النموذج الرئيسي ، وانما افتح اي نموذج أخر ووافق على الرسائل التي تظهر ، فهل ينفتح عندك النموذج ؟
  14. وعليكم السلام اعمل اعدادات الوندوز التالية:
  15. وعليكم السلام 🙂 معظم قواعد البيانات عبارة عن جداول ، SQL Server او mySQL او ... ، وتستعمل برامج اخرى للواجهة مثل php او asp.NET او ... بينما الاكسس هو عبارة عن قاعدة بيانات تحتوي على الجداول (ونستخدم مصطلح BE عليها) ، و واجهة تحتوي على النماذج والاستعلامات والتقارير والوحدات النمطية (ونستخدم مصطلح FE عليها) ، فخلينا نفرق بينهم: قاعدة بيانات اكسس ، الجداول و الواجهة ، FE and BE: كان اقصى حجم للتخزين 2 جيجا ، بينما في الاوفيس M365 تم رفع الطاقة التخزينية الى 4 جيجا بشرط يكون الوندوز 64 بت (https://support.microsoft.com/en-us/office/what-s-new-in-access-for-microsoft-365-76454345-f85d-47af-ace1-98a456cb3496#:~:text=The 32-bit version of,when running complex Access applications.) Large Address Aware in Access The 32-bit version of Access for Microsoft 365 has been updated to be Large Address Aware (LAA). This increases the maximum address space available to Access from 2 GB to 4 GB when it is running on a 64-bit version of Windows. This is especially helpful when running complex Access applications. قاعدة بيانات اكسس ، الجداول، BE : نفس حجم قاعدة بيانات اكسس ، الجداول و الواجهة، FE and BE قاعدة بيانات اكسس ، الواجهة: يمكنك ربط FE بأي عدد من الجداول ، سواء SQL Server او mySQL او اكسس BE (2,048 للاكسس العادي، و 4,096 للاكسس M365)، بشرط ان لا يزيد حجم كل BE عن الحجم الذي تم توضيحه اعلاه. (https://support.microsoft.com/en-us/office/access-specifications-0cf3c66f-9cf2-4e32-9568-98c1025bb47c) 2 gigabytes, minus the space needed for system objects. Note: You can work around this size limitation by linking to tables in other Access databases. You can link to tables in multiple database files, each of which can be as large as 2GB. لم اواجه مشكلة في حجم 2 جيجا في اي من برامجي ، فاكبرها كان حجم البيانات حوالي 500 ميغا ، ولكن الصور المرتبطة (والتي تم تخزينها في مجلدات الوندوز) كان حجمها حوالي 2 تيرا . جعفر
  16. اذا كانت بعض البرامج تعمل ، والبعض الاخر لا يعمل (يحذف الكود) ، فيجب النظر في الى الموضوع بعمق اكثر ، اما اذا كانت جميع البرامج لا تعمل ، سواء بحذف الالكسس للكود او اعطاء اخطاء اخرى ، فعندها المذنب يكون الاكسس/الاوفيس ، فيا تعمل للاكسس/الاوفيس اصلاح (باعادة تنصيب البرنامج ، ثم اختيار اصلاح (قد لا يكون هذا الاسم الصحيح ، فاسمه بالانجليزي Repair) ، او اعادة تنصيب الاكسس/الاوفيس كاملا
  17. وانا كذلك ، ولكني ارفقت ملفين بعد تنظيفها 🙂
  18. تفضل 1628.2_Import_New_DB_Compact_Repair.accdb 1628.1_Fixed_Errors_Decompile_CompactRepair_4.accdb
  19. الامر بيدك ان اردت مساعدتنا ، وذلك بإرفاق الملف الذي يعمل.
  20. سيدي الفاضل انت قلت ان عندك نسخة شغالة على ارفق هذه النسخة لوسمحت
×
×
  • اضف...

Important Information