كل الانشطه
- الساعة الأخيرة
-
استاذمازال نفس الاشكال هل المشكل عندي
- Today
-
تفضل استاذ . Bilal_Yamen.rar
-
-
kkhalifa1960 started following ادراج صورة تتحرك في النموذج
-
-
السلام عليكم اريد صورة تتحرك في النموذج
-
رائع وجميل جزاك الله خيرا وأحسن اليك
-
هذه الصورة النهائية لشجرة الحسابات treeview.accdb treeview - Copy (10).accdb
-
شكرا للاهتمام والرد استاذنا العزيز .. اتمنى التعديل ووضع الكود على نفس الفورم .. شكرا جزيلا
-
وعليكم السلام ورحمة الله وبركاته .. أهلاً أخي أمين ، وبارك الله بك على هذه المبادرة الجميلة .. بدايةً ، واعلم أنك قد طرحت فكرة من تطبيقك وخطوة بخطوة ، وهو شيء جميل شعورك بأنك استطعت نقل الفكرة وتطبيقها ونجاحها معك . ولذا ومستقبلاً ومن باب التطوير لك ، إليك نصيحة قد تكون الخطوة الأولى لبناء مشروع سليم . تتلخص بما يلي :- عدم إستعمال المسميات العربية للحقول أو العناصر أو المكونات بشكل عام ( حقول ، جداول ، استعلامات ، مربعات نص أو أزرار .... إلخ ) . عدم استعمال المسافات بين أسماء المكونات التي تتكون من مقطعين أو أكثر ، وهنا لاحظت إنك تلافيت هذه النقطة باستخدامك الشرطة السفلية أو العادية ( ـ ، - ) في معظم الأحيان . حاول دائماً مستقبلاً - ( إن شاء الله ) - أن يكون لأسماء العناصر دلالة عليها . بدلاً من استعمال الأسماء الإفتراضية مثل text0 , text1 أو أمر12 ، أمر45 ... إلخ . كي تسهل عليك الإستدلال عليها دون الحاجة للتنقل بين هنا وهناك لمعرفة وتذكر و كتابة أسمائها عند الإستدعاء داخل الأكواد . لاحظت أيضاً أنك استخدمت سطر VBA لأيقاف وتشغيل التنبيهات عند حذف سجل من الجدول ، وهذه نقطة إيجابية وجميلة منك انك استخدمتها ، بدلاً من الرسائل المزعجة التي يظهرها آكسيس عند حذف أو إضافة أو تعديل سجل أيضاً لاحظت أنك قمت بتبسيط الأمور على من يريد الإستفادة من فكرتك ، فالأكواد بسيطة جداً ومفهومة و واضحة ، ولا تحتاج ترجمة حتى يتقنها من يريد الإتقان والفهم . شكراً لك على مشاركتك الجميلة ، ونأمل منك أن لا تقطعنا من أفكارك التي تساعد بها من يحتاجها
-
ترقيم الصفحات بشكل اختياري بدلاً من التلقائي
عبدالله بشير عبدالله replied to abassreda's topic in منتدى الاكسيل Excel
- 1 reply
-
- 3
-
-
-
الى كل المبتدئين أمثالي بحثت عن فكرة مدير مستخدمين بشكل احترافي تتناسب مع معلوماتى البسيطة فى اكسيس لأجد على YOUTUBE.THE BEST مثالاً حاولت تطبيقه بشكل مبسط ( أعتقد ذلك ) ، فأحببت أن ارفعه على هذا المنتدى عرفاناً و رد جميل للمنتدى و اصحاب العلم و المعرفة. المرفق مبنى على جدول واحد TBL_USERE بالإضافة إلى 4 نماذج ( مفتوحة المصدر - و بدون اخفاء حقول حتى يسهل توصل الفكرة ) 1- F_LOGIN : الخاص بمدير المستخدمين. 2-F_MAIN : الشاشة الرئيسية مضاف عليها شاشة بيانات العملاء كمثال تطبيقي. 3-F_USERS : شاشة اضافة و حذف مستخدم. 4 - F_CHANGE_PASS : شاشة تغير كلمة المرور. أتمنى أن أكون وُفقت ، وذلك بوضع مرفق ينال طموح أمثالي ( المبتدئين ). و على اصحاب العلم و المعرفة التوجيه و النصح و التعديل ، حتى يستفيد الجميع login.accdb
- Yesterday
-
⏳ باقي من الوقت : 7 أيام حتى نهاية التحدى الأول ⏳ باقي من الوقت : 7 أيام حتى نهاية التحدى الأول
-
فعلاً هذا هو المطلوب بارك الله فيك مع شكري وتقديري للأساتذة الكرام الذين كانوا لهم دورٌ بارزٌ في المساعدة والتوجيه
-
وهذه فكرة تجمع بين عرض التكرارات التي يتنافس فيها الطلاب حسب رغبتك .. Data_Base_Rep.zip
-
abassreda started following ترقيم الصفحات بشكل اختياري بدلاً من التلقائي
-
السلام عليكم ورحمة الله وبركاته كيف استطيع تغيير الترقيم للصفحات ليبدا من 11 بدلا من 1 مثل الوورد هل هناك طريقة ى الاكسل لهذا الطلب ولكم جزيل الشكر
-
ارسال ايميل جيميل ⭐ هدية ~ إرسال بريد إلكتروني من Gmail الى أي إيميل ⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
كلامك صحيح وسليم 100% ، لأنك تستعمل واجهة الموقع باللغة الإنجليزية ، فسوف تكون المحاذاة تلقائياً من اليسار لليمين ، و99.999% من المواضيع هنا تكتب ويساق فيها الحديث باللغة العربية ، لذا بدل واجهة الموقع الى العربية من أسفل الصفحة ، وستجد أن المشكلة تم حلها 😉 -
هذا ما يظهر عندي كمثال و هذا مثال أخر اما ما ارفقته انا كصورة في البداية فهو الشكل الصحيح للكلام بعد تعديل الاتجاه و انا لا اعرف كيف اظهره هنا في المنتدي كما اوضحت في أول صورة لي
-
fadi2000 joined the community
-
بسيطة أخي الكريم .. يعني انت تريد إظهار الطلاب الذين في المركز الرابع مثلاً جميعهم بالتمييز بينهم ( متكرر ) !!!!!!! انا لم أقترب من الدالة التي قمت بإنشائها ، حرصاً على أنه قد يكون مطلبك .. لكن بعد التوضيح ، إليك التعديل الذي تم على الدالتين أولاً :- 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 مباشرة . أما في الاستعلام المعدل ، إذا تساوى طالبان في المعدل ، انظر لرقم الطالب ؛ صاحب الرقم الأصغر يعتبر هو الأسبق . وبالنسبة لي هذا غير منطقي ، فلا بد من شرط ثاني لتحديد المنافس على نفس المركز !!!! 💥 وفي هذا الموضوع هنا ، قد تطرقنا مع مشاركة أخي @ابو جودي لنفس الفكرة تقريباً . وملفك بعد التعديل :- Data_Base.zip
-
SELECT TOP 10 S.StudentID, S.StudentName, S.ClassName, S.SETNO1, F.SemesterID, F.TotalSum, F.average, F.Grade, /* الترتيب الصحيح بدون قفزات */ (SELECT COUNT(DISTINCT F2.average) 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, /* تحويل الرقم إلى نص */ Switch( (SELECT COUNT(DISTINCT F2.average) 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 = 1, "الأول", (SELECT COUNT(DISTINCT F2.average) 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 = 2, "الثاني", (SELECT COUNT(DISTINCT F2.average) 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 = 3, "الثالث", (SELECT COUNT(DISTINCT F2.average) 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 = 4, "الرابع", (SELECT COUNT(DISTINCT F2.average) 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 = 5, "الخامس", (SELECT COUNT(DISTINCT F2.average) 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 = 6, "السادس", (SELECT COUNT(DISTINCT F2.average) 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 = 7, "السابع", (SELECT COUNT(DISTINCT F2.average) 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 = 8, "الثامن", (SELECT COUNT(DISTINCT F2.average) 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 = 9, "التاسع", (SELECT COUNT(DISTINCT F2.average) 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 = 10, "العاشر" ) AS RankText, /* إضافة كلمة "متكرر" عند وجود أكثر من طالب بنفس المعدل */ Switch( (SELECT COUNT(DISTINCT F2.average) 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 = 1, "الأول", (SELECT COUNT(DISTINCT F2.average) 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 = 2, "الثاني", (SELECT COUNT(DISTINCT F2.average) 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 = 3, "الثالث" ) & IIf( (SELECT COUNT(*) FROM TBL_Final1 AS F3 WHERE F3.SemesterID = F.SemesterID AND F3.average = F.average) > 1, " متكرر", "" ) AS RankFinal 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;
-
تفضل الصفحة كلها مع التعليقات بالانجليزية . Option Compare Database Option Explicit Public Enum NavAction navFirst = 1 navPrevious = 2 navNext = 3 navLast = 4 navNew = 5 End Enum '============================= ' Safe navigation with messages '============================= Public Sub NavigateRecord(frm As Form, action As NavAction) Dim rs As DAO.Recordset Set rs = frm.RecordsetClone If rs.RecordCount = 0 Then Exit Sub rs.MoveLast Select Case action Case navFirst If frm.CurrentRecord = 1 Then MsgBox "This is the first record", vbInformation Else DoCmd.GoToRecord , , acFirst End If Case navPrevious If frm.CurrentRecord = 1 Then MsgBox "This is the first record", vbInformation Else DoCmd.GoToRecord , , acPrevious End If Case navNext If frm.CurrentRecord >= rs.RecordCount Then MsgBox "This is the last record", vbInformation Else DoCmd.GoToRecord , , acNext End If Case navLast If frm.CurrentRecord >= rs.RecordCount Then MsgBox "This is the last record", vbInformation Else DoCmd.GoToRecord , , acLast End If Case navNew DoCmd.GoToRecord , , acNewRec End Select rs.Close Set rs = Nothing UpdateNavUI frm End Sub '============================= ' Update counter + buttons '============================= Public Sub UpdateNavUI(frm As Form) Dim rs As DAO.Recordset Set rs = frm.RecordsetClone If rs.RecordCount = 0 Then frm!TxtCount = "No records found" Exit Sub End If rs.MoveLast '===== Record counter ===== If frm.NewRecord Then frm!TxtCount = "New record" Else frm!TxtCount = "Record " & frm.CurrentRecord & " of " & rs.RecordCount End If '===== Disable / Enable buttons ===== frm!CmdFirst.Enabled = (frm.CurrentRecord > 1) frm!CmdPrevius.Enabled = (frm.CurrentRecord > 1) frm!CmdNext.Enabled = (frm.CurrentRecord < rs.RecordCount) frm!CmdLast.Enabled = (frm.CurrentRecord < rs.RecordCount) rs.Close Set rs = Nothing End Sub تفضل الصفحة كلها مع التعليقات بالفرنسية . Option Compare Database Option Explicit Public Enum NavAction navFirst = 1 navPrevious = 2 navNext = 3 navLast = 4 navNew = 5 End Enum '============================= ' Navigation sécurisée avec messages '============================= Public Sub NavigateRecord(frm As Form, action As NavAction) Dim rs As DAO.Recordset Set rs = frm.RecordsetClone If rs.RecordCount = 0 Then Exit Sub rs.MoveLast Select Case action Case navFirst If frm.CurrentRecord = 1 Then MsgBox "C'est le premier enregistrement", vbInformation Else DoCmd.GoToRecord , , acFirst End If Case navPrevious If frm.CurrentRecord = 1 Then MsgBox "C'est le premier enregistrement", vbInformation Else DoCmd.GoToRecord , , acPrevious End If Case navNext If frm.CurrentRecord >= rs.RecordCount Then MsgBox "C'est le dernier enregistrement", vbInformation Else DoCmd.GoToRecord , , acNext End If Case navLast If frm.CurrentRecord >= rs.RecordCount Then MsgBox "C'est le dernier enregistrement", vbInformation Else DoCmd.GoToRecord , , acLast End If Case navNew DoCmd.GoToRecord , , acNewRec End Select rs.Close Set rs = Nothing UpdateNavUI frm End Sub '============================= ' Mise à jour du compteur + boutons '============================= Public Sub UpdateNavUI(frm As Form) Dim rs As DAO.Recordset Set rs = frm.RecordsetClone If rs.RecordCount = 0 Then frm!TxtCount = "Aucun enregistrement" Exit Sub End If rs.MoveLast '===== Compteur d'enregistrements ===== If frm.NewRecord Then frm!TxtCount = "Nouvel enregistrement" Else frm!TxtCount = "Enregistrement " & frm.CurrentRecord & " sur " & rs.RecordCount End If '===== Désactiver / Activer les boutons ===== frm!CmdFirst.Enabled = (frm.CurrentRecord > 1) frm!CmdPrevius.Enabled = (frm.CurrentRecord > 1) frm!CmdNext.Enabled = (frm.CurrentRecord < rs.RecordCount) frm!CmdLast.Enabled = (frm.CurrentRecord < rs.RecordCount) rs.Close Set rs = Nothing End Sub