بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
3261 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
128
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Foksh
-
الفكرة واضحة جداً ، وستعمل على تسهيل عملية الادخال للبيانات بشكل ملحوظ .. على العموم جرب هذه الفكرة البسيطة وأخبرني بنتيجتها بعد تجربة على عدة تواريخ وعدة سجلات Personnel_affairs.zip
-
هي عائدة لك ولأفكارك في التصميم ، لكن كفكرة جميلة .. قمت بتصحيح فكرة عدد السجلات الذي كان لم يعمل Personnel_affairs.zip
-
برأيي هذه الفكرة قد تغني عن الكثير من التقارير .. فالفكرة قد تكون كالآتي .. في مجتمعنا التعليمي في الأردن ( على سبيل المثال ) الشهادة الدراسية تحتوي درجات الفصلين ( الأول والثاني ) ففي الفصل الأول يتم تعبئة العمود الخاص بالفصل الأول ودرجاته للمواد حسب الصف . بمعنى أدق الشهادات موحدة في تصميمها باختلاف الصفوف وموادها . ويأخذ الطالب نسخة عن هذه الشهادة وفي الفصل الثاني يتم طباعة شهادة تشمل الفصلين ( كوجه مقارنة للطالب ) ويأخذ المتوسط للفصل الدراسي الثاني باعتماد درجته للترفيع . ان شاء الله ستتمكن من ذلك . قد تكون العقبات على حد علمي بالاستعلامات الحالية وبنيتها .. هذا والله اعلم
-
ومشاركة مع أستاذي @ابوخليل ، هذه فكرتي المتواضعة .. حيث قمت بانشاء دالة في المديول = Public Function GetMada1ValByNum(Stucard As String, SafId As Long, madaNum As Long) As Variant GetMada1ValByNum = DLookup("mada1", "Tbl_degree_Detail", _ "Stu_card = '" & Stucard & "' AND Elsaf = " & SafId & " AND madaNum = " & madaNum) End Function لجلب قيمة الحقل Mada1 لكل طالب حسب معرف المادة . حيث يتم الاستدعاء في مربع النص بالشكل التالي =GetMada1ValByNum([id_student],[alsaf_Id],1) حيث 1 = رقم المادة ، وقابل للتغير حسب المواد لاحقاً وفي الغياب للذكور = =IIf([gender]=1,DCount("mada1","Tbl_degree_Detail","Stu_card='" & [id_student] & "' AND Elsaf=" & [alsaf_Id] & " AND mada1=0"),0) وللإناث = =IIf([gender]=2,DCount("mada1","Tbl_degree_Detail","Stu_card='" & [id_student] & "' AND Elsaf=" & [alsaf_Id] & " AND mada1=0"),0) لا اعلم ان كانت النتائج دقيقة ، ولكن لصاحب الشأن أخي @2saad المتابعة وإخباري بالنتيجة .. Database36.zip
-
والله أني خجلت أعلق وأرد بأنه المطلوب غير واضح بشكل كامل ، فيبدو أن أخي الكريم أسعد يتعامل مع الموضوع كأن من سيقرأ الكلمات التي عرف بها طلبه سيفهم بشكل كامل المقصود والمطلوب ,, ولكن رد معلمنا الفاضل شجعني على التعليق 😅 . ولطفاً من أخي أسعد ، لو تكرم بشرح المطلوب بشكل أوضح من :- أو حتى من الجملة :-
-
استيراد من الاكسل ⭐ هدية ~ مستورد السجلات الذكي 2025⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
-
يرجى التعديل أو الإضافة على الكود عند التنقل بين السجلات فى نموذج
Foksh replied to أحمد العيسى's topic in قسم الأكسيس Access
نعم ، فهمت المشكلة ,, استدعي الدالة GetStrat بدلاً من السطر الذي تم اضافته باستدعاء حدث بعد التحديث لمربع نص الرقم القومي -
يرجى التعديل أو الإضافة على الكود عند التنقل بين السجلات فى نموذج
Foksh replied to أحمد العيسى's topic in قسم الأكسيس Access
انت متأكد انك اشتغلت على زر الحذف ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ لأني جربت على سجلات كثيرة ولم تظهر لي الرسالة التي ارفقتها .. ولا اعرف كيف أو أين ظهرت معك !! -
يرجى التعديل أو الإضافة على الكود عند التنقل بين السجلات فى نموذج
Foksh replied to أحمد العيسى's topic in قسم الأكسيس Access
في زر الحذف :- Private Sub Cmdel_Click() On Error GoTo Err_Cmdel_Click If MsgBox(":ستقوم الآن بحذف السجل المسجل بملف رقم" & vbCrLf _ & vbCrLf _ & [Nr] & " " & vbCrLf _ & [Name_S] & vbCrLf _ & " " & vbCrLf _ & "هل أنت متأكد ؟" & vbCrLf _ & "أضغط ( نعم ) للإستمرار ، أو ( لا ) لإلغاء الأمر", vbQuestion + vbYesNo _ + vbMsgBoxRight, "تحذيـــر") = vbYes Then Me.Recordset.Delete Me.Recordset.MoveNext National_Nr_AfterUpdate ' فقط هذا السطر ما تم اضافته End If Exit_Cmdel_Click: Exit Sub Err_Cmdel_Click: MsgBox Err.Description Resume Exit_Cmdel_Click End Sub db1.mdb -
يرجى التعديل أو الإضافة على الكود عند التنقل بين السجلات فى نموذج
Foksh replied to أحمد العيسى's topic in قسم الأكسيس Access
الفضل لله عز وجل على نعمه أخي الكريم .. طيب بما إنك لا تريد تغيير اسلوبك ومستغني عن إضافة عدد حقول قليل في جدولك ، حاول استدعاء حدث بعد التحديث لمربع نص الرقم القومي بعد موافقة المستخدم على حذف السجل .. يعني كإنك رجعت كتبت الرقم القومي مرة تانية ولكن باستدعاء الأمر فقط 😁 ومع إني غير مقتنع بالفكرة ولكن حتى تظبط أمورك 😅 . -
يرجى التعديل أو الإضافة على الكود عند التنقل بين السجلات فى نموذج
Foksh replied to أحمد العيسى's topic in قسم الأكسيس Access
وعليكم السلام ورحمة الله وبركاته 🤗.. برأيي هذا سببه أن معظم مربعات النص في النموذج غير منضمة وليس لها مصدر بيانات مباشر ، وإنما تعتمد على جمل شرطية ومعادلات في الأكواد . لذا لا تظهر معك النتيجة الصحيحة إلا بعد العودة للسجل مرة أخرى فيتم تشغيل دوالك وأكواد مرة أخرى . فمن الجيد تخزين القيم في حقول مباشرة في الجدول حتى إن كانت بنظرك ليس ذات أهمية كبيرة 😇 . -
عمل حقول نصية في تذييل التقرير لكل صفحة تتغير بياناتها حسب الصف
Foksh replied to 2saad's topic in قسم الأكسيس Access
العفو يا صديقي .. -
لم أفهم المشكلة بشكل واضح ، افتح موضوع جديد وارفق ملف ، ولا تختصر على نفسك بالشرح مع دعم شرحك بمثال أو صورة
-
يرجى تعديل كود ملء مربع تحرير وسرد إذا كان هو السبب
Foksh replied to أحمد العيسى's topic in قسم الأكسيس Access
الأمر يعود لحاجتك ومتطلباتك -
استيراد من الاكسل ⭐ هدية ~ مستورد السجلات الذكي 2025⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
في التحديث الجديد ، تم الإعتماد على الفكرة المطروحه هنا في هذا الموضوع " رافع ملفات جوجل درايف 2025 " ، لكن مع اختلاف بسيط جزئي كما أخبارناكم سابقاً .. تم إضافة الفكرة بعد استكمالها ، وبناءً على طلب الأساتذة لتكتمل الفكرة من جميع الجوانب ( ملف اكسيل محل ، أو مرفوق على جوجل شيت أو ملف اكسيل مرفوع برابط مباشر في جوجل درايف - يتم تحويله الى جوجل شيت . فقط اختر الرابط ( نسخ ولصق ) وادخاله في رسالة رابط الملف كما في الصورة التالية :- الأداة بتحديثها الجديد تدعم استكمال الجلسة لآخر رابط تم استخدامه ( توفيراً للوقت واختصاراً لفكرة استخدام الرابط نفسه في كل مرة ) ، بحيث تظهر لك رسالة كالآتي :- بحيث اذا كان اختيارك لـ Yes يتم التعرف على آخر رابط تم استخدامه ( حتى بعد اغلاق الأداة ) ، وإذا كان رد المستخدم No يتم اظهار رسالة ادخال رابط جديد ( ويتم اعتماده للجلسة اللاحقة ) .. الأداة تحتوي على معالج مساعد لمساعدة المستخدم ( أول مرة فقط ) على انشاء حساب في جوجل درايف وكيفية التعامل مع الـ API الخاصة بـ Google Sheets لتهيئة الأداة للتعامل مع روابط جوجل شيت لاستيراد السجلات منه . في التحديث الجديد للأداة ، يتم التعرف على الأخطاء التي يمكن حصولها أثناء اختيار حقل وخلية لا يوجد بينهما توافق في نوع البيانات ، فمثلاً لو تم اختيار خليه تحتوي على تاريخ ويقابلها حقل في الجدول ( في آكسيس ) من نوع رقمي مثلاً ، فإن الاداة تخبرك بنوع الحقل والتصحيح الذي يمكن تعديله .. الفكرة الحالية نفسها كما هو التعامل مع ملف محلي ( ملف اكسيل داخل الكمبيوتر ) لا تختلف في التعامل وطريقة الإستخدام كلياً .. واجهة الأداة :- * صورة من الواجهة الخاصة بـ Google Sheets . يلزم إضافة مكتبة Microsoft Office xx.0 Object Library فقط .. ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ Excel Importor 2025.accdb ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ -
عمل حقول نصية في تذييل التقرير لكل صفحة تتغير بياناتها حسب الصف
Foksh replied to 2saad's topic in قسم الأكسيس Access
عين الصواب ، واعتقد انه حل مثالي .. وتطبيقاً كما أشار معلمنا الجليل @ابوخليل ، قمت بانشاء 4 حقول في الجدول Tbl_saf كالآتي :- EnteredBy SpellingReviewedBy WrittenBy WritingReviewedBy حقول نصية ، وقمت باضافة 4 مربعات نص في التقرير في الجزء PageFooterSection ، وتم استخدام الدالة Dlookup كالآتي :- Tx05 : =DLookUp("EnteredBy","Tbl_saf","safType = '" & [Combo5] & "'") Tx06 : =DLookUp("SpellingReviewedBy","Tbl_saf","safType = '" & [Combo5] & "'") Tx07 : =DLookUp("WrittenBy","Tbl_saf","safType = '" & [Combo5] & "'") Tx08 : =DLookUp("WritingReviewedBy","Tbl_saf","safType = '" & [Combo5] & "'") حيث تم الاعتماد على الكومبوبوكس Combo5 كشرط لمعرف الصف Database35.zip -
افتح موضوع جديد ، حتى يتسنى للأخوة والأساتذة المشاركة في طرح الأفكار
-
يرجى تعديل كود ملء مربع تحرير وسرد إذا كان هو السبب
Foksh replied to أحمد العيسى's topic in قسم الأكسيس Access
وعليكم السلام ورحمة الله تعالى وبركاته ,, فقط غير في الكود من "أنثى" إلى "انثى" ( بدون الهمزة فوق الألف ) . ولتفريغ مربعي السرد ( الديانه والحالة الاجتماعية ) ، في حدث عند التحميل مثلاً أضف ما يلي :- Me.الديانه.RowSource = "" Me.الديانه.Value = Null Me.الحالة_الاجتماعية.RowSource = "" Me.الحالة_الاجتماعية.Value = Null -
هل جربته في حدث "on_current" في الحالي ؟؟ أو يمكنك تعطيل التنبيهات من نفس خصائص الآكسيس !!!!!
-
سامحك الله معلمي الفاضل ، بل أنا الذي يتعلم منكم صدقني ,, ما انا به الآن ليس إلا ناتج عن توجيهاتكم و السير على خطاكم في العمل
-
سؤال جميل ، طبعاً انت عارف انه يتم قراءة رأس التقرير أولاً وبالتالي لا يمكن جلب القيم كما نريدها ( كما كانت في السابق ) ، لذا سيتم تغيير الفكرة الى التالي .. أولاً تم نقل المتغيرات من الخاص الى العام في مديول منفرد ( فكرة معلمي @ابوخليل ) Public cntNag7 As Long ' ناجح Public cntNag7a As Long ' ناجحة Public cnt3elagy As Long ' له برنامج علاجي Public cnt3elagyF As Long ' لها برنامج علاجي ثانياً تعديل كود التقرير الى التالي :- Private Sub Report_Open(Cancel As Integer) cntNag7 = 0 cntNag7a = 0 cnt3elagy = 0 cnt3elagyF = 0 Dim rs As DAO.Recordset Dim strSQL As String strSQL = "SELECT DISTINCT id_student, gender, alsaf_Id FROM qry_master WHERE rmz=1" Set rs = CurrentDb.OpenRecordset(strSQL) If rs.RecordCount = 0 Then rs.Close Set rs = Nothing Exit Sub End If Do While Not rs.EOF Dim total1 As Double, tot_All As Double, cntRsob As Integer Dim hala As String total1 = DSum("mgmo1", "qry_master", "id_student=" & rs!id_student & " AND rmz=1") tot_All = DSum("Darajh", "Tbl_materil_Detail", "saf_No=" & rs!alsaf_Id & " AND rmz=1") cntRsob = Nz(DCount("*", "qry_master", "id_student=" & rs!id_student & " AND rmz2=1 AND madaNum<>15 AND mgmo1<50"), 0) hala = funResult_A(CDbl(total1), CDbl(tot_All), CInt(cntRsob), CStr(rs!gender)) Select Case hala Case "ناجح" cntNag7 = cntNag7 + 1 Case "ناجحة" cntNag7a = cntNag7a + 1 Case "له برنامج علاجي" cnt3elagy = cnt3elagy + 1 Case "لها برنامج علاجي" cnt3elagyF = cnt3elagyF + 1 End Select rs.MoveNext If rs.EOF Then Exit Do Loop rs.Close Set rs = Nothing DoCmd.Maximize End Sub Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) On Error Resume Next Dim tot_All As Double, cntRsob As Integer Me.total1 = DSum("mgmo1", "qry_master", "id_student=" & [id_student] & " and rmz=1") tot_All = DSum("Darajh", "Tbl_materil_Detail", "saf_No=" & [alsaf_Id] & " and rmz=1") cntRsob = Nz(DCount("mgmo1", "qry_master", "id_student=" & [id_student] & " and rmz2=1" & " and madaNum<>15" & " and mgmo1<50"), 0) Me.alnesbah = funNesbah(CDbl(Me.total1), CDbl(tot_All)) Me.tgyeem1 = funTgyemResult_A(CDbl(Me.total1), CDbl(tot_All)) Me.hala = funResult_A(CDbl(Me.total1), CDbl(tot_All), CInt(cntRsob), CStr(Me.gender)) End Sub Private Sub ReportHeader_Format(Cancel As Integer, FormatCount As Integer) Me.txtNag7_H = cntNag7 Me.txtNag7a_H = cntNag7a Me.txt3elagy_H = cnt3elagy Me.txt3elagyF_H = cnt3elagyF End Sub Private Sub ReportFooter_Format(Cancel As Integer, FormatCount As Integer) Me.Tx01 = cntNag7 Me.Tx02 = cntNag7a Me.Tx03 = cnt3elagy Me.Tx04 = cnt3elagyF End Sub طبعاً تم اضافة الفكرتين في المرفق ، ولك حرية التغيير كما تريد .. Database34.zip
-
العفو استاذي ومعلمي الفاضل.. كلامك في محله ، وكنت في صدد تعديلها ولكن للأمانه انشغلت ،، كلام سليم ومنطقي وفكرة أجمل 😇
-
تمام ، طيب شو رأيك نفكر بطريقتي بحيث انه ما نلعب بالإستعلامات ولا بأي شي تم تأسيسه من طرف أستاذنا أبو خليل ؟؟؟ أول شي بدنا نحجز متغيرات عامة في بداية التقرير للقيم اللي محتاجها ( ناجح ، ناجحة .. إلخ ) ، كالآتي :- Dim cntNag7 As Long '= ناجح Dim cntNag7a As Long '= ناجحة Dim cnt3elagy As Long '= له برنامج علاجي Dim cnt3elagyF As Long '= لها برنامج علاجي وبعدين بدنا نخلي القيم هاي للمتغيرات = 0 لما التقرير يفتح :- Private Sub Report_Open(Cancel As Integer) cntNag7 = 0 cntNag7a = 0 cnt3elagy = 0 cnt3elagyF = 0 End Sub وعلشان ما نخرب اي شي تاني كمان ، وخصوصاً في حدث Detail_Format ، رح نضيف في نهاية الكود ( قبل End Sub طبعاً ) الكود البسيط التالي :- Select Case Me.hala Case "ناجح" cntNag7 = cntNag7 + 1 Case "باجحة" cntNag7a = cntNag7a + 1 Case "له برنامج علاجي" cnt3elagy = cnt3elagy + 1 Case "لها برنامج علاجي" cnt3elagyF = cnt3elagyF + 1 End Select علشان لو حبيت تستخدمة في تقرير تاني بقيم تانية ، تقدر تعدل على كيفك .. المهم وفي آخر خطوة في الحديث ReportFooter_Format ، رح نحدد قيم المتغيرات هاي لمربعات النص اللي رح يتم ادراج القيم العددية ( الإحصاء ) فيها ، كالآتي :- Private Sub ReportFooter_Format(Cancel As Integer, FormatCount As Integer) Me.Tx01 = cntNag7 Me.Tx02 = cntNag7a Me.Tx03 = cnt3elagy Me.Tx04 = cnt3elagyF End Sub طبعاً مربعات النص انا افترضت اسماء لها من عندي ، وفي المرفق التالي التطبيق ، جربه Database33.zip
-
وعليكم السلام ورحمة الله وبركاته .. اعذرني على مداخلتي عن الحل ، ولكن لتتبسط الأمور ، واعتبرني كشخص يقرأ الموضوع وغير متطلع على سوابق الخطوات التي سرت بها مع المعلم أبو خليل .. لم تذكر بناءً على ماذا ، وكيف ، وما هي الأسس التي عليها سيتم الإحصاء ؛ أو حتى توضيح أي نقطة من هذا القبيل 😅 . أنا أفكر معك بصوت عالٍ فقط ، ومتمنياً أن استطيع تقديم المساعدة مع الزملاء والأساتذة . فمثلاً هذه الصورة الناتجة من التقرير ..
-
قمت بإعادة صياغة الأكواد وكتابتها بشكل يضمن عدم ظهور أخطار أثناء التنقل .. Private Sub btnFirst_Click() If Me.RecordsetClone.RecordCount > 0 Then DoCmd.GoToRecord , , acFirst End If End Sub Private Sub btnNew_Click() If Me.AllowAdditions Then DoCmd.GoToRecord , , acNewRec Else MsgBox "النموذج لا يسمح بإضافة سجلات جديدة", vbExclamation + vbMsgBoxRight End If End Sub Private Sub btnNext_Click() With Me.RecordsetClone If .RecordCount > 0 Then .Bookmark = Me.Bookmark .MoveNext If Not .EOF Then DoCmd.GoToRecord , , acNext Else MsgBox "أنت في آخر سجل", vbInformation + vbMsgBoxRight End If End If End With End Sub Private Sub أمر553_Click() If Not Me.NewRecord And Me.CurrentRecord > 0 Then If MsgBox("هل تريد حذف السجل الحالي؟", vbYesNo + vbQuestion + vbMsgBoxRight, "تأكيد الحذف") = vbYes Then DoCmd.RunCommand acCmdDeleteRecord End If Else MsgBox "لا يوجد سجل لحذفه", vbExclamation + vbMsgBoxRight End If End Sub Private Sub أمر554_Click() With Me.RecordsetClone If .RecordCount > 0 Then .Bookmark = Me.Bookmark .MovePrevious If Not .BOF Then DoCmd.GoToRecord , , acPrevious Else MsgBox "أنت في أول سجل", vbInformation + vbMsgBoxRight End If End If End With End Sub Private Sub أمر555_Click() If Me.RecordsetClone.RecordCount > 0 Then DoCmd.GoToRecord , , acLast End If End Sub