بحث مخصص من جوجل فى أوفيسنا
Custom Search
|
-
Posts
4525 -
تاريخ الانضمام
-
Days Won
198
نوع المحتوي
التقويم
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
مشاركات المكتوبه بواسطه Foksh
-
-
منذ ساعه, Moosak said:
والآخر هو نفس نموذجك مع بعض الإضافات ولكن لا تزال المشكلة قائمة .. 🤷♂️
فعلاً ليس هناك رد 🤣
مش عارف إذا فكرتك اللي جربت عليها منطقية حتى اعتمدها للتعديل أم لا 😅 ، هو في منطق في هذا الكود ؟؟
Private Sub Form_Timer() Me.ClockTxt.Requery Me.cTimeTxt.Requery End Sub-
1
-
-
12 ساعات مضت, dr_bioman said:
السلام عليكم
وعليكم السلام ورحمة الله وبركاته ..
ارفق ملفك أخي الكريم لتلافي اختلاف الإجابات عن طبيعة ملفك .
-
-
أخواني وأساتذتي ومعلمينا ( دون استثناء )
بعد المعاناة التي تواجه كل مبرمج أو هاوي أو محترف في التعامل مع الصور داخل آكسيس ، بوجود الترميش أو الوميض . وكنت قد طرحت تساؤلاً حول آلية تجنب هذه المشكلة عند تعامل آكسيس مع الصور داخل النماذج الحركية . خرجت بهذه الفكرة البسيطة والتي آمل أن تكون الحل الشافي لهذه المعضلة - كما عودناكم دائماً - بإيجاد الحل السحري لها .
الفكرة تم ترجمتها بأسلوب بسيط بحيث نجعل النموذج يقوم برسم الأحداث دفعة واحدة بدلاً من رسم كل حركة بشكل منفصل أثناء التعامل مع الصور .
'********************************************** '*** *** '*** FFFFFF OOO KK KK SSSS HH HH *** '*** FF O O KK KK SS HH HH *** '*** FFFFF O O KKK SS HHHHHH *** '*** FF O O KK KK SS HH HH *** '*** FF OOO KK KK SSSSS HH HH *** '*** *** '********* Anti Flicker By Foksh 2026 ********* Option Compare Database Option Explicit #If VBA7 Then Private Declare PtrSafe Function GetWindowLongPtr Lib "user32" Alias "GetWindowLongPtrA" _ (ByVal hWnd As LongPtr, ByVal nIndex As Long) As LongPtr Private Declare PtrSafe Function SetWindowLongPtr Lib "user32" Alias "SetWindowLongPtrA" _ (ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr Private Declare PtrSafe Function SetWindowPos Lib "user32" _ (ByVal hWnd As LongPtr, ByVal hWndInsertAfter As LongPtr, _ ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, _ ByVal uFlags As Long) As Long #Else Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function SetWindowPos Lib "user32" _ (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _ ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, _ ByVal uFlags As Long) As Long #End If Private Const GWL_EXSTYLE As Long = -20 Private Const WS_EX_COMPOSITED As Long = &H2000000 Private Const SWP_NOMOVE As Long = &H2 Private Const SWP_NOSIZE As Long = &H1 Private Const SWP_NOZORDER As Long = &H4 Private Const SWP_FRAMECHANGED As Long = &H20 Public Sub Form_SetComposited(ByVal frm As Access.Form, ByVal EnableIt As Boolean) On Error Resume Next #If VBA7 Then Dim h As LongPtr: h = frm.hWnd Dim ex As LongPtr: ex = GetWindowLongPtr(h, GWL_EXSTYLE) If EnableIt Then If (ex And WS_EX_COMPOSITED) = 0 Then Call SetWindowLongPtr(h, GWL_EXSTYLE, (ex Or WS_EX_COMPOSITED)) End If Else If (ex And WS_EX_COMPOSITED) <> 0 Then Call SetWindowLongPtr(h, GWL_EXSTYLE, (ex And Not WS_EX_COMPOSITED)) End If End If Call SetWindowPos(h, 0, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER Or SWP_FRAMECHANGED) #Else Dim h32 As Long: h32 = frm.hWnd Dim ex32 As Long: ex32 = GetWindowLong(h32, GWL_EXSTYLE) If EnableIt Then If (ex32 And WS_EX_COMPOSITED) = 0 Then Call SetWindowLong(h32, GWL_EXSTYLE, (ex32 Or WS_EX_COMPOSITED)) End If Else If (ex32 And WS_EX_COMPOSITED) <> 0 Then Call SetWindowLong(h32, GWL_EXSTYLE, (ex32 And Not WS_EX_COMPOSITED)) End If End If Call SetWindowPos(h32, 0, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER Or SWP_FRAMECHANGED) #End If End Sub
مع ترك المساحة بالتفعيل أو التعطيل حسب الحاجة .
بحيث يتم الاستدعاء لها في حدث عند التحميل للنموذج بهذا الأسلوب البسيط :-
Form_SetComposited Me, TrueForm_SetComposited Me, False
الملف مفتوح المصدر . لمن يرغب بالتجربة على مشروعه ، فضلاً وكرماً منه بإخباري بالنتيجة أن كانت ناجحة أم لا . علماً أنه تم استخدام الفكرة نفسها في إنشاء لعبة الأونو في هذا الموضوع مسبقاً ، والنتيجة كما شاهدتموها في أداء اللعبة والتعامل مع الصور بشكل دقيق لتخرج اللعبة كتجربة دون أي ترميش أو وميض عند حركة الصور داخل النماذج .
-
1
-
1
-
-
شو رأيكم نخلي اللعبة تنتقل لمستوى أكبر ، بحيث نخليها قابلة للّعب على الشبكة المحلية ؟؟؟
-
🤔
يعني تريد ألغاء الدمج للخلايا التي تم دمجها ، مع إعادة القيم لكل خلية !!!
تمام ، جرب هذا الماكرو أ واستعمله في حدث عند النقر لأي زر مثلاً :-
Sub UnMergeFoksh() Dim ws As Worksheet Dim r As Long, c As Long Dim mArea As Range Dim cellText As String Set ws = ActiveSheet Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual For r = 4 To 20 For c = 2 To 36 If ws.Cells(r, c).MergeCells Then Set mArea = ws.Cells(r, c).MergeArea cellText = ws.Cells(r, c).Text mArea.UnMerge mArea.NumberFormat = "@" mArea.Value = "'" & cellText mArea.HorizontalAlignment = xlCenter mArea.VerticalAlignment = xlCenter End If Next c Next r Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True Application.ScreenUpdating = True End Subطبعاً اعتقد انك هنا ستستغني عن حدث عند التغيير للورقة السابق .. ويصبح ملفك كالتالي للحدثين مع إضافة زرين .
-
1
-
-
وعليكم السلام ورحمة الله وبركاته ..
بداية أعتقد أن التنسيق الشرطي سيكون عقبة ومشكلة كونه - على حد علمي - لا يوم بالدمج للخلايا كما تريد . لذا ؛ لجأت لإستخدام دالة بسيطة كالتالي :-
Sub MergeFokshCells() Dim ws As Worksheet Dim lastRow As Long Dim dayRanges As Variant Dim i As Long, j As Long, startCol As Long Dim d As Long Application.DisplayAlerts = False Set ws = ActiveSheet lastRow = 20 dayRanges = Array(Array(2, 8), Array(9, 15), Array(16, 22), Array(23, 29), Array(30, 36)) For i = 4 To lastRow For d = LBound(dayRanges) To UBound(dayRanges) j = dayRanges(d)(0) Do While j <= dayRanges(d)(1) If ws.Cells(i, j).Value <> "" Then startCol = j Do While j < dayRanges(d)(1) And ws.Cells(i, j).Value = ws.Cells(i, j + 1).Value j = j + 1 Loop If j > startCol Then ws.Range(ws.Cells(i, startCol), ws.Cells(i, j)).Merge ws.Cells(i, startCol).HorizontalAlignment = xlCenter ws.Cells(i, startCol).VerticalAlignment = xlCenter End If End If j = j + 1 Loop Next d Next i Application.DisplayAlerts = True End Subوتستطيع استدعائها بحدث عند التغيير مثلاً داخل الورقة ، بالشكل التالي :-
Private Sub Worksheet_Change(ByVal Target As Range) Call MergeFokshCells End Subأو حتى في حدث عند الفتح إن أردت بنفس الأسلوب :-
Private Sub Workbook_Open() Call MergeFokshCells End Subجرب وأخبرني بالنتيجة ، طبعاً بعد حفظ الملف بصيغة
. جرب دون أرفاقي الملف لتتعرف على النتيجة
.
-
1
-
-
1 ساعه مضت, Foksh said:
ابسط طريقة هي استخدام الدالة Dlookup بشرط رقم الموظف الفريد .
تنفيذاً لما ذكرته لك :-
قمت بتغيير عنصر الصورة القديم الى عنصر صورة غير منضم فقط . والحدث في بعد التحديث للكومبوبوكس :-
Private Sub cmbUser_AfterUpdate() On Error GoTo Err_Handler Me.txtFullName = DLookup("fullname", "tblUsers", "username = '" & Me.cmbUser.Column(1) & "'") Me.imgPhoto.Picture = DLookup("Photo", "tblUsers", "username = '" & Me.cmbUser.Column(1) & "'") Exit Sub Err_Handler: MsgBox "حدث خطأ : الصورة غير موجودة في المجلد", vbCritical + vbMsgBoxRight, "خطأ" Me.imgPhoto.Picture = "" End Subأما فكرة الأستاذ خليفة
فهي جميلة لأنها تقوم ببناء المسار الكامل للصورة أولاً .
ثانياً أسهل لإضافة حقول أخرى في المستقبل ، لو حبيت تطور الفكرة . ثالثاً تتعامل مع جميع الإحتمالات . وانا افترضت أن مسار الصور في الحقول ثابت وغير قابل للعبث
لكني اقترحت الفكرة من باب التوسع في الخيارات
-
وعليكم السلام ورحمة الله وبركاته..
ابسط طريقة هي استخدام الدالة Dlookup بشرط رقم الموظف الفريد .
لم اطلع على الملف ، هي مجرد فكرة.
-
تمهيداً للتحدي الثاني ، وللإنتقال إلى مرحلة أكبر عن المستوى الأول . وإنطلاقاً من باب المشاركة للجميع .
سنتجه للأخذ بترشيحكم لموضوع من بين 3 مواضيع ، ليتم طرحه كسؤال التحدي الثاني .
1️⃣ إنشاء مؤقتة الصلوات ..
2️⃣ إنشاء نظام تسجيل دخول احترافي برمجياً ، مع نظام صلاحيات متعدد المستويات ..
3️⃣ إنشاء نظام قارئ للنصوص متعدد الخصائص ..
-
1
-
1
-
-
المشاركة التي كان لها نصيب الإعجاب في إجابتها ، كانت للأخ @Debug Ace . في هذه المشاركة هنا
-
أخواني وأساتذتي ومعلمينا ( دون استثناء )
الكل مر بحياته على هاي اللعبة البسيطة والجميلة ، إن كان في طفولته أو في شبابه ..
واليوم جسدناها بطريقة فوكشية جديدة من خلال آكسيس ، وتحدي معوقاته بالتعامل مع الصور .. وبدون ما نتكلم في هذه النقطة - واللي رح أتركها لكم للتجربة - رح أشرحلكم اليوم اللعبة ببساطة للي ما بعرفها من قبل .
تتكون اللعبة من مجموعة من الأوراق ، تتمثل في :-
- أوراق الأرقام : تحتوي اللعبة على أوراق الأرقام (9-0) ضمن ألوان مختلفة : الأحمر ، الأصفر ، الأزرق ، الأخضر .
- بطاقات الأوامر : تختلف هذه البطاقات في اللون والأمر الذي يترتب على استخدامها ، وهي كالآتي :-
- بطاقة تغيير الاتجاه : تُمكن اللاعب من تغيير سير اللعبة من اليسار إلى اليمين أو العكس . وإذا كانت اللعبة مكونة من لاعبين اثنين فقط ، يتم تخطي دور اللاعب الآخر ويعود الدور للّاعب الذي لعب البطاقة .
- بطاقة السحب +2 : وتمكن اللاعب من إجبار اللاعب التالي على سحب ورقتين من كومة الأوراق . ويتم تخطي دوره وينتقل الدور للّاعب الذي يليه .
- بطاقة تخطي الدور : تمكن اللاعب من منع اللاعب التالي من لعب دوره القادم وينتقل الدور للاعب الذي بعده .
- بطاقة السحب +4 : وتمكن اللاعب من اختيار اللون الذي سيلعبه اللاعب التالي ، وإجباره على سحب 4 أوراق من كومة الأوراق . ويتم تخطي دوره وينتقل الدور للّاعب الذي يليه .
بالنسبة إلى توزيع الأوراق في الأونو ، يتم التوزيع بشكل عشوائي ، حيث يوزع 7 أوراق لكل لاعب ويضع باقي الأوراق بشكل مقلوب على يسار منطقة اللعب ، وتسمى ( كومة اللسحب ) . وييتم وضع آخر ورقة بشكل مكشوف في منتصف منطقة اللعب ، وهذا المكان يسمى ( النار ) ، وإذا كانت أوّل ورقة مكشوفة في النار هي بطاقة تغيير اللون أو بطاقة اسحب 4 ، هنا يجب إعادتها لكومة الأوراق وتسحب ورقة أخرى غيرها .
طريقة اللعب :-
يبدأ اللاعب باللعب في نسختنا ، وذلك برمي أي ورقة في النار ، على أن توافق هذه الورقة آخر ورقة في النار بأحد الشرطين :-
- اللون نفسه من أي قيمة .
- القيمة نفسها من أي لون .ينتقل الدّور بين اللاعبين باتجاه عقارب الساعة ، وإذا لم يمتلك أحد اللاعبين ورقة أو بطاقة مناسبة للّعب ، يجب عليه أن يسحب من كومة الأوراق .
زر الأونو :-
وهي كلمة يقولها اللاعب إذا تبقت في يده ورقة أو ورقتان ، وسيلعب إحداهما ويضعها في كومة النار ، هنا يجب أن يقول " أونو " لتحذير اللاعبين الآخرين قبل رمي ورقته ما قبل الأخيرة ، وإذا لم يُحذّر اللّاعب من امتلاكه بطاقة واحدة وانتبه عليه اللاعبون الآخرون سيُعاقب بسحب بطاقتين من كومة الأوراق وهذا ما أطلقنا عليه اسم تحدي الأونو 😁 .
في نموذج البداية ، تم إضافة وتفعيل 3 خيارات للتحكم بخصائص اللعبة . بحيث لديك :-
1️⃣ السماح بالسحب التراكمي عند رمي ورقة السحب +2 . ماذا يعني هذا ؟ يعني لو اللاعب رمى ورقة +2 ، والكمبيوتر معه ورقة +2 ، فالكمبيوتر بقدر يرمي الورقة اللي معه بغض النظر عن لونها . وهيك بكون الدور عندك إنك تسحب 4 ورقات . إلا إذا كان معك ورقة +2 ثانية ، فبتقدر ترميها . وبرجع الدور للكمبيوتر يسحب 6 ورقات ..... وهيك بشكل تراكمي .
2️⃣ السماح بتبديل الأوراق عند رمي أي لاعب ورقة 0 أو ورقة 7 مهما كان لونها . فسيتم تبديل الأوراق التي بيدك لتصبح بيد الكمبيوتر والعكس طبعاً 😜 .
3️⃣ السحب من كومة الورق حتى يجد اللاعب ورقة صالحة للّعب . يعني بدل ما تسحب ورقة وحدة ، رح تضل تسحب حتى تلاقي ورقة ترميها للنار .
4️⃣ تحديد قيمة النتيجة التي يفوز اللاعب الذي يصل لها أولا . فعند فوز أي لاعب ، يأخذ مجموع القيم للأوراق التي في اللاعب الثاني . والإحتساب كما يلي لقيمة كل ورقة .
طريقة حساب النقاط :-
تحسب النقاط في لعبة أونو كما يأتي :-
أوراق الأرقام = قيمة الورقة نفسها .
بطاقة اسحب 2 = 20 نقطة .
بطاقة تخطّي الدّور = 20 نقطة .
بطاقة تغيير الاتّجاه = 20 نقطة .
بطاقة تغيير اللّون = 50 نقطة .
بطاقة اسحب 4 = 50 نقطة .
صورة حية من اللعبة :-
ملفات اللعبة للإصدارين ، 64 و 32 :-
:- يجب أن يكون ملف اللعبة بجانب مجلد الصور حتى لا تواجه مشاكل في اللعب .
-
3
-
أخي الكريم ، وعليكم السلام ورحمة الله وبركاته ..
فيما يخص طلبك ، اعتقد أنه مخالف لقوانين المنتدى ولأخلاقياته . حيث أن أصحاب الملفات المحمية بكلمة مرور قاموا بالتعب على مشروعهم وملفهم بحمايته من أيدي العابثين . أو ممن لهم هوايات بكسر الحماية . لذا فإنك لن تجد رداً لطلبك هنا للأسف .
شكراً لتفهمك
سيتم اغلاق الموضوع لمخالفته الإجابات لو تمت .
-
1
-
-
انتهت المدة المحددة للتحدي الأول ، ونشكر جميع من قام على هذا الدعم والمشاركة ..
وسيتم إختيار الإجابة التي نالت الإعجاب بالتقييم قريباً.
وسيتم الإعلان أيضاً عن التحدي الثاني قريباً جداً بإذن الله تعالى ، وذلك بالتصويت لنوع وموضوع التحدي الذي تفضلونه من بين مجموعة مواضيع.
شكراً لكم 💐
-
1
-
-
⏳ باقي من الوقت : 3 أيام حتى نهاية التحدى الأول
-
⏳ باقي من الوقت : 5 أيام حتى نهاية التحدى الأول
-
مين جاب سيرة الكوسا 🤓
44 دقائق مضت, Moosak said:قصدك :
هههههه فعلاً مهندسنا الغالي ،، شكلي في رابع يوم هكذا ، فكيف بعد اسبوع 🤣
أعاننا وإياكم الله ، وجزاكم الله على التنبيه
-
وعليكم السلام ورحمة الله وبركاته ..
أهلاً أخي أمين ، وبارك الله بك على هذه المبادرة الجميلة .
.
بدايةً ، واعلم أنك قد طرحت فكرة من تطبيقك وخطوة بخطوة ، وهو شيء جميل شعورك بأنك استطعت نقل الفكرة وتطبيقها ونجاحها معك . ولذا ومستقبلاً ومن باب التطوير لك ، إليك نصيحة قد تكون الخطوة الأولى لبناء مشروع سليم . تتلخص بما يلي :-
- عدم إستعمال المسميات العربية للحقول أو العناصر أو المكونات بشكل عام ( حقول ، جداول ، استعلامات ، مربعات نص أو أزرار .... إلخ ) .
-
عدم استعمال المسافات بين أسماء المكونات التي تتكون من مقطعين أو أكثر ، وهنا لاحظت إنك تلافيت هذه النقطة باستخدامك الشرطة السفلية أو العادية ( ـ ، - ) في معظم الأحيان
.
- حاول دائماً مستقبلاً - ( إن شاء الله ) - أن يكون لأسماء العناصر دلالة عليها . بدلاً من استعمال الأسماء الإفتراضية مثل text0 , text1 أو أمر12 ، أمر45 ... إلخ . كي تسهل عليك الإستدلال عليها دون الحاجة للتنقل بين هنا وهناك لمعرفة وتذكر و كتابة أسمائها عند الإستدعاء داخل الأكواد .
لاحظت أيضاً أنك استخدمت سطر VBA لأيقاف وتشغيل التنبيهات عند حذف سجل من الجدول ، وهذه نقطة إيجابية وجميلة منك انك استخدمتها ، بدلاً من الرسائل المزعجة التي يظهرها آكسيس عند حذف أو إضافة أو تعديل سجل
أيضاً لاحظت أنك قمت بتبسيط الأمور على من يريد الإستفادة من فكرتك ، فالأكواد بسيطة جداً ومفهومة و واضحة ، ولا تحتاج ترجمة حتى يتقنها من يريد الإتقان والفهم .
شكراً لك على مشاركتك الجميلة ، ونأمل منك أن لا تقطعنا من أفكارك التي تساعد بها من يحتاجها
-
1
-
⏳ باقي من الوقت : 7 أيام حتى نهاية التحدى الأول
-
وهذه فكرة تجمع بين عرض التكرارات التي يتنافس فيها الطلاب حسب رغبتك ..
-
1
-
-
4 ساعات مضت, omran2015 said:
ولدي عدة ملحوظات وهى:
1/ مشكلة القفز في الترتيب ولو تلاحظ أن الترتيب يظهر هكذا
بسيطة أخي الكريم ..
يعني انت تريد إظهار الطلاب الذين في المركز الرابع مثلاً جميعهم بالتمييز بينهم ( متكرر ) !!!!!!!
انا لم أقترب من الدالة التي قمت بإنشائها ، حرصاً على أنه قد يكون مطلبك .. لكن بعد التوضيح ، إليك التعديل الذي تم على الدالتين أولاً :-
Public Function fncTrteeb() Dim rst As Object Dim RankNumber As Long ' تصفير الحقل أولاً CurrentDb.Execute "UPDATE Q_top10 SET trteeb = Null" Set rst = CurrentDb.OpenRecordset("SELECT * FROM Q_top10 ORDER BY average DESC, StudentID ASC", 2) If rst.RecordCount = 0 Then Exit Function rst.MoveFirst RankNumber = 0 Do While Not rst.EOF And RankNumber < 10 RankNumber = RankNumber + 1 rst.Edit rst!trteeb = GetArabicRank(RankNumber) rst.Update rst.MoveNext Loop rst.Close Set rst = Nothing End Function Public Function GetArabicRank(ByVal n As Long) As String Select Case n Case 1: GetArabicRank = "الأول" Case 2: GetArabicRank = "الثاني" Case 3: GetArabicRank = "الثالث" Case 4: GetArabicRank = "الرابع" Case 5: GetArabicRank = "الخامس" Case 6: GetArabicRank = "السادس" Case 7: GetArabicRank = "السابع" Case 8: GetArabicRank = "الثامن" Case 9: GetArabicRank = "التاسع" Case 10: GetArabicRank = "العاشر" Case Else GetArabicRank = "المركز " & n End Select End Functionوالإستعلام سيصبح بهذاالشكل :-
SELECT TOP 10 S.StudentID, S.StudentName, S.ClassName, S.SETNO1, F.SemesterID, F.TotalSum, F.average, F.Grade, GetArabicRank(( SELECT COUNT(*) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND (F2.average > F.average OR (F2.average = F.average AND S2.StudentID < S.StudentID)) ) + 1) AS RankText FROM TBL_Students AS S INNER JOIN TBL_Final1 AS F ON S.StudentID = F.StudentID WHERE F.SemesterID = [أدخل رقم الفصل] AND S.ClassName = [أدخل اسم الصف] ORDER BY F.average DESC , S.StudentID;في الاستعلام القديم كان المنطق هو ( احسب كم طالب معدله أكبر مني ) ؟؟
فإذا كان هناك طالبان معدلهما متساوٍ ( مثلاً 91% ) ، فإن كلاهما سيجد نفس العدد كترتيب من الطلاب المتفوقين عليهما ، وبالتالي يأخذان نفس الرقم ( مثلاً المركز 2 ) ، ثم يقفز الترتيب للمركز 4 مباشرة .
أما في الاستعلام المعدل ، إذا تساوى طالبان في المعدل ، انظر لرقم الطالب ؛ صاحب الرقم الأصغر يعتبر هو الأسبق .
وبالنسبة لي هذا غير منطقي ، فلا بد من شرط ثاني لتحديد المنافس على نفس المركز !!!!
💥 وفي هذا الموضوع هنا ، قد تطرقنا مع مشاركة أخي @ابو جودي لنفس الفكرة تقريباً .
وملفك بعد التعديل :-
-
اهاااا ، بعد متابعة النتيجة ، وجدت أنه يأتيك بجميع الطلاب للفصل الأول والصف الثامن وعددهم 16 على سبيل المثال .. وأنت تريد فقط 10
جرب هذا الإستعلام التالي :-
SELECT TOP 10 S.StudentID, S.StudentName, S.ClassName, S.SETNO1, F.SemesterID, F.TotalSum, F.average, F.Grade, ( SELECT COUNT(*) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 AS RankOrder FROM TBL_Students AS S INNER JOIN TBL_Final1 AS F ON S.StudentID = F.StudentID WHERE F.SemesterID = [أدخل رقم الفصل] AND S.ClassName = [أدخل اسم الصف] ORDER BY F.average DESC, S.StudentID ASC;-
1
-
-
وعليكم السلام ورحمة الله وبركاته ..
جرب هذا المرفق بعد تثبيت التطبيقين المرفقين معه لدعم السحب من السكانر أو الفيدر
-
1
-
-
بدايةً ، وعليكم السلام ورحمة الله وبركاته ..
لديك نقطة واحد فقط كان عليك إدراكها . وهي إضافة الحقل ClassID من الجدول F ، وجعل الشرط [أدخل اسم الصف] له وليس للحقل ClassName من الجدول S . قبل تجربة المرفق ، جرب دون النظر للمرفق حتى تفهم المقصود من كلامي ..
مع العلم أن ملفك يعمل معي بشكل سليم باستخراج الأوائل . إلا إن كان هناك نقطة لم تتوضح في شرحك 😀

⭐ هدية ~ قاتل الترميش والوميض في اكسيس ⭐
في قسم الأكسيس Access
قام بنشر
جربت الفكرة ؟؟؟؟
مش هتخسر حاجة