
AbuuAhmed
الخبراء-
Posts
1,071 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
17
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو AbuuAhmed
-
موضوع قديم ذو صلة:
-
انتبهت أن بعض الدخول يكون مساءً فتوقعت أن هناك خطأ من الموظفين ومع التدقيق وجدت أنهم يخرجون صباحا لليوم التالي أي أنهم يعملون نوبة/شفت ليل. نسخة مدققة ومنقحة كثيرا. AttendanceIII_02.xlsm
-
نسخة أخيرة منقحة. Sub GetNames() Dim Row As Long, lastRow As Long, firstRow As Byte, valueRow As Byte Dim Col As Integer, lastCol As Integer, firstCol As Byte, Names As String Application.ScreenUpdating = False Sheets("ورقة1").Select '------------------ التحديد اليدوي ---------------- valueRow = 4 'سطر البيانات المطلوبة firstRow = 6 'أول سطر في الجدول firstCol = Range("B1").Column 'أول عمود في الجدول lastCol = Range("M1").Column 'آخر عمود في الجدول '-------------------------------------------------- lastRow = Cells(1, 1).SpecialCells(xlLastCell).Row For Row = firstRow To lastRow Names = "" For Col = firstCol To lastCol If Cells(Row, Col) <> "" Then Names = Names & IIf(Names = "", "", " - ") & Cells(valueRow, Col).Text End If Next Col Cells(Row, lastCol + 1) = Names Next Row Application.ScreenUpdating = True MsgBox "تم", vbInformation, "جلب الأسماء" End Sub DATA_07.xlsb
-
أزلت تعليقي فلا فائدة من كثرة الكلام.
-
حياك الله يا إبراهيم نسخ ولصق يدويا. أو افتح موضوع جديد تطلب فيها كود لفتح ملف الوورد ونسخ البيانات للذاكرة ثم لصقه في الإكسل ابتداء من الخلية A2 أما إذا كانت البيانات ضخمة فستحتاج إلى عمل كود سلسلة يقوم بنسخ ولصق سجل سجل. موفق أخي.
-
محاولتي معالجة بيانات الحضور تحتاج غالبا إلى تدخل يدوي، هذا ما استطعت عمله. AttendanceIII_01.xlsm
-
كلام غير دقيق، نعم في شفرتي هناك مشكلة واحدة لاختلاف في دالة التنسيق بين الإكسل والبيزك، ففي الإكسل "General" تكون في الأكسس "General Number" وهذا سبب بخطأ واحد فقط لرقم 52 والحل إما بعمل تبديل التنسيق للخلية أو تبديله في الشفرة أو نأخذ قيمة Text بدلا من Value للخلية المصدر. كما أنصحك بترك التفاضل بين الخبراء لأننا خضنا معركة كبيرة مع مالك الموقع لتجنب هذا التفاضل بتغيير الوصف من "أفضل إجابة" إلى "تمت الإجابة"، فغالبا تكون بها غبن للآخرين، فالأستاذ عبدالله أسس للكود وقبل طلبك الأخير باستخدام التنسيق، وكذلك الأستاذ محمد هشام قدم حله بعد اطلاعه على الحلين السابقين واستفاد من المقارنة وقد عدل مرفقه بعدها. لا يهمني اختيار جوابي كما فعلت ولا يعني ملاحظتي لك التقليل من جهد أساتذتي فإن أمكنك إعطاء الاختيار لأحد أساتذتي فافعل.
-
أضف في آخر الكود هذا السطر: Set ws = Nothing
-
جرب هذه المحاولة بعد الإضافة على كود الأستاذ عبدالله حسب طلبك الأخير. DATA_05.xlsb
-
بإذن الأستاذ عبدالله ضع سجل البداية في متغير يحميك من الأخطاء: firstRow = 5 'السجل المطلوب For rowIndex = firstRow + 1 To lastRow names = "" For colIndex = 2 To 13 If ws.Cells(rowIndex, colIndex).Value <> "" Then names = names & IIf(names = "", "", " - ") & ws.Cells(firstRow, colIndex).Value End If Next colIndex ws.Cells(rowIndex, 14).Value = names Next rowIndex
-
عدلت على مثالك ومنها تبديل نوع الحقول من نصي إلى رقمي وبعض إجراءات التحكم وكذلك تحسين شكل النموذج أيضا. bmiTest_03.accdb
-
مع الاعتذار، ملاحظة "فنية" في الكود، فهو عمليا صحيح 100% ومنظم بشكل جميل. الملاحظة هو هناك زيادة في الشرط غير ضارة يمكن إزالتها للاختصار بهذا الشكل: If bmi < 16.5 Then Me.ww = "نقص حاد بالوزن" ElseIf bmi < 18.5 Then Me.ww = "نقص بالوزن" ElseIf bmi < 25 Then Me.ww = "وزن مثالي" ElseIf bmi < 30 Then Me.ww = "زيادة في الوزن" ElseIf bmi < 35 Then Me.ww = "بداية سمنة" Else Me.ww = "سمنة مفرطة" End If
-
إذا الكسر مقتطع من رقم كسري مثلا 6.5 فهذا يعني ستة دينار ونصف الدينار وبما أن الدينار يساوي 1000 فلس فنصفها يعني 500 فلسا وليس خمسة فلوس. ثم أن جمع فلس فلوس وليس أفلاس عموما وجود الفاصلة العشرية في الفلوس شيء غريب. على كل كان الحل عندك وبأكثر من خيار ولكن يبدو أنك لم "تهضمه". يفضل أن لا تتجاهل أي واحد ممن سعى لخدمتك حتى وإن لم تجد في محاولته مبتغاك، كلامي للكل وليس لي. جرب أن تشغل الاستعلام أكثر من مرة وأعد مراجعة النتائج. موفق.
-
برجاء المساعدة في برمجة شيت بصمة حضور الموظفين
AbuuAhmed replied to سامر محمود's topic in قسم الأكسيس Access
من عيوب برامج الحضور عدم الاهتمام بحقل نوع التسجيل دخول أم خروج وبفقدان هذا الحقل في البرنامج سيكون غير عملي ومرهق جدا للمنشآت التي تعمل بنظام النوبات/الشفتات كالمصانع التي تعمل بثلاث نوبات. وبرمجيا الأمر سهل ولكن يبدو الضعف من مبرمجي هذه البرامج. أخي @ابوخليل لنفس الموضوع ونفس السائل في منتدى الاكسل عملت على تنظيم البيانات قد تستفيد منها لمعالجة بعض التداخلات وغياب بعضها. أنا من نصحته إلى اللجوء إلى منتدى الأكسس لأن معالجة الأمر بالإكسل به صعوية. لم أطلع على محاولتك إلى الآن، الليلة إن شاء الله. -
برجاء المساعدة في فصل التاريخ و الوقت
AbuuAhmed replied to سامر محمود's topic in منتدى الاكسيل Excel
وعليكم السلام موضوعك شائك، ومن أصعب الأمور التي تحتاج إلى سيطرة وخصوصا الموضفين غير الملتزمين بالتعليمات. الموضوع يحتاج إلى كتابة شفرة وربما لو تم بقاعدة بيانات أكسس يكون أسهل. أنا ابتدأت ولم أشأ أن أتراجع، فما عملته لك ليس عمل برمجة أو مبرمج بل هو عمل موظف شؤون موظفين أو سكرتاريا. عموما هذا ما لدي، أنصحك بالاستعانة بخدمات مبرمجي الأكسس ولا يهونون مبرمجي الإكسل. المصنف_03.xlsx -
الحل بدوال vba ربما محترفي الإكسل عندهم حل بمعادلات الإكسل، أتمنى أن أرى مساهمات الأساتذة. UmAlqura4Excel_02.xlsm
-
هل هو هجري قياسي أم أم القرى؟
-
منع التحديد المتعدد في خانة مربع الاختيار، في النموذج المستمر
AbuuAhmed replied to abofayez1's topic in قسم الأكسيس Access
اللهم بارك لنا في شعبان وبلغنا رمضان فلنكن أكثر احترافية اضطررت لعمل الاختبار والمقارنة استخدام عدد سجلات ضخم لتوسيع مقدار الفرق بين الشفرات وكما ذكرت لكم أن السجلات بلغت مليون ونصف سجل. اضطررت للتعديل على الشفرات بعضها مشترك كتعطيل تنبيهات النظام عند تحديث الجدول مثل مساحة التخزين ومساحة الذاكرة وهي لا تؤثر على وقت الأداء وبدونها سيزداد الوقت مع ظهور الرسائل ومن ثم إغلاقها. وبعضها غير مشترك لإعطاء فرصة لدخول الشفرات في المقارنة والتي بدونها ستستبعد حيث سيكون البون واسعا. رفعت لكم القاعدة بتعديلات كما استخدمتها في الفحص حتى لا أكون عرضة "للاتهامات" بالتلاعب بالنتائج. قمت قبل بدء عمل أي شفرة بعد فتح النموذج بالذهاب إلى آخر سجل ثم العودة إلى أول سجل وعمل Maximize وأحيانا أكررها عندما أشعر أن النظام لا يزال يقوم بتجهيزاته، ثم أذهب إلى الصفحة التي تحوي السجل مئة للتأكد من اختفاء العلامة وتبديل قيمة السجل 99. أرجع للجدول لفحص نتائج حقل y_n وهل تمت بنجاح. ملاحظات: - شفرتي وشفرة الأستاذ جعفر هي نفسها تماما عدا عبارة واحدة في البداية لتحديث السجل قبل تشغيل عبارة الـ sql فلذلك ليس هناك فرقا يذكر وكان المفترض أن استبعد أحدهما في المقارنة. - شفرة الأستاذ أبو عارف، عند تبديل قيمة السجل 99 تحتفظ بقيمة السجل 100 وربما بسبب "الحدث" وطريق حفظ السجل، لذلك تم استبعادها، وكذلك حتى لو تم إصلاح الخلل فلن يكون أداؤها سريعا لأن عبارة التحديث لكل السجلات. - شفرة الأستاذ فوكش لا تقوم بتحديث الحقل، لذلك تم استبعادها. - شفرتا الأستاذين خليفة وأبوجود مشكلتهما في عدم قيامهما بالفلترة قبل التحديث. توصيات: - لا بد من عمل الفلترة قبل التحديث الجماعي لتسريع المعالجة. - يفضل عمل فهرس للحقول التي يتم فيها البحث والفلترة للتسريع أيضا. - مستغرب أن شفرتي أبوجود وخليفة أعطتا وقتا أطول مع الحقل المفهرس، وهذه تحتاج إلى تحليل ودراسة. سامحوني قصدت المنفعة وهذا اجتهادي وشكرا للجميع واللي زعل مني يرسل لي صورته لأقبل رأسه قبل أن أعيدها له. -
منع التحديد المتعدد في خانة مربع الاختيار، في النموذج المستمر
AbuuAhmed replied to abofayez1's topic in قسم الأكسيس Access
سأرجع لكم الليلة إن شاء الله لتقديم بعض الملاحظات، مرفع لكم قاعدة البيانات بدون سجلات ومع بعض التعديلات في الأكواد لإدخال باقي المشاركين في المقارنة، ولكن للأسف تم استبعاد كود مشاركين اثنين حيث كانت نتائجهما خاطئة. 1624.Stress_Test_20.mdb -
منع التحديد المتعدد في خانة مربع الاختيار، في النموذج المستمر
AbuuAhmed replied to abofayez1's topic in قسم الأكسيس Access
أشكرك كثيرا سأقوم بإعادة المقارنة بعد عمل فهرس لحقل y_n توني أنتبه أن حلك الثاني نفس عبارة sql لحلي وكأني عملت نسخ ولصق لحلك! لم أنتبه له من قبل!! صدق المثل القائل "إذا عرف السبب بطل العجب" 🙂 -
منع التحديد المتعدد في خانة مربع الاختيار، في النموذج المستمر
AbuuAhmed replied to abofayez1's topic in قسم الأكسيس Access
جيد لو تعيد المقارنة مع أكبر عدد من السجلات ومع اعتماد التعديلات الأخيرة مني ومن الأستاذ عارف ولا تنسى الهرسة وحذف الخدعة 😊. سنقبل بالنتائج منك ولن نفحص بعدك ولا داعي لرفع قاعدة البيانات أيضا. اسمح لي أطلب منك فأنا أتواصل معكم ومسغول في مشروع برمجة بعيدا عن الأكسس والفي بي أي. -
منع التحديد المتعدد في خانة مربع الاختيار، في النموذج المستمر
AbuuAhmed replied to abofayez1's topic in قسم الأكسيس Access
بعد فحصي الآن كلامك صحيح، مع أن وقت كتابتي للكود كنت لا أرى أثر التحديث إلا بعد "الخدعة": With Me.y_n .ControlSource = "" .ControlSource = "y_n" End With طبعا عملتها تجنبا لاستخدام Requery والرجوع إلى السجل الحالي. طبعا من الجيد قبل الاختبار فتح الجدول وتبديل قيمة y_n لعدة سجلات لتكون الصورة أكثر وضوحا. ماذا لو فهرسنا حقل y_n هل ستختلف السرعة؟ -
منع التحديد المتعدد في خانة مربع الاختيار، في النموذج المستمر
AbuuAhmed replied to abofayez1's topic in قسم الأكسيس Access
وهذا كودي مستقلا وبه "خدعة" إن صح التعبير لإظهار البيانات بعد التحديث. 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 -
منع التحديد المتعدد في خانة مربع الاختيار، في النموذج المستمر
AbuuAhmed replied to abofayez1's topic in قسم الأكسيس Access
لم أطلع على كل الحلول ولكن حل الأستاذ @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