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

AbuuAhmed

الخبراء
  • Posts

    1,056
  • تاريخ الانضمام

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

  • Days Won

    17

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

  1. وعليكم السلام موضوعك شائك، ومن أصعب الأمور التي تحتاج إلى سيطرة وخصوصا الموضفين غير الملتزمين بالتعليمات. الموضوع يحتاج إلى كتابة شفرة وربما لو تم بقاعدة بيانات أكسس يكون أسهل. أنا ابتدأت ولم أشأ أن أتراجع، فما عملته لك ليس عمل برمجة أو مبرمج بل هو عمل موظف شؤون موظفين أو سكرتاريا. عموما هذا ما لدي، أنصحك بالاستعانة بخدمات مبرمجي الأكسس ولا يهونون مبرمجي الإكسل. المصنف_03.xlsx
  2. الحل بدوال vba ربما محترفي الإكسل عندهم حل بمعادلات الإكسل، أتمنى أن أرى مساهمات الأساتذة. UmAlqura4Excel_02.xlsm
  3. هل هو هجري قياسي أم أم القرى؟
  4. اللهم بارك لنا في شعبان وبلغنا رمضان فلنكن أكثر احترافية اضطررت لعمل الاختبار والمقارنة استخدام عدد سجلات ضخم لتوسيع مقدار الفرق بين الشفرات وكما ذكرت لكم أن السجلات بلغت مليون ونصف سجل. اضطررت للتعديل على الشفرات بعضها مشترك كتعطيل تنبيهات النظام عند تحديث الجدول مثل مساحة التخزين ومساحة الذاكرة وهي لا تؤثر على وقت الأداء وبدونها سيزداد الوقت مع ظهور الرسائل ومن ثم إغلاقها. وبعضها غير مشترك لإعطاء فرصة لدخول الشفرات في المقارنة والتي بدونها ستستبعد حيث سيكون البون واسعا. رفعت لكم القاعدة بتعديلات كما استخدمتها في الفحص حتى لا أكون عرضة "للاتهامات" بالتلاعب بالنتائج. قمت قبل بدء عمل أي شفرة بعد فتح النموذج بالذهاب إلى آخر سجل ثم العودة إلى أول سجل وعمل Maximize وأحيانا أكررها عندما أشعر أن النظام لا يزال يقوم بتجهيزاته، ثم أذهب إلى الصفحة التي تحوي السجل مئة للتأكد من اختفاء العلامة وتبديل قيمة السجل 99. أرجع للجدول لفحص نتائج حقل y_n وهل تمت بنجاح. ملاحظات: - شفرتي وشفرة الأستاذ جعفر هي نفسها تماما عدا عبارة واحدة في البداية لتحديث السجل قبل تشغيل عبارة الـ sql فلذلك ليس هناك فرقا يذكر وكان المفترض أن استبعد أحدهما في المقارنة. - شفرة الأستاذ أبو عارف، عند تبديل قيمة السجل 99 تحتفظ بقيمة السجل 100 وربما بسبب "الحدث" وطريق حفظ السجل، لذلك تم استبعادها، وكذلك حتى لو تم إصلاح الخلل فلن يكون أداؤها سريعا لأن عبارة التحديث لكل السجلات. - شفرة الأستاذ فوكش لا تقوم بتحديث الحقل، لذلك تم استبعادها. - شفرتا الأستاذين خليفة وأبوجود مشكلتهما في عدم قيامهما بالفلترة قبل التحديث. توصيات: - لا بد من عمل الفلترة قبل التحديث الجماعي لتسريع المعالجة. - يفضل عمل فهرس للحقول التي يتم فيها البحث والفلترة للتسريع أيضا. - مستغرب أن شفرتي أبوجود وخليفة أعطتا وقتا أطول مع الحقل المفهرس، وهذه تحتاج إلى تحليل ودراسة. سامحوني قصدت المنفعة وهذا اجتهادي وشكرا للجميع واللي زعل مني يرسل لي صورته لأقبل رأسه قبل أن أعيدها له.
  5. سأرجع لكم الليلة إن شاء الله لتقديم بعض الملاحظات، مرفع لكم قاعدة البيانات بدون سجلات ومع بعض التعديلات في الأكواد لإدخال باقي المشاركين في المقارنة، ولكن للأسف تم استبعاد كود مشاركين اثنين حيث كانت نتائجهما خاطئة. 1624.Stress_Test_20.mdb
  6. أشكرك كثيرا سأقوم بإعادة المقارنة بعد عمل فهرس لحقل y_n توني أنتبه أن حلك الثاني نفس عبارة sql لحلي وكأني عملت نسخ ولصق لحلك! لم أنتبه له من قبل!! صدق المثل القائل "إذا عرف السبب بطل العجب" 🙂
  7. جيد لو تعيد المقارنة مع أكبر عدد من السجلات ومع اعتماد التعديلات الأخيرة مني ومن الأستاذ عارف ولا تنسى الهرسة وحذف الخدعة 😊. سنقبل بالنتائج منك ولن نفحص بعدك ولا داعي لرفع قاعدة البيانات أيضا. اسمح لي أطلب منك فأنا أتواصل معكم ومسغول في مشروع برمجة بعيدا عن الأكسس والفي بي أي.
  8. بعد فحصي الآن كلامك صحيح، مع أن وقت كتابتي للكود كنت لا أرى أثر التحديث إلا بعد "الخدعة": With Me.y_n .ControlSource = "" .ControlSource = "y_n" End With طبعا عملتها تجنبا لاستخدام Requery والرجوع إلى السجل الحالي. طبعا من الجيد قبل الاختبار فتح الجدول وتبديل قيمة y_n لعدة سجلات لتكون الصورة أكثر وضوحا. ماذا لو فهرسنا حقل y_n هل ستختلف السرعة؟
  9. وهذا كودي مستقلا وبه "خدعة" إن صح التعبير لإظهار البيانات بعد التحديث. Private Sub y_n_AfterUpdate() Me.Refresh DoCmd.RunSQL "UPDATE employees SET [y_n] = 0 WHERE [y_n]=-1 AND ID<>" & Me.ID & ";" With Me.y_n .ControlSource = "" .ControlSource = "y_n" End With End Sub
  10. لم أطلع على كل الحلول ولكن حل الأستاذ @kkhalifa1960 فكرته ذكية وحل مشكلة التركيز في الكود التالي: Private Sub y_n_AfterUpdate() ' تحديث جميع السجلات الأخرى لإلغاء التحديد If Me.y_n.Value = True Then Dim strSQL As String Dim Bm ' SQL لإلغاء التحديد عن جميع السجلات باستثناء الحالي strSQL = "UPDATE a SET y_n = False WHERE ID <> " & Me.id CurrentDb.Execute strSQL, dbFailOnError ' إعادة استعلام النموذج لعرض التغييرات Bm = Me.Bookmark Me.Requery Me.Bookmark = Bm End If End Sub
  11. ممكن تعلمنا مصدر المشاركة الأخرى، هل هي موقع أكسس آخر أو مجموعة واتساب أو رسالة داخلية أو ذكاء اصطناعي؟
  12. ما تفقد عزيز يا عزيزي، وممنون لمشاركتك الثمينة.
  13. ربما بهذه الحلقة تكفي: For i = 1 To 14 formOrReport.Controls("txt" & i) = Mid(nationalID, i, 1) Next i
  14. أولا: عدل اسم اسم الصندوق من txtMonthe إلى txtMonth واحذف الصندوق txtYear فليس له داع في جلب القيمة. ثانيا: ضع هذه الأكواد في النموذج بدلا من الأكواد السابقة: Private Sub Form_Load() Call txtMonth_AfterUpdate End Sub Private Sub txtMonth_AfterUpdate() Me.Roming = Nz(DSum("Nz([Remaining_Cridi],0)", "Baghi3112"), 0) End Sub ثالثا: الأخ جعفر عامل دوال وتاعب عليها وكان عليك التنبيه أن تأتي بقيمة جاهزة من الاستعلام وليس من جدول القروض. موفق أخي.
  15. اطلعت على الاستعلام والحقيقة تصميمه خاطئ. مرفق عبارة SQL لاستعلام تجميع أرجو أن ينتفع به: SELECT Sum(Nz([tbl_Loans]![Loan_Made],0)) AS Loan_Made, Sum(Nz([tbl_Loans]![Payment_Made],0)) AS Payment_Made, [Loan_Made]-[Payment_Made] AS Balance FROM tbl_Loans WHERE (((tbl_Loans.Loan_ID)>0) AND ((CLng([tbl_Loans]![Payment_Month]))<=CLng(CDate([Forms]![FrmMada5il]![txtMonthe])))); يمكن اختصار العبارة ولكن أنا عملت بكل الاحتياطات اختصارا للوقت.
  16. ملف اكسل بعد حذف السنوات الأكبر من 2024 وتعريف القرض أكبر من صفر والمجموع سليم حسب الدوال السابقة!! DSumLoans_01.xlsx
  17. لا أعلم إذا دالة التجميع تراعي قيم الـ Null عليه للاحتراز ممكن نحول الجملة أعلاه إلى: "Nz(Loan_Made, 0) - Nz(Payment_Made, 0)"
  18. لم أنزل المثال ولم أهتم بالنتيجة ولكن أحببت أن أقدم نصيحتي بشأن البحث بقيم التاريخ.
  19. المعذرة، أنصح عند عمليات البحث بتحويل حقول التاريخ إلى رقم طويل Long فهي أكثر أمانا للمبرمج: Private Sub txtMonthe_AfterUpdate() Dim Total As Double Dim EndDate As Long EndDate = CLng(CDate(Me.txtMonthe.Value)) Total = Nz(DSum("Loan_Made - Payment_Made", "tbl_Loans", "Clng(Payment_Month)<=" & EndDate & " AND Loan_ID > 0"), 0) Me.Roming = Format(Total, "Standard") End Sub
  20. التعديلات في دالة CheckInkhirat واستدعائها في المرفق. CheckInkhirat.xlsx
  21. أنا كنت أقصد هذا السطر وأخرى كذلك في هذه الدالة: Select Case [Forms]![FrmMenah]![Etar] عموما أنا عدلت في الدالة بحيث تعمل مع النموذجين FrmMenah و FrmCridi عموما تركيزي على عمل الدالة بدون أخطاء برمجية وليس لجلب القيم المطلوبة أعذري أنا دوري انتهى عند هذا الحد بسبب مشكلة صحية وهذا الأمر يتعبني ويصدع رأسي. BAR_A(2025)_01.rar
  22. يعمل هذا النموذج بشرط أن يكون نموذج FrmMenah مفتوحا، وحتى تقوم بالفحص افتح هذا النموذج أولا ثم افتح النموذج FrmCridi المحتوي على المشكلة. هناك كود في الموقع ليفحص لك أي نموج إذا كان مفتوحا أو لا، استفد منه بمنع فتح هذا النموذج إذا كان نموذج FrmMenah غير مفتوح. المشكلة في دالة CheckInkhirat حيث تحتاج إلى قيمة مأخوذة من النموذج FrmMenah.
  23. إذا تريدها للعرض فقط فسأصمم لك دالة تستدعى من خلال استعلام.
×
×
  • اضف...

Important Information