اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

Foksh

الخبراء
  • Posts

    3100
  • تاريخ الانضمام

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

  • Days Won

    122

Foksh last won the day on أبريل 16

Foksh had the most liked content!

السمعه بالموقع

1687 Excellent

عن العضو Foksh

  • تاريخ الميلاد 07/02/1982

البيانات الشخصية

  • Gender (Ar)
    ذكر
  • Job Title
    فني صيانة موبايل وكمبيوتر
  • البلد
    الأردن ♥
  • الإهتمامات
    برمجة وصيانة الموبايل والكمبيوتر

اخر الزوار

5769 زياره للملف الشخصي
  1. لم أفهم المشكلة بشكل واضح ، افتح موضوع جديد وارفق ملف ، ولا تختصر على نفسك بالشرح مع دعم شرحك بمثال أو صورة
  2. في التحديث الجديد ، تم الإعتماد على الفكرة المطروحه هنا في هذا الموضوع " رافع ملفات جوجل درايف 2025 " ، لكن مع اختلاف بسيط جزئي كما أخبارناكم سابقاً .. تم إضافة الفكرة بعد استكمالها ، وبناءً على طلب الأساتذة لتكتمل الفكرة من جميع الجوانب ( ملف اكسيل محل ، أو مرفوق على جوجل شيت أو ملف اكسيل مرفوع برابط مباشر في جوجل درايف - يتم تحويله الى جوجل شيت . فقط اختر الرابط ( نسخ ولصق ) وادخاله في رسالة رابط الملف كما في الصورة التالية :- الأداة بتحديثها الجديد تدعم استكمال الجلسة لآخر رابط تم استخدامه ( توفيراً للوقت واختصاراً لفكرة استخدام الرابط نفسه في كل مرة ) ، بحيث تظهر لك رسالة كالآتي :- بحيث اذا كان اختيارك لـ Yes يتم التعرف على آخر رابط تم استخدامه ( حتى بعد اغلاق الأداة ) ، وإذا كان رد المستخدم No يتم اظهار رسالة ادخال رابط جديد ( ويتم اعتماده للجلسة اللاحقة ) .. الأداة تحتوي على معالج مساعد لمساعدة المستخدم ( أول مرة فقط ) على انشاء حساب في جوجل درايف وكيفية التعامل مع الـ API الخاصة بـ Google Sheets لتهيئة الأداة للتعامل مع روابط جوجل شيت لاستيراد السجلات منه . في التحديث الجديد للأداة ، يتم التعرف على الأخطاء التي يمكن حصولها أثناء اختيار حقل وخلية لا يوجد بينهما توافق في نوع البيانات ، فمثلاً لو تم اختيار خليه تحتوي على تاريخ ويقابلها حقل في الجدول ( في آكسيس ) من نوع رقمي مثلاً ، فإن الاداة تخبرك بنوع الحقل والتصحيح الذي يمكن تعديله .. الفكرة الحالية نفسها كما هو التعامل مع ملف محلي ( ملف اكسيل داخل الكمبيوتر ) لا تختلف في التعامل وطريقة الإستخدام كلياً .. واجهة الأداة :- * صورة من الواجهة الخاصة بـ Google Sheets . يلزم إضافة مكتبة Microsoft Office xx.0 Object Library فقط .. ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ Excel Importor 2025.accdb ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
  3. عين الصواب ، واعتقد انه حل مثالي .. وتطبيقاً كما أشار معلمنا الجليل @ابوخليل ، قمت بانشاء 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
  4. افتح موضوع جديد ، حتى يتسنى للأخوة والأساتذة المشاركة في طرح الأفكار
  5. وعليكم السلام ورحمة الله تعالى وبركاته ,, فقط غير في الكود من "أنثى" إلى "انثى" ( بدون الهمزة فوق الألف ) . ولتفريغ مربعي السرد ( الديانه والحالة الاجتماعية ) ، في حدث عند التحميل مثلاً أضف ما يلي :- Me.الديانه.RowSource = "" Me.الديانه.Value = Null Me.الحالة_الاجتماعية.RowSource = "" Me.الحالة_الاجتماعية.Value = Null
  6. هل جربته في حدث "on_current" في الحالي ؟؟ أو يمكنك تعطيل التنبيهات من نفس خصائص الآكسيس !!!!!
  7. سامحك الله معلمي الفاضل ، بل أنا الذي يتعلم منكم صدقني ,, ما انا به الآن ليس إلا ناتج عن توجيهاتكم و السير على خطاكم في العمل
  8. سؤال جميل ، طبعاً انت عارف انه يتم قراءة رأس التقرير أولاً وبالتالي لا يمكن جلب القيم كما نريدها ( كما كانت في السابق ) ، لذا سيتم تغيير الفكرة الى التالي .. أولاً تم نقل المتغيرات من الخاص الى العام في مديول منفرد ( فكرة معلمي @ابوخليل ) 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
  9. العفو استاذي ومعلمي الفاضل.. كلامك في محله ، وكنت في صدد تعديلها ولكن للأمانه انشغلت ،، كلام سليم ومنطقي وفكرة أجمل 😇
  10. تمام ، طيب شو رأيك نفكر بطريقتي بحيث انه ما نلعب بالإستعلامات ولا بأي شي تم تأسيسه من طرف أستاذنا أبو خليل ؟؟؟ أول شي بدنا نحجز متغيرات عامة في بداية التقرير للقيم اللي محتاجها ( ناجح ، ناجحة .. إلخ ) ، كالآتي :- 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
  11. وعليكم السلام ورحمة الله وبركاته .. اعذرني على مداخلتي عن الحل ، ولكن لتتبسط الأمور ، واعتبرني كشخص يقرأ الموضوع وغير متطلع على سوابق الخطوات التي سرت بها مع المعلم أبو خليل .. لم تذكر بناءً على ماذا ، وكيف ، وما هي الأسس التي عليها سيتم الإحصاء ؛ أو حتى توضيح أي نقطة من هذا القبيل 😅 . أنا أفكر معك بصوت عالٍ فقط ، ومتمنياً أن استطيع تقديم المساعدة مع الزملاء والأساتذة . فمثلاً هذه الصورة الناتجة من التقرير ..
  12. قمت بإعادة صياغة الأكواد وكتابتها بشكل يضمن عدم ظهور أخطار أثناء التنقل .. 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
  13. وعليكم السلام ورحمة الله وبركاته .. برأيي .. عند إغلاق النموذج ، إذا كان السجل الحالي في وضع تحرير ( Dirty ) ، فإن اكسيس ( للأسف ) يقوم بمحاولة حفظه تلقائياً . لكن !!! في بعض الحالات ، إذا كان المستخدم لم "يخرج" من آخر حقل عدله ( يعني لا يزال المؤشر في نفس الحقل ) . أو أن حدث الإغلاق يتم تنفيذه بسرعة قبل أن ينتهي الحفظ ، فإن acCmdSaveRecord لا يتم تننفيذه فعلياً كما تتصور ,, لذلك ، تشغيل استعلام إلحاق بعد هذا الحدث مباشرة قد يتم قبل ما اكسيس ينتهي فعلياً من حفظ السجل ، وده يسبب إن الاستعلام ما يشتغل بشكل صحيح "إلا بعد المحاولة الثانية" . ومن الحلول التي يمكنك الاعتماد عليها .. If Me.Dirty Then Me.Dirty = False فمن وجهة نظري هذا السطر ⬆ أقوى من acCmdSaveRecord لأنه :- أولاً ( وللأسف أيضاً ) يجبر اكسيس على حفظ السجل الحالي يدوياً ، بدون الاعتماد على واجهة المستخدم أو الأحداث التلقائية . لتنفيذ الحفظ في حدث BeforeClose أو BeforeUnload أو Form_BeforeUpdate ، حاول استخدام الفكرة التالية :- Private Sub Form_Unload(Cancel As Integer) If Me.Dirty Then Me.Dirty = False End If DoCmd.SetWarnings False DoCmd.OpenQuery "اسم استعلام الإلحاق الخاص بك" DoCmd.SetWarnings True End Sub
×
×
  • اضف...

Important Information