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

Foksh

أوفيسنا
  • Posts

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

  • Days Won

    195

Community Answers

  1. Foksh's post in استخراج الطلبة العشرة الأوائل was marked as the answer   
    وهذه فكرة تجمع بين عرض التكرارات التي يتنافس فيها الطلاب حسب رغبتك ..
    Data_Base_Rep.zip
  2. Foksh's post in مطلوب فتح تقرير في نموذج was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ..
    بدايةً وللتأكيد مما فهمت ، انت تريد فتح التقرير بناءً على الشرطين ، بحيث يتم فتح التقرير من الزر في النموذج الفرعي 🙄 !!!
    هكذا ... ؟؟؟
     
    saad.zip
     
    أم أنا فهمت الفكرة بشكل خاطئ 😅
  3. Foksh's post in طلب تثبيت تطبيق واتس اب على ويندوز سيرفر 2022 was marked as the answer   
    السلام عليكم ورحمة الله وبركاته ..
    الحل النهائي بعد تجربته مراراً وتكراراً . انتقل الى الرابط التالي هنا وحمل الملفات منه بدايةً .
    وفي التالي شرح مصور مع الأخطاء وكيفية علاجها .

     
    طبعاً تم ترك الأخطاء التي مررت بها كي يسهل على المستخدم الكشف عن الخلل وكيفية الإستدلال عليه وإصلاحه .
  4. Foksh's post in ربط اكثر من سجل في نموذج فرعي بسجل واحد في نموذج رئيسي was marked as the answer   
    من المفترض انها نماذج إدخال بيانات وليست نماذج عرض سجلات ، إلا اذا كنتي رح تضطري تضغطي 50 مرة للبحث عن سجل معين داخل سجلات الجدول !!!! 
    على العموم ، تم إضافة زرين ( التالي - السابق ) للنموذجين مع دالة تستعرض السجلات الخاصة بالموظف الحالي فقط ..
     
    تفضلي :-
    ربط واجهات3.zip
  5. Foksh's post in فلترة السجلات في النموذج الفرعي was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ...
    بعد تتبع مصدر مربع النص Text2 .. وجدت أن أفضل حل هو الحدث التالي بعد تحديث عنصر الـ Ch1 ، بحيث يكون :-
    Private Sub ch1_AfterUpdate() Dim subForm As Form Set subForm = Me.FMBoxCustomersSup.Form If Me.ch1 = True Then subForm.Filter = "([Sumمنtotalmainstax] - [Sumمنtotal_shop]) - [Price1] <> 0" subForm.FilterOn = True Else subForm.FilterOn = False End If End Sub  
    وطبعاً في حدث عند التحميل للنموذج الرئيسي ، نقوم باستدعاء حدث بعد التحديث للعنصر Ch1 ، ليصبح كالتالي :-
    Private Sub Form_Load() DoCmd.Maximize ch1_AfterUpdate End Sub  
    ملفك بعد التعديل :-
    اظهار واخفاء السجلات حسب قيمة الحقل.zip
  6. Foksh's post in تقسيم عدد علي حقول عشوائيا was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ..
    جرب هذين المرفقين بأسلوبين قريبين من بعضهما ..
     
     
    Split Nums - 1.accdb Split Nums - 2.accdb
  7. Foksh's post in ⭐ هدية ~ لعبة كانسة الألغام 2025⭐ was marked as the answer   
    Minesweeper.zip   
     
  8. Foksh's post in انشاء جدول بمواصفات خاصه was marked as the answer   
    أخي الفاضل ، لم لا تقوم بطرح جميع المطلوب كاملاً بدلاً من النقاط المبعثرة 😅
    على العموم ، هذا التعديل لما طلبت ، تفضل ، استبدل الكود للزر بالتالي :-
    Private Sub btnGenerate_Click() Dim db As DAO.Database Dim tDef As DAO.TableDef Dim fld As DAO.Field Dim rs As DAO.Recordset Dim startDate As Date, endDate As Date, d As Date Dim yearInput As Integer Dim monthName As String Dim monthCode As Integer Dim shiftValue As Double Dim startDateTime As Date Dim endDateTime As Date Dim monthEndDate As Date Dim monthEndWorkDate As Date If IsNull(TxtYear) Then MsgBox "أدخل رقم السنة", vbExclamation + vbMsgBoxRight, "" Me.TxtYear.SetFocus Exit Sub End If yearInput = Me.TxtYear startDate = DateSerial(yearInput - 1, 12, 21) endDate = DateSerial(yearInput, 12, 20) On Error Resume Next DoCmd.DeleteObject acTable, "Salary" On Error GoTo 0 Set db = CurrentDb db.Execute "CREATE TABLE Salary (" & _ "ID AUTOINCREMENT PRIMARY KEY, " & _ "WorkDate DATE, " & _ "DayName TEXT(20), " & _ "MonthName TEXT(20), " & _ "monthCode LONG, " & _ "shift CURRENCY, " & _ "startDay DATE, " & _ "endDay DATE)" Set tDef = db.TableDefs("Salary") Set fld = tDef.Fields("shift") On Error Resume Next fld.Properties("Format") = "#,##0.00" If Err.Number <> 0 Then Err.Clear fld.Properties.Append fld.CreateProperty("Format", dbText, "#,##0.00") End If fld.Properties("DecimalPlaces") = 2 If Err.Number <> 0 Then Err.Clear fld.Properties.Append fld.CreateProperty("DecimalPlaces", dbInteger, 2) End If Set fld = tDef.Fields("startDay") On Error Resume Next fld.Properties("Format") = "hh:nn AM/PM" If Err.Number <> 0 Then Err.Clear fld.Properties.Append fld.CreateProperty("Format", dbText, "hh:nn AM/PM") End If Set fld = tDef.Fields("endDay") On Error Resume Next fld.Properties("Format") = "hh:nn AM/PM" If Err.Number <> 0 Then Err.Clear fld.Properties.Append fld.CreateProperty("Format", dbText, "hh:nn AM/PM") End If On Error GoTo 0 Set fld = Nothing Set tDef = Nothing Set rs = db.OpenRecordset("Salary", dbOpenDynaset) monthCode = 0 monthEndWorkDate = DateSerial(yearInput - 1, 12, 20) d = startDate Do While d <= endDate If Weekday(d, vbMonday) <> 5 And Weekday(d, vbMonday) <> 7 Then monthName = CustomMonth(d) monthCode = 0 monthEndDate = DateSerial(Year(d), Month(d), 20) If Weekday(monthEndDate, vbMonday) = 5 Or Weekday(monthEndDate, vbMonday) = 7 Then monthEndWorkDate = monthEndDate Do monthEndWorkDate = DateAdd("d", -1, monthEndWorkDate) Loop Until Weekday(monthEndWorkDate, vbMonday) <> 5 And Weekday(monthEndWorkDate, vbMonday) <> 7 Else monthEndWorkDate = monthEndDate End If If d = monthEndWorkDate Then If Month(d) = 12 And Year(d) = yearInput - 1 Then monthCode = 1 ElseIf Month(d) = 1 And Year(d) = yearInput Then monthCode = 1 ElseIf Month(d) = 2 Then monthCode = 2 ElseIf Month(d) = 3 Then monthCode = 3 ElseIf Month(d) = 4 Then monthCode = 4 ElseIf Month(d) = 5 Then monthCode = 5 ElseIf Month(d) = 6 Then monthCode = 6 ElseIf Month(d) = 7 Then monthCode = 7 ElseIf Month(d) = 8 Then monthCode = 8 ElseIf Month(d) = 9 Then monthCode = 9 ElseIf Month(d) = 10 Then monthCode = 10 ElseIf Month(d) = 11 Then monthCode = 11 ElseIf Month(d) = 12 Then monthCode = 12 End If End If If Weekday(d, vbMonday) = 6 Or Weekday(d, vbMonday) = 3 Then shiftValue = 1 startDateTime = DateAdd("n", 30, DateSerial(Year(d), Month(d), Day(d)) + TimeSerial(8, 0, 0)) endDateTime = DateSerial(Year(d), Month(d), Day(d)) + TimeSerial(13, 30, 0) Else shiftValue = 1.2 startDateTime = DateAdd("n", 10, DateSerial(Year(d), Month(d), Day(d)) + TimeSerial(8, 0, 0)) endDateTime = DateSerial(Year(d), Month(d), Day(d)) + TimeSerial(14, 30, 0) End If rs.AddNew rs!WorkDate = d rs!DayName = Format(d, "dddd") rs!monthName = monthName If monthCode > 0 Then rs!monthCode = monthCode Else rs!monthCode = Null End If rs!shift = shiftValue rs!startDay = startDateTime rs!endDay = endDateTime rs.Update End If d = d + 1 Loop rs.Close Set rs = Nothing db.TableDefs.Refresh Set db = Nothing MsgBox "تم إنشاء الجدول بنجاح", vbInformation + vbMsgBoxRight, "" DoCmd.SelectObject acTable, "Salary", True End Sub  
    ملفك بعد التعديل :-
    CalGen.zip
     
  9. Foksh's post in اظهار صورة حسب قيمة حقل معين was marked as the answer   
    أخي @jo_2010
    بما أن موضوع الحدث عند رسم النموذج يسبب مشكلة لديك ، دعنا نتوجه إلى الحل التالي . وهو إضافة بسيطة الى الاستعلام مصدر النموذج الفرعي ليصبح كالتالي :-
    SELECT Switch([External_lab] Is Null,Null,[External_lab]="",Null,[External_lab]="المختبر","Almokh",[External_lab]="البرج","1_AL_Borg",True,Null) AS DisplayImage, * FROM [Qry_Analysis collection]; بدلاً من القديم :-
    SELECT [Qry_Analysis collection].* FROM [Qry_Analysis collection]; وطبعاً سنحدد مصدر عنصر الصورة التي تريدها ليصبح الحقل الجديد = DisplayImage
    وبالتالي النتيجة بدون ترميش وتعتمد على مصدر النموذج الفرعي نفسه . والنتيجة في المرفق .
     

    تم تغيير اسم عنصر الصورة من Image ( وهو اسم محجوز لآكسيس وهو غير صحيح ) الى الاسم ImageFoksh .
    ومن الجدير بالذكر والتوضيح أنني اعتمدت على اسم الصورة المضمنة في قاعدة البيانات نفسها .
     

     
    JO_Lab3.zip
  10. Foksh's post in مشكلة في ارسال رسائل واتس اب بعد التحديث الأخير was marked as the answer   
    هذه تجربتي المباشرة على الإصدار الحديث Version 2.3000.1031261430.258708 . أحدث من إصدارك حتى ، مع العلم أن إصدارك تمت التجربة عليه سابقاً ( التطبيق موجود ضمن المشاركات ) .. انظر هذا التصوير :-
     

     
  11. Foksh's post in دالة DCOUNT بمعيار تاريخ تعطى نتائج مختلف باختلاف التاريخ was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ..
    جرب هذا التعديل أخل الكريم ..
     
    DCOUNT.zip
  12. Foksh's post in طباعة التقرير بنفس فلترة النموذج was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ..
    جرب في زر فتح التقرير الحدث التالي :-
    DoCmd.OpenReport "تقرير تصفية", acViewPreview, , _ "[اسم_المستفيد] Like '*" & Forms!Index!s & "*' " & _ "OR [رقم/اسم المبنى] Like '*" & Forms!Index!s & "*' " & _ "OR [الادارة] Like '*" & Forms!Index!s & "*'"  
    100.zip
  13. Foksh's post in تنسيق شرطي was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته..
    في مربع نص الاسم اختر تنسيق شرطي ، واضف قاعدة جديدة ، واختر Expression Is ، ثم في قيمة الشرط اكتب مثلاً:-
    [Foksh] = "لا يوجد" انا افترضت هنا ان اسم مربع النص الذي تشترط قيمته = Foksh  😅 . ثم حدد اللون والتنسيق الذي تريده .
  14. Foksh's post in مقارنة مبلغ في نموذج فرعي مع رئيسي was marked as the answer   
    بسيطة أخر الكريم ..
    في حدث بعد التحديث لمربع النص Payment الموجود في النموذج الفرعي Credit_Paper_Payments ، اجعل الحدث = 
    Forms!credit_paper.CheckPaymentState  
    ولضمان ابقاء القيمة ذاتها للكومبوبوكس عند عدم تحقق الشرط ، استبدل كلمة Null بالقيمة التالية
    Me.Credit_Paper_Sub.Form!State.Value
  15. Foksh's post in ⭐ هدية ~ متعقب التغييرات الذكي 2024⭐ was marked as the answer   
    أولاً :- من خلال تجربتي الأخيرة على مرفق لأحد الأخوة ، حيث كان المفتاح الأساسي لديه في جداوله = حقل نصي ولكنه يحتوي أرقام  . وقد ظهرت لدي مشكلة بعد تنفيذ المطلوب على أكمل وجه بسبب أن الحقل ID الذي افترضناه في جدول استخراج الفروقات = حقل رقمي . ولذا تم التعامل مع هذه النقطة بحيث يتم انشاء حقل ID بنفس نوع حقل المفتاح الأساسي في الجدولين المُقارن بينهما ( لإضفاء المرونة في التعامل ليس إلا ) .
     ثانياً :- تمكين المستخدم من نقل وتحديث السجلات الفارقة فقط بين الجدول الأول - وقد تم تصنيفه بالجدول ( المتغير ) - والجدول الثاني الذي تم تصنيفه بالجدول ( الثابت ) . وبالتالي حتى السجلات الغير موجودة في الجدول الثابت سيتم إضافتها من الجدول المتغير إلى الثابت .
     


     
     

     
    UnMatched.zip
  16. Foksh's post in إضافة السجلات الغير موجودة من جدول الى جدول آخر was marked as the answer   
    تفضل أخي الكريم / ملفك بعد التعديل وتوسيع النطاق في العمل .
    وأرجو منك الإهتمام بمواضيعك وأغلاق ما يستحق الإغلاق إشعاراً للقارئ بأن الموضوع قد تم حله والإجابة عليه . فتفاعلك يعكس فكرك  .
    UnMatched123.zip
  17. Foksh's post in اظهار التغيرات was marked as the answer   
    اخي الكريم ، انت الآن تنتقل الى موضوع جديد ، لذا راجياً منك إغلاق هذا الموضوع لتحقيقه المطلبين الأولين ، وافتح موضوع جديد بهذا الطلب ، بحيث يكون عنوانه مثلاً:-
    إضافة السجلات الغير موجودة من جدول الى جدول آخر
  18. Foksh's post in الغاء التعديل والحذف بعد ادخال البيانات was marked as the answer   
    تفضل التعديل التالي .. جربه وأخبرني بالنتيجة .
     
     
    123452025.zip
  19. Foksh's post in فصل الاسم المركب قبل "-" was marked as the answer   
    استبدل الجملة السابقة ، بالجملة التالية :-
    Me.da5.Caption = Format(rs!Date_Marj, "yyyy/mm/dd") & " بـ" & _ PartOfName(name1, 1) & " " & PartOfName(name1, 2) & _ " تحت رقم : " & rs!N_Act_Marj  
    بشرط أن تكون قد قمت بنقل المديول في الملف الأول الذي تم حل مشكلتك من خلال الاستعلام .
  20. Foksh's post in تنسيق شهادة شكر .. تقرير was marked as the answer   
    رداً على هذه النقطة ، وحيث أنه سبق تنفيذها سابقاً ..
    جرب المرفق نفسه بعد التعديل بحيث سيتم فقط عرض الخطوط العربية ( أو التي تتعامل مع الكاركتر العربي ) في الكومبوبوكس . مع إضافة الفرز التصاعدي للأسماء :-
     
     
    Db3.zip
  21. Foksh's post in كود معرفة سريال هارد الكمبيوتر was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ..
    لدي دالة تجلب جميع أرقام الهارد ديسك ( القرص الصلب ) حتى لو كان لديك أكثر من هارد موصول على نفس الكمبيوتر ..
    Public Function GetAllHardDiskSerials() As String On Error GoTo ErrorHandler Dim objWMIService As Object Dim colDisks As Object Dim objDisk As Object Dim result As String Dim i As Integer Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colDisks = objWMIService.ExecQuery("SELECT * FROM Win32_DiskDrive") i = 1 For Each objDisk In colDisks If Not IsNull(objDisk.SerialNumber) Then Dim serial As String serial = Trim(objDisk.SerialNumber) If serial <> "" Then result = result & "Disk " & i & ": " & serial & vbCrLf i = i + 1 End If End If Next If result = "" Then GetAllHardDiskSerials = "No serial numbers found" Else GetAllHardDiskSerials = result End If CleanUp: Set objDisk = Nothing Set colDisks = Nothing Set objWMIService = Nothing Exit Function ErrorHandler: GetAllHardDiskSerials = "Error" Resume CleanUp End Function  
    أو هذه الدالة البسيطة أيضاً التي تجلب رقم الهارد الذي تم تثبيت نظام التشغيل ويندوز عليه :-
    Public Function GetHardDiskSerial2() As String On Error GoTo ErrorHandler Dim objWMIService As Object Dim colDisks As Object Dim objDisk As Object Dim strSerial As String Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colDisks = objWMIService.ExecQuery("SELECT * FROM Win32_DiskDrive") For Each objDisk In colDisks If Not IsNull(objDisk.SerialNumber) Then strSerial = Trim(objDisk.SerialNumber) If strSerial <> "" Then GetHardDiskSerial2 = strSerial Exit For End If End If Next If GetHardDiskSerial2 = "" Then GetHardDiskSerial2 = "Not Found" End If CleanUp: Set objDisk = Nothing Set colDisks = Nothing Set objWMIService = Nothing Exit Function ErrorHandler: Resume CleanUp End Function  
    والإستدعاء فقط في أي مربع نص = اسم الدالة فقط ، كما في الملف المرفق للتوضيح .
    HD Serial.zip
     
  22. Foksh's post in فتح نموذج عن طريق جدول was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ..
    بدايةً لا تقترف خطأ كبيراً بتسمية المكونات بأسماء محجوزة لآكسيس مثل ، Form أو Group . ثم ان الفكرة بسيطة جداً .. انظر الفكرة التالية في المرفق :-
     
    FAST_CA.zip
  23. Foksh's post in هل يمكن تحديث بيانات جدول اكسس من خلال ملف اكسل به جدول مرتبط was marked as the answer   
    xx هي فعلاً فرق الرقم بين 14 و 16 حسب إصدارات الأوفيس لديك . وبما أنك لديك أوفيس 2010 ، فالقيمة XX ستكون 14 كما ذكرت .
    على العموم ، قم بضبط و تعديل ملف الأكسل بحيث تنقل الجدول الى الخلية A ، كما في الصورة ، ثم استخدم الأداة وستجد أنها جلبت القيم لك من جدول اكسل الى جدول اكسيس .
     

     
  24. Foksh's post in التنقل بين السجلات was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ..
    بعد الإطلاع مرتين على الملف المرفق وطريقة عملك عليه ، جرب الحدثين التاليين في الأزرار ..
    Private Sub a1_Click() Dim curID As Long Dim nxt As Variant If Nz(Me.ek, "") = "" Then curID = Me.no_rece + 1 Else curID = CLng(Me.ek) End If nxt = DMin("no_rece", "enar_dman", "no_rece > " & curID) If Not IsNull(nxt) Then Me.ek = nxt Me.Requery Else MsgBox "لا يوجد سجل تالي", vbInformation + vbMsgBoxRight, "" End If End Sub Private Sub a2_Click() Dim curID As Long Dim prv As Variant If Nz(Me.ek, "") = "" Then curID = Me.no_rece - 1 Else curID = CLng(Me.ek) End If prv = DMax("no_rece", "enar_dman", "no_rece < " & curID) If Not IsNull(prv) Then Me.ek = prv Me.Requery Else MsgBox "لا يوجد سجل سابق", vbInformation + vbMsgBoxRight, "" End If End Sub  
    طبعاً قد تحتاج لزر "سجل جديد" إذا كان النموذج الحالي إدخال البيانات .
     
    وهذه الفكرة بدلاً من التكرار للحدثين في الزرين ،يمكن دمجهم في دالة واحدة والإستدعاء فقط من خلال الزرين يميز السابق والتالي :-
    Private Sub a1_Click() GoToRecord True End Sub Private Sub a2_Click() GoToRecord False End Sub Private Sub GoToRecord(isNext As Boolean) Dim curID As Long Dim newID As Variant Dim fld As String: fld = "no_rece" If Nz(Me.ek, "") = "" Then If isNext Then curID = Me(fld) + 1 Else curID = Me(fld) - 1 End If Else curID = CLng(Me.ek) End If If isNext Then newID = DMin(fld, "enar_dman", fld & " > " & curID) Else newID = DMax(fld, "enar_dman", fld & " < " & curID) End If If Not IsNull(newID) Then Me.ek = newID Me.Requery Else If isNext Then MsgBox "لا يوجد سجل تالي", vbInformation + vbMsgBoxRight, "" Else MsgBox "لا يوجد سجل سابق", vbInformation + vbMsgBoxRight, "" End If End If End Sub  
    test.zip
  25. Foksh's post in مطلوب معادلة لضرب مجموعة من الارقام في رقم معين واعطاء نتائج was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته ..
    جرب في حدث بعد التحديث لمربع النص الغير منضم الفكرة التالية ..
    Private Sub AMOUNT_AfterUpdate() Dim vAmount As Double vAmount = Nz(Me.AMOUNT, 0) DoCmd.SetWarnings False DoCmd.RunSQL "UPDATE Table1 SET JOR = Nz(US,0) * " & vAmount DoCmd.SetWarnings True DoCmd.Requery End Sub  
     
×
×
  • اضف...

Important Information