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

نجوم المشاركات

  1. ابو جودي

    ابو جودي

    أوفيسنا


    • نقاط

      20

    • Posts

      7073


  2. lionheart

    lionheart

    الخبراء


    • نقاط

      17

    • Posts

      670


  3. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      9

    • Posts

      9960


  4. Barna

    Barna

    الخبراء


    • نقاط

      8

    • Posts

      1065


Popular Content

Showing content with the highest reputation on 01/21/22 in all areas

  1. وعليكم السلام تفضل أخي الكريم بحث فى كل الشيتات.xlsm
    5 points
  2. طيب شوف ده كده ..... ابسط مما تتخيل .... 12446-1 (2).accdb
    4 points
  3. الكود معه نجمتين يعنى ملازم اول وانت بكل بساطة تنزعهم منه وتريده ينفذ طلباتك طب ازاى بس
    3 points
  4. السلام عليكم الكود بحاجة إلى النجمتين Like '*" & Me.[TextBox] & "*'"
    3 points
  5. أهلا بكم.. DLookup (Expr, Domain, Criteria) -- في معامل Expr: يمكن أن نستخدم Last First Count أو أي تابع من توابع أكسس أو تنشئ دالة تقوم بحساب أو فحص شئ ما. -- في معامل Criteria: يمكن أن نمرر إلى الحد الأيسر من المعيار أي من توابع أكسس مثل توابع التاريخ DateDiff أو Format أو Cstr. On Immediate Window ?Dlookup("UCase(First([Last Name]&', '&[First Name]))","Customers","City='Boston'") GRATACOS SOLSONA, ANTONIO ?Dlookup("UCase(Last([Last Name]&', '&[First Name]))","Customers","City='Boston'") AUTIER MICONI, CATHERINE ?Dlookup("'Count Records: '&Count([Last Name]&', '&[First Name])","Customers","City='Boston'") Count Records: 2
    3 points
  6. اخي ابا جودي شكرا لك لمرورك العطر و جمعة مباركة عليك و على الجميع بالنسبة لأماكن الأزرار فقط استخدمت Controls().Move لا اكثر و لا اقل مع تحديد الموضع و زيادة المسافة من الأعلى داخل الحلقة التكرارية Forms!Form1.Controls(mycomnd).Move
    3 points
  7. المثال موجود في الرابط وفي الدالة نفسها : 1. To find the last value, include DESC in the OrderClause, e.g.: ELookup("[Surname] & [FirstName]", "tblClient", , "ClientID DESC") 2. To find the lowest non-null value of a field, use the Criteria, e.g.: ELookup("ClientID", "tblClient", "Surname Is Not Null" , "Surname") جعفر
    3 points
  8. تفضل التعديل صلاحيات كاملة صلاحيات حسب الاختيار الدائن و المدين.zip
    3 points
  9. يعني الموضوع وقف في الاخر على (نجمتين) بس الحق عليه برضو .. لو حكالي من أولها كان أعطيته عشر نجوم بس يخلصني 😂
    2 points
  10. وهاد تعديل طفيف تنيسق شرطى انظر عندم عدم وجود نتيجة فى ال sCOR وعند التحديث للقيم وعند التركيز داخل الحقل وبما انك رجل منذ القدم معنا ياريت تختار افضل اجابة ليتم العلم انه تم الرد وتوصلت للنتيجة المطلوبة ولا يحتاج الى متابعة وو... Evaluation-HR- Final.zip
    2 points
  11. انت انضممت منذ 4 ساعات وعلمت وتيقنت جيدا ايضا ... ماشاء الله عليك ابشر ان شاء الله جارى عمل اللازم
    2 points
  12. Use the oval shapes from Insert tab > Illustrations > Shapes > Oval. Then use this code Don't forget to change the range to suit your range Sub Test() Dim x, c As Range, r As Long, y As Long, g As Long, b As Long Application.ScreenUpdating = False r = RGB(255, 0, 0): y = RGB(255, 255, 0) g = RGB(0, 176, 80): b = RGB(0, 112, 192) For Each c In Range("C8:F11") Set x = FindImage(c) If Not x Is Nothing Then If c.Value = 1 Then c.Font.Color = r: x.Fill.ForeColor.RGB = r ElseIf c.Value = 2 Then c.Font.Color = y: x.Fill.ForeColor.RGB = y ElseIf c.Value = 3 Then c.Font.Color = g: x.Fill.ForeColor.RGB = g ElseIf c.Value = 4 Then c.Font.Color = b: x.Fill.ForeColor.RGB = b End If End If Set x = Nothing Next c Application.ScreenUpdating = True End Sub Function FindImage(CellToCheck As Range) As Shape Dim wShape As Shape, addr addr = CellToCheck.Address For Each wShape In CellToCheck.Parent.Shapes If wShape.TopLeftCell.Address = addr Then Set FindImage = wShape: Exit Function Next wShape End Function
    2 points
  13. السلام عليكم استاذ شوقى مشاركه مع اخى واستاذى مهندس @Eng.Qassim جزاه الله خيرا واستكمالا للموضوع السابق بخصوص هذا الموضوع وبالنسبه للترقيم من والى حسب طلبك ثم يقوم منك بطلب تسلسل آخر وحسب ما فهمت من السؤال والاستيضاح الفعلى منك ع الرسائل زميلى العزيز فانه وكما وضحت لك الافضل انشاء جدول خاص بهذه الارقام ولكن دعنا من هذه النقطه الان وع حسب المشكله التى واجهتك بالنسبه للحذف وبعد توضيح انه لا يحبذ الحذف وانما ترك السجل مع وضع حقل من نوع (نعم ولا) للاستفاده منه على الاشاره بان هذا السجل ملغى ونستطيع الفرز عليه ع السجلات المطلوبه وليست الملغيه ولانه فى الوضع العملى اليدوى اذا تم استخراج ايصال برقم وتم الغاء هذا الايصال لا نقوم بقطع هذا الايصال ورميه ولكن نقوم بالتاشير عليه بانه ملغى ويترك مكانه او يدرج اصله مع الاستمارات والصوره تبقى بالدفتر ع حسب نوع العمل فقمت بادراج حقل YN وحقل Nots للملاحظات فالجدول T1 وقمت بادراج مربعى نص بالنموذج T1 وهما txtS و txtE لكتابه بدايه التسلسل ونهايته بالنسبه للقيم الموجوده بهذه الحقول قمت بوضعها فالقيمه الافتراضيه لمربعى النص يمكنك فالوضع الحالى تغيير هذه القيم للتجربه على اى قيم اخرى دون الدخول لوضع التصميم ولكنها لن تكون ثابته فى حاله اغلاق النموذج وفتحه ولهذا يجب انشاء الجدول لعدم الدخول كل مره لوضع التصميم ووضع القيم الجديده وايضا متى تم العمل بهذه الارقام وع حسب ما تريد معرفته وقمت بانشاء استعلام qry لفرز السجلات بناء على txtS و txtE Between [Forms]![T1]![txtS] And [Forms]![T1]![txtE] وقمت بادراج الكود التالى فى نفس الحدث السابق Private Sub Form_BeforeInsert(Cancel As Integer) 'Me.M = DLast("M", "T1", (DCount("*", "T1") Mod 50)) + 1 x = Nz(DMax("m", "qry"), 0) If Val(x) = 0 Then Me.M = Me.txtS ElseIf Val(x) >= Val(Me.txtE) Then MsgBox "برجاء ادخال ارقام القسيمه الجديده" DoCmd.CancelEvent Exit Sub Else Me.M = Val(x) + 1 End If DoCmd.RunCommand acCmdSaveRecord End Sub بالنسبه لخانه الالغاء عندما يتم التاشير عليها سيتم اخفاء السجل من النموذج مباشره اتركك الان مع المرفق للتجربه واذا فى استفسار اتفضل استاذ شوقى بالتوفيق ترقيم تلقائى_2.accdb
    2 points
  14. You can clear the coulmns D and column E and use the code to get the desired results Sub Test() Const t As Double = 50 With Range("E5") .Formula = "=C5*D5" .Offset(1).Resize(6).Formula = "=C6*D6+E5" End With With Range("D5") .Formula = "=RANDBETWEEN(1,INT(($A$1-SUM(C6:$C$11))/C5))" .Offset(1).Resize(4).Formula = "=RANDBETWEEN(1,INT(($A$1-SUM(C7:$C$11)-E5)/C6))" .Offset(5).Formula = "=RANDBETWEEN(IF($A$1-E9>" & t & "+(C10+C11),INT(($A$1-SUM(C11:$C$11)-E9-(" & t & "-C10))/C10),1),INT(($A$1-SUM(C11:$C$11)-E9)/C10))" .Offset(6).Formula = "=(A1-E10)/C11" End With With Range("D5:E11") .Value = .Value End With End Sub
    2 points
  15. استخدم هذا الكود مع تعديل مكان الرسائل يالاستعلام المطلوب ..... With Application.Forms For I = .Count - 1 To 0 Step -1 With .Item(I) If .Name <> "Main_Form" And .Name = "F1" Then MsgBox .Name ElseIf .Name <> "Main_Form" And .Name = "F2" Then MsgBox .Name End If End With Next I End With
    2 points
  16. بناء على طلب احد الاخوة شرح تفصيلى لدالة: DLookup Function الوصف-Description : ترجع الدالة DLookup قيمة حقل واحد إذا لم يكن هناك سجل يلبي المعايير أو إذا كان المجال لا يحتوي على أي سجلات، ترجع الدالة DLookup القيمة Null إذا كان هناك أكثر من حقل ترجع الدالة DLookup التكرار الأول لذلك يجب تحديد معايير تضمن أن تكون قيمة الحقل التي يتم إرجاعها بواسطة الدالة DLookup فريدة قد تحتاج إلى استخدام قيمة مفتاح أساسي للمعايير او قيمة فريدة للتأكد من أن الدالة DLookup ترجع قيمة فريدة بناء الجملة الدالة-Syntax DLookup : يختلف بناء الجملة الخاص بوظيفة DLookup الشكل العام البسيط لبناء الجملة يكون كالتالى DLookup("FieldName" , "TableName") وعندما نريد بناء جملة ترجع قيمة حقل من جدول بناء على قيمة محددة لابد ان يحتوى بناء الجملة على معيار الشكل العام لبناء الجملة كالتالى DLookup("FieldName" , "TableName" , "Criteria") و لابد من الاخذ فى الاعتبار انه سوف نعتمد فى بناء جملة DLookup من هذا النوع الذى يعتمد على معيار على نوع البيانات المستخدم فى هذا المعيار انواع البيانات المستخدمة فى المعيار هى لا تخرج عن الثلاث انواع الاتية (رقم - نص - تاريخ - Numeric - String - Date ) ودائما تلك الجزئية هى مصدر القلق والخطأ والتساؤل ولكى نبسطها DLookup("FieldName" , "TableName" , "Criteria = n") '|Numeric DLookup("FieldName" , "TableName" , "Criteria = 'S'") '|String DLookup("FieldName" , "TableName" , "Criteria = #D#") '|Date بكل بساطه فى بناء الجملة الرئيسي عندما نستخدم معيار يحتوى على نوع بيانات من النوع رقم فقط تم وضع علامة = بعد Criteria ثم الرقم بدون اى اضافات عندما نستخدم معيار يحتوى على نوع بيانات من النوع نص فقط تم وضع علامة = بعد Criteria ثم النص بين علامتين تنصيص مفرده ' عندما نستخدم معيار يحتوى على نوع بيانات من النوع تاريخ فقط تم وضع علامة = بعد Criteria ثم التاريخ بين علامتين هاش # يستخدم ما سبق عندما نكتب قيمة المعيار بطريقة مباشرة وعندما يكون المعيار مستمد من عنصر موجود اما حقل فى استعلام او مربع نص فى نموذج يكون بناء الجملة كالأتى DLookup("FieldName" , "TableName" , "Criteria =" & [ObjectName]) '|Numeric DLookup("FieldName" , "TableName" , "Criteria ='" & [ObjectName] & "'") '|String DLookup("FieldName" , "TableName" , "Criteria =#" & [ObjectName] & "#") '|Date ملاحظة هامة عند التعامل مع التاريخ لابد ان يكون تنسيق التاريخ فى المعيار على الطريقة الأمريكية mm/dd/yyyy -------------------------------------------------------------------------------------------------------------------------- وعندما يكون المعيار مستمد من متغير يتم اسناد قيمة المعيار اليه داخل محرر الأكواد يكون بناء الجملة كالأتى ولا ننسى عند التعامل مع التاريخ لابد ان يكون تنسيق التاريخ فى المعيار على الطريقة الأمريكية mm/dd/yyyy Dim MyVariable As String Dim stLinkCriteria As String MyVariable = 1 stLinkCriteria = "[FldCriteria]=" & MyVariable '|Numeric 'MyVariable = "Mahmoud" 'stLinkCriteria = "[FldCriteria] ='" & MyVariable & "'" '|String 'MyVariable = "03/01/1982" 'stLinkCriteria = "[FldCriteria] =#" & MyVariable & "#" '|Date stLinkCriteria = "[FldCriteria]=" & MyVariable '|Numeric 'stLinkCriteria = "[FldCriteria] ='" & MyVariable & "'" '|String 'stLinkCriteria ="[FldCriteria] =#" & MyVariable & "#" '|Date DLookup("FieldName", "TableName", stLinkCriteria) مثال متقدم : احضار بيانات دفعة واحدة من اكثر من حقل عن طريق المصفوفات من خلال الـ DLookup على طريقة استاذى الجليل ومعلمى القدير و والدى الجبيب الاستاذ @jjafferr Dim strDLookupFlds As String Dim stLinkCriteria As String Dim MyVariable As String Dim Arry() As String Dim ChosFld As String MyVariable = 1 stLinkCriteria = "[FldCriteria]=" & MyVariable '|Numeric 'MyVariable = "Mahmoud" 'stLinkCriteria = "[FldCriteria] ='" & MyVariable & "'" '|String 'MyVariable = "03/01/1982" 'stLinkCriteria = "[FldCriteria] =#" & MyVariable & "#" '|Date strDLookupFlds = DLookup("[Fld1] & '|' & [Fld2] & '|' & [Fld3] & '|' & [Fld4] & '|' & [Fld5] & '|' & [Fld6] & '|' & [Fld7] & '|' & [Fld8]& '|' & [Fld9]", "[tblName]", stLinkCriteria) Arry = Split(strDLookupFlds, "|") Debug.Print strDLookupFlds ChosFld = Arry(0) Debug.Print ChosFld 'Arry(0) = Fld1 'Arry(1) = Fld2 'Arry(2) = Fld3 'Arry(3) = Fld4 'Arry(4) = Fld5 'Arry(5) = Fld6 'Arry(6) = Fld7 'Arry(7) = Fld8 'Arry(8) = Fld9
    2 points
  17. ماشاء الله شرح مبسط ورائع وان شاء الله ننتفع به جزاك الله خيرا استاذ @Amr Ashraf 💐 واضيف تعليق لمعلمنا العزيز @jjafferr جزاه الله عنا خير الجزاء وكل اساتذتنا الذين تعلمنا ونتعلم منهم كل يوم بارك الله لنا فيهم وزادهم الله من فضله وعلمه وجزاهم الله خيرا ومرجع من ميكروسوفت https://support.microsoft.com/ar-sa/office/تضمين-استعلام-بداخل-استعلام-آخر-أو-تعبير-باستخدام-استعلامًا-فرعيًا-a8532322-e42f-4f94-bc38-ace7c182916a?ui=ar-sa&rs=ar-sa&ad=sa ومرجع اخر ايضا https://wiki.hsoub.com/SQL/subquery بالتوفيق
    2 points
  18. لقد تم التعديل وأصبح الشيت جاهز للاستخدام أضعه بين يديك للاستفادة منه 1الفياب.xlsm
    2 points
  19. Copy the code from my post. Go to excel worksheet and press Alt + F11 to login VBE editor then from Insert menu select Module and paste the code Now back to the worksheet and press Alt + F8 and select the macro called Test. That's all
    2 points
  20. تفضل 🙂 الدالة اسمها Elookup ، وتُستخدم بالضبط مثل Dlookup ، وفيها متغير اخير يعمل فرز : http://allenbrowne.com/ser-42.html جعفر
    2 points
  21. كما تعودنا منك ابو جودى شرح منظم وبسيط ورائع. بالنسبة لنقطة ارجاع اول قيمة فيه واحد اجنبى حل الموضوع ده عن طريق عمل function آلية عملها واستدعاءها تشبه Dlookup ولكن فيها معيار زيادة يسمح لك بترتيب البيانات التى ستقوم الدالة بارجاعها. سأبحث عنها فى مكتبتى وارسلها لك لاضافتها فى الموضوع
    2 points
  22. وعليكم السلام 🙂 ممكن عمل تغيير بسيط على عمل اخوي ابو جودي ، حتى يظهر العمل بأنه اسرع ، وهو عمل التركيز على حقل آخر غير حقل المذكرة nass : . جعفر
    2 points
  23. =IF(B3="غ","ضعيف",IF(B3>=42,"ممتاز",IF(B3>=36,"جيد جدا",IF(B3>=25,"جيد","ضعيف"))))
    2 points
  24. حاضر انا وجميع اخوانك هنا انصحك بتصفح هذا الموضوع مشاركة مشاركة والاطلاع على الامثلة ، فصاحب الموضوع حري ان يقتدى به
    1 point
  25. السلام عليكم الاخطاء التي وقعت بها الجداول : لا يوجد رابط بين جدول الطلاب وجدول الغياب ( يجب وضع حقل رقمي في جدول الغياب حتى تتمكن من الربط بين الجدولين ) جعلت مصدر بيانات النموذجين هو جدول الطلاب والصحيح ان يكون مصدر النموذج الفرعي هو جدول الغياب وعلى هذه النتيجة لا يوجد علاقة بين النموذج الرئيس والنموذج الفرعي سوف اعدل لك مثالك ... انتظرني
    1 point
  26. بسم الله ماشاء الله اشكرك و دام تجربة الشاشة 🙏🙏و جارى تجربة باقي النتائج ممكن الشرح ؟؟
    1 point
  27. 1 point
  28. السلام عليكم .. قم بتعريف المتغير Dim i As Integer قم بوضع DoCmd.Requery بدلا من DoCmd.RefreshRecord
    1 point
  29. جزيت خيرا استاذ احمد على الحل المبسط لشرحى المعقد
    1 point
  30. مشاركه مع اخى واستاذى العزيز محمد استبدل الرسائل بـ DoCmd.OpenQuery "Q2" فقط بالتوفيق
    1 point
  31. باالنسبة للسؤال الاول ارفق قاعدة بها جداول للتعديل عليها ! اما الثاني تنشئ جدول به حقل لتسجيل الشهر و قيمة المستحق وعند الصرف يكون فى استعلام الحاق يلحق رقم الشهر والقيمة وعند فتح الشهر مره اخري لنفس الموضف فى حدث فى حالي يفحص اذا كان الشهر المحدد ملحق بالجدول اذا وجده يخبرك بانه تم صرف المستحق للشهر والقيمة المدفوعه و يقفل التعديل على النموذج ومنع الاضافة .
    1 point
  32. السلام عليكم ,, الاخوة الافاضل , موضوعنا اليوم فى نطاق الاستعلامات وكما بالعنوان سوف نتطرق الى الاستعلامات الفرعية وطريقة استخدامها وامثلة عملية عليها واستخدامها كمعايير فى الاستعلامات الرئيسية. وسأقوم باستخدام النصوص فى الجزء الاغلب من الشرح تطبيقا لطلب استاذنا ابو خليل . بالنسبة للمبتدئين امثالى توضيح بسيط : ماهى المعايير ؟ المعايير هى شرط او اكثر بناءً عليه يتم استدعاء البيانات من الجداول وفى الرابط التالى الكثير من المعلومات والامثلة لكافة انواع الحقول (نص - رقمى - وقت وتاريخ الخ...) https://support.microsoft.com/en-us/office/examples-of-query-criteria-3197228c-8684-4552-ac03-aba746fb29d8 نعود لموضوعنا الاستعلامات الفرعية SubQueries , ماهى ؟ كما يوجد نموذج فرعى وتقرير فرعى هناك استعلام فرعى يتم استخدامه داخل الاستعلامات الاساسية بهدف الحصول على نتيجة يصعب الحصول عليها بالطرق العادية , ولها الكثير من الانواع سأتطرق لما استخدمته فعلياً حتى الآن ونأمل ان احد الاساتذة يثرى الموضوع بمشاركات اخرى لتطبيقات عملية أخرى . جملة الSQL : بالنسبة لطريقة كتابتها لا تختلف كثيرا عن كتابة الاستعلام العادى ويمكن كتابتها بسهولة عن طريق انشاء استعلام بالطريقة العادية ونسخ جملة الSQL الخاصة به مع تطبيق بعض الملاحظات التى سيتم ذكرها فى الامثلة التالية . نبدأ بالمثال الأول : على افتراض ان عندى مجموعة البيانات التالية مجموعة من المنتجات واسعارها : Product UnitPrice Banana $1.00 Choclate$5.00 Juice $3.00 Mango $7.00 Milk $4.00 Water $3.75 وأريد ان اعرف ماهى المنتجات التى تتساوى فى السعر او سعرها اقل من سعر منتج Milk , فى الطريقة العادية سيتم وضع معيار تحت حقل السعر ويكتب فيه <=4 وهو سعر المنتج , ماذا لو لم تعرف سعر المنتج الحالى او السعر يتغير باستمرار ويصعب تتبع التغييرات بالتالى يمكن عمل استعلام يقوم بالحصول على سعر المنتج المطلوب وبالتالى فى حالة تغير السعر نتيجة الاستعلام تتغير معه دون تدخل منك , انظر الى الاستعلام التالى: SELECT TblProducts.Product, TblProducts.UnitPrice FROM TblProducts; هذا استعلام اساسى يقوم باستدعاء المنتجات واسعارها بدون معايير , الق نظرة على الاستعلام التالى : SELECT TblProducts.Product, TblProducts.UnitPrice FROM TblProducts WHERE (((TblProducts.UnitPrice)<=(SELECT TblProducts.[UnitPrice] FROM TblProducts Where TblProducts.[Product]="Milk"))); وهذه صورته فى وضع التصميم لو تلاحظ تم اضافة معيار تحت السعر عبارة عن استعلام آخر مهمته هوا الحصول على سعر المنتج Milk كما لو انك كتبت بدلا منه <=4 , وبالتالى نتيجته ستكون عرض كافة المنتجات التى سعرها يقل عن او يساوى سعر المنتج Milk انظر الى النتيجة : Product UnitPrice Water $3.75 Juice $3.00 Milk $4.00 Banana $1.00 نلاحظ عرض المنتجات التى يكون سعرها اقل من او يساوى 4 (وهى نتيجة الاستعلام الفرعى) . ملاحظات على الاستعلام : الاستعلام الفرعى يجب ان يكون بين قوسين (). من المعلوم ان اى جملة SQL تنتهى بفاصلة منقوطة ; وهى الطريقة التى تخبر بها قاعدة البيانات بأن الجملة قد انتهت, ولكن لو لاحظت الاستعلام الفرعى لا يحتوى على فاصلة منقوطة بين الاقواس ولكن تكتفى بغلق الجملة الاساسية فقط وليس الفرعية. الاستعلام الفرعى يحضر نتيجة واحدة فقط (على الاقل الاستعلامات التى استخدمتها فعلياً). فى حالة وجود مسافة فى اسم الحقل مثلا Unit Price يجب تضمينه داخل اقواس Brackets []. يتبع فى رد يحتوى على مثال آخر . مرفق قاعدة بها جميع الامثلة المشروحة فى الموضوع ,, نسألكم الدعاء بصلاح الحال . Amr - SubQueries.accdb
    1 point
  33. Here's another file by formulas only. Select any empty cell and press DELETE button from the keyboard to get different results File.xlsx
    1 point
  34. بارك الله فيك أخي الكريم شكراً لك
    1 point
  35. جزاكم الله خيرا هل من تطبيق على المثال
    1 point
  36. الف الف شكر وحزاك الله خير الجزاء وجعله الله في ميزان حسناتك
    1 point
  37. الحل الامثل تبعا للمرفق ان شاء الله اولا الروتين العام فى الوحدة النمطية: يقوم بعمل دوران على النص لتعريته من اى شئ يخالف المستخدم داخل الروتين عن طريق استخدام الـ Unicode Public Function StripSpChars(strString As String) As String Dim lngCtr As Long Dim intChar As Integer If strString & "" = "" Then Exit Function For lngCtr = 1 To Len(strString) intChar = AscW(Mid(strString, lngCtr, 1)) If intChar = 13 Or _ intChar = 32 Or _ intChar = 40 Or _ intChar = 41 Or _ intChar = 45 Or _ intChar = 46 Or _ intChar = 58 Or _ intChar = 91 Or _ intChar = 93 Or _ intChar = 95 Or _ intChar = 171 Or _ intChar = 187 Or _ intChar = 1548 Or _ intChar >= 1569 And intChar <= 1594 Or _ intChar >= 1601 And intChar <= 1610 Or _ intChar >= 1648 And intChar <= 1649 Or _ intChar >= 1632 And intChar <= 1641 Or _ intChar >= 48 And intChar <= 57 Then StripSpChars = StripSpChars & ChrW(intChar) End If Next lngCtr StripSpChars = Trim(StripSpChars) End Function ثانيا : الاكواد داخل النموذج الاعلان عن متغير للاحتفاظ برقم السجل الحالى من خلال الحقل txtid Dim idRec As Integer روتين فرعى للذهاب للسجل حسب قيمة المتغير السابق idRec للحافظ على الذهاب الى السجل الحالى Sub GoRec() With Me.Recordset .FindFirst "ID=" & idRec End With End Sub روتين فرعى لتغير مصدر بيانات النموذج - يحتفظ الروتين برقم السجل الحالى بالحاق الرقم الى المتغير idRec - تيم تغيير جملة بناء الاستعلام حسب حالة المرجع X الذى تم الاعلان عنه فى بناء الروتين - تغيير عنوان مربع الاختيار تبعا لحالة مصدر البيانات المطلوب استخدانه Sub GoRecdSource(ByRef x As Boolean) idRec = txtid Select Case x Case Is = False Me.RecordSource = "SELECT book.nass, book.id, book.part, book.page FROM book;" GoRec lblChkCase.Caption = ChrW("1573") & ChrW("1582") & ChrW("1601") & ChrW("1575") & ChrW("1569") & ChrW("32") & ChrW("1581") & ChrW("1585") & ChrW("1603") & ChrW("1575") & ChrW("1578") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1578") & ChrW("1588") & ChrW("1603") & ChrW("1610") & ChrW("1604") Case Is = True Me.RecordSource = "SELECT StripSpChars([book]![nass]) AS nass, book.id, book.part, book.page FROM book;" GoRec lblChkCase.Caption = ChrW("1573") & ChrW("1592") & ChrW("1607") & ChrW("1575") & ChrW("1585") & ChrW("32") & ChrW("1581") & ChrW("1585") & ChrW("1603") & ChrW("1575") & ChrW("1578") & ChrW("32") & ChrW("1575") & ChrW("1604") & ChrW("1578") & ChrW("1588") & ChrW("1603") & ChrW("1610") & ChrW("1604") End Select End Sub الكود المستخدم على مربع الاختيار يتم استدعاء الروتين الفرعى المختص بتغيير مصدر بيانات النموذج تبعا لحالة مربع الاختيار الذى يدرج قيمته الى المتغير المستخدم كمرجع فى الروتين الفرعى السابق GoRecdSource (ChkCase) ما سبق اجتهاد شخصى >>---> قد تكون هناك طرق افضل وفى انتظار رأى استاذى الجليل ومعلمى القدير الاستاذ @Barna واخيرا مرفق التطبيق 12446-1 (2).accdb
    1 point
  38. تمام .. احسنت في عملك حدث الاغلاق يمكننا تنفيذ امر معين قبل الاغلاق ، ولكن الاغلاق سوف يتم بمعنى سيتم الاغلاق سواء تحقق الشرط ام لا ولا نكتفي عند زر الاغلاق بشرط واحد وانما نطبق جميع الشروط عليه وهي الموجودة في زر الحفظ تم التعديل واليك المرفق ‏‏‏‏devicesdb10.rar
    1 point
  39. الملف موجود فى مشاركة الباش مهندس @Eng.Qassim ورابط المرفق مرة أخرى Converter Arabic and Unicode (v. 3).accdb
    1 point
  40. علشان تقدر تتعامل بسهولة شوف الشرح المصور
    1 point
  41. شكرا استاذي @أبو عبدالله الحلوانى على هذه المعلومة لان لوكانت الكلمة بالعربي فلن يعمل الكود في حدث عند التغيير الا اذا تم تحويلها الى Unicode معلومة من ذهب ... جزاك الله خيرا استاذي انظر لملف استاذي @ابو جودي وستفهم كيف يتم تحويل الكلمة العربي الى unicode Converter Arabic and Unicode (v. 3).accdb
    1 point
  42. مثال أخر بالمشاركة مع الأخ @ابو جودي وبعد كونسولتو لمعرفة علة المريض 😂 , مثال لاستعلام فرعى لحقل ترقيم تلقائى يعيد ضبط نفسه حتى مع حذف سجلات من وسط السيريال : لدينا هذه البيانات فى الجدول : ID FullName 8 a 13 B 14 c 15 d 16 E 17 D 19 EEE سيريالات غير منضبطة , انظر للاستعلام التالى : SELECT A.FullName, A.ID, (SELECT Count("*") FROM tblData AS B WHERE B.[ID]<A.[ID])+1 AS NewID FROM tblData AS A; تم استخدام دالة Count والنتيجة حاول تحذف اى سجل من المنتصف , ستجد ان الترقيم تم اعادة ضبطه ليتناسب مع السجلات الجديدة . انظر المرفق . دمتم بود . Sequence.accdb
    1 point
  43. مثال آخر ولكن اكثر تقدما (عن نفسى احتجته فى عملية حسابية ولم اكن اعرف شئ عن الاستعلامات الفرعية واجابة السؤال هى ما دفعنى للبحث والتطبيق عليها) : هذه قائمة العملاء فى شركة ما : ID Client 1 Mohamed 2 Amr 3 Ahmed يقوم كل عميل منهم بعمل 4 طلبيات فى الشهر بمعدل طلبية كل اسبوع مثلا , كل طلبية لها تاريخ بداية توريد وتاريخ نهاية توريد وهو التاريخ الذى سيقوم العميل باستلام البضائع فيه , انظر لهذه البيانات تتضمن طلبيتين لعميلين فى تواريخ مختلفة : الطلبيات وتواريخها : OrderID Client StartFrom EndsOn 2022-Ahmed1 Ahmed 03/01/2022 07/01/2022 2022-Ahmed2 Ahmed 03/02/2022 05/02/2022 2022-Amr1 Amr 01/01/2022 05/01/2022 2022-Amr2 Amr 20/01/2022 25/01/2022 تفاصيل المنتجات المطلوبة : OrderID Product OrderQty 2022-Amr1 Banana 120 2022-Amr1 Choclate 100 2022-Amr1 Juice 130 2022-Amr1 Mango 100 2022-Amr1 Milk 150 2022-Amr1 Water 150 2022-Amr2 Banana 250 2022-Amr2 Choclate 240 2022-Amr2 Juice 210 2022-Amr2 Mango 220 2022-Amr2 Milk 250 2022-Amr2 Water 300 2022-Ahmed1 Banana 250 2022-Ahmed1 Choclate 70 2022-Ahmed1 Juice 250 2022-Ahmed1 Mango 20 2022-Ahmed1 Milk 250 2022-Ahmed1 Water 250 2022-Ahmed2 Banana 300 2022-Ahmed2 Choclate 70 2022-Ahmed2 Juice 300 2022-Ahmed2 Mango 50 2022-Ahmed2 Milk 300 2022-Ahmed2 Water 300 وهذا جدول المبيعات : Zdate Product UnitPrice QtySold TotalAmount Client 01/01/2022 Choclate $5.00 70 350 Amr 02/01/2022 Juice $3.00 100 300 Amr 02/01/2022 Mango $7.00 30 210 Amr 04/01/2022 Milk $4.00 100 400 Amr 04/01/2022 Water $2.50 100 250 Amr 03/01/2022 Banana $1.00 30 30 Ahmed 03/01/2022 Choclate $5.00 60 300 Ahmed 05/01/2022 Mango $7.00 10 70 Ahmed 07/01/2022 Milk $4.00 75 300 Ahmed 07/01/2022 Water $2.50 75 187.5 Ahmed 20/01/2022 Banana $1.00 70 70 Amr 20/01/2022 Choclate $5.00 90 450 Amr 22/01/2022 Juice $3.00 150 450 Amr 22/01/2022 Mango $7.00 50 350 Amr 25/01/2022 Milk $4.00 150 600 Amr 25/01/2022 Water $2.50 150 375 Amr 03/02/2022 Banana $1.00 35 35 Ahmed 03/02/2022 Choclate $5.00 67 335 Ahmed 04/02/2022 Juice $3.00 80 240 Ahmed 04/02/2022 Mango $7.00 20 140 Ahmed 05/02/2022 Milk $4.00 80 320 Ahmed 05/02/2022 Water $2.50 80 200 Ahmed هناك قاعدة بيانات مرفقة لنظرة افضل Amr - SubQueries.accdb. المطلوب : متابعة كل طلبية لكل عميل لكل منتج على حدى ماذا تم تسليمه والمتبقى منها فى التواريخ التى تقع بين تاريخ بداية التوريد وتاريخ نهايته . طبعا كان من السهل الحصول على المبيعات بين تاريخين محددين او يتم كتابتهم يدويا او يتم الاشارة اليهم فى نموذج ما ومن الاسهل اذا كان رقم الطلبية مذكور فى جدول المبيعات وبناء عليه يتم ربط الاستعلامات ببعضها والحصول على النتيجة المرجوة , ولكن الصعوبة ماذا لو كان التاريخين مكتوبين فى عمود داخل نفس الاستعلام مثلا ؟ وطبعا الشروط كثيرة ورقم الطلبية غير مذكور فى المبيعات ويتم استنتاجها من تاريخ البيع انظر الاستعلام التالى QryFollowUp : SELECT QryOrders.OrderID, QryOrders.Client, QryOrders.Product, QryOrders.OrderQty, Nz((select Sum(QtySold) From TblSales AS T Where T.Product = QryOrders.[Product] And T.Client = QryOrders.[Client] And (T.zDate >= QryOrders.[StartFrom] And T.zDate <= QryOrders.[EndsOn])),0) AS QtyDelivered, [OrderQty]-[QtyDelivered] AS Remains FROM QryOrders; فى هذا المثال ستجد ان الاستعلام الفرعى ليس معيار ولكن حقل او عمود فى الاستعلام كما فى الصورة التالية هذا الاستعلام يقوم بحساب ما تم بيعه من منتج ما بشرط تساوى اسم العميل و اسم المنتج ووقوع تاريخ البيع بين تاريخى بدء التوريد ونهايته والمذكور فى جدول الطلبيات , طبعا شروط كثيرة وقلة معطيات ولكن النتيجة سريعة ودقيقة بل وافضل حيث انه فى حالة عدم وجود مبيعات ينطبق عليها الشروط سيظل يذكر رقم الطلبية والمنتج ولكن كمية المبيعات ستكون صفر وهو ما كان صعب تطبيقه بالطريقة العادية. انظر النتيجة لو تم تغيير تاريخ بداية ونهاية التوريد فى جدول الطلبيات ستتغير النتائج فى هذا الاستعلام تلقائياً طبعا 😆. ملاحظات على المثال : تم استخدام Alias للاستعلام الفرعى يرمز له بالحرف T وذلك لتسهيل الاشارة اليه فيما بعد. يلاحظ انه تم استخدام دالة الجمع Sum وبالتالى يمكن استخدام باقى الدوال مثل (Min-Max-Average-First-Last ) الى آخره . يتبع بمثال آخر .
    1 point
  44. تم التطبيق على ملفاتك أخي @ahmus في حال الاتصال يفتح لك النموذج الرئيسي على طول . وفي حال عدم الاتصال يظهر لك : لا : يغلق لك البرنامج . نعم: يفتح لك مستعرض الملفات وتختار منه ملف الجداول : ثم بعدها تظهر لك رسالة النجاح ... ويفتح لك النموذج الرئيسي : اثناء انقطاع الشبكة - 3.rar
    1 point
  45. Just format the cells of results to from the icon (Left-to-Right Text Direction) and make it (Right-to-Left)
    1 point
  46. تم الحل المشكلة كانت بتجميع الازرار ولكن لابد من اعادة النظر فى اماكن الازرار تبعا للصلاحيات وشئ من اتنين 1 تكون قادر تعمل 2 تنتظر @د.كاف يار لان أهل مكة ادرى بشعابها لان انا بصراحة صدعت بقالى يومين اخبط راسى بالحيط وابحث عن مشكلة برمجية بالاكواد وبصراحة فى الوقت الحالى مش قادر افكر تانى الدائن و المدين.zip
    1 point
  47. استاذى الفاضل @abouelhassan اولا تقبل منى هذه المداخله ثانيا مرفق الى حضرتك ملف يحتوي على نظام الصلاحيات كامل ما عليك غير انك تعدل اسماء الفورم فى الجدول وتوزع هذا الكود على جميع الفورم عندك فى حدث عند فى الحالي Me.Form.AllowAdditions = Forms!Home!AllowAdd.Value Me.Form.AllowDeletions = Forms!Home!AllowDelete.Value Me.Form.AllowEdits = Forms!Home!AllowEdit.Value صلاحية المستخدمين.accdb
    1 point
×
×
  • اضف...

Important Information