اذهب الي المحتوي
أوفيسنا

Gamal.Saad

الخبراء
  • Posts

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

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

  • Days Won

    3

كل منشورات العضو Gamal.Saad

  1. =DCount("empol";"zahrah";" [startdate] Between [forms]![copy_ff]![startdate] AND [forms]![copy_ff]![enddate] And [zy] = true") وهذا نفس كود الفترة لكن بزيادة شرط جديد : And [zy] = true
  2. نعم نعم أعتذر خطأ غير مقصود لأن القسمة كانت تتم على العدد المفترض للمقررات + 1 وهذا غير صحيح وتم التعديل بإزالة +1 Dynamic Array and form controls update.accdb
  3. اعمل استعلام توحيد DB_1.accdb
  4. يحتاج الحل للمراجعة و التحسين و أهم شيئ في فكرة الحل هو أن تضع أسماء المواد الدراسية في جدول ثم تقوم دالة باستيراد المسميات إلى أماكنها بالنموذج بدلالة رقم المادة Private Sub set_subject_interf() Dim rs As DAO.Recordset Dim F, s, ss As Integer Dim ctl As Control Set rs = CurrentDb.OpenRecordset("Subject") rs.MoveLast: rs.MoveFirst For F = 0 To rs.RecordCount - 1 '''''''' المرور على السجلات للحصول على مسميات المقررات For Each ctl In Me.Controls ''''''''' المرور على كائنات النموذج If ctl.ControlType = acLabel Then ''''''''' المرور على مربعات العنوان فقط ''''''''' تحديد رقم مربع العنوان ومطابقته مع كود المادة s = InStr(5, ctl.Name, "_") If Len(ctl.Name) > 8 Then ss = Mid(ctl.Name, 5, s - 5) If Mid(ctl.Name, Len(ctl.Name) - 3) = "_Lbl" Then If rs!subject_id = ss Then ctl.Caption = Nz(rs!subject_name, "") ' نسخ اسم المادة من الجدول لمربع العنوان End If End If End If Next ctl rs.MoveNext Next End Sub Dynamic Array and form controls 1.accdb
  5. وبارك فيكم جرب الكود : =DCount("num_m7_tsd";"cargoo";" [startdate] Between [forms]![copy_ff]![startdate] AND [forms]![copy_ff]![enddate]")
  6. عمل ومجهود رائع من الاستاذ ابو تراب وبالمرور على الكود تجد أن عدد المواد تم الاعلان عنه كمصفوفة باسم ٍSubjects كما يلي : Private subjects(12) As TextBox وهذا النوع يسمى Fixed أو ثابت ومحدد بعدد عناصر للمصفوفة ، ولتحويله لديناميك dynamic يكون الاعلان : Private subjects() As TextBox وذلك حتى تتمكن من تغيير حجم المصفوفة في أي وقت وفي أي مكان بالكود باستخدام الأمر ReDim كالتالي : ReDim subjects(12) ويتم استبدال الرقم الممثل لحجم المصفوفة بقيمة مربع نص به الرقم بالنموذج ، ولأنه يتم استدعاء المصفوفة في أكثر من مكان فيجب أن تستخدم أمر اضافي يحافظ على القيم داخل المصفوفة والتي تمثل درجات المواد الدراسية ، كما يلي : ReDim Preserve subjects(Me.Text1) وعلاوة على ما سبق يجب تغيير مسميات مربعات النص بالنموذج وتكون مسلسلة حتى :1/ يسهل الاشارة إليها 2/توفر عدد أسطر الكود. 3/تمكن من اضافة الكثير من المواد بعد ذلك طبعا أنا أحببت أن تعلم فكرتي في الحل لربما هناك حلول وأفكار أخرى أسرع وأفضل وسأجرب لك ذلك بأقرب وقت ممكن
  7. طبعا تضيف criteria معايير وشروط التنفيذ : =DCount("num_m7_tsd";"cargoo";" [startdate] = forms!copy_ff!startdate AND [time] > [Forms]![copy_ff]![time1] AND [time] < [Forms]![copy_ff]![time2]") dcount_where_date_time.accdb
  8. هل تريد توزيع 10 درجات على مقررات الرسوب لكل طالب بحبث : 1 - لا يتم التوزيع اذا كانت المواد أكثر من ثلاثة ؟ أم ماذا تقصد ؟ 2 - وما معنى : يتم التوزيع اذا كان الطالب ناجحا ؟ فاذا كان ناجحا لماذا توزع عليه درجات للنجاح ؟
  9. برنامج جميل وسريع وصغير المساحة ، نشكرك أستاذنا العزيز/ jjafferr وأحب أن أشارك في البرنامج من أجل زيادة سهولة الاستخدام : يمكن اضافة باراميتر NOASK للأمر حتى يتم تخطي المطالبة بادخال رقم 1 j2p.exe /NOASK أو قم بوضع المرفق التالي بجوار البرنامج بعد فك الضغط No Ask.rar
  10. رأس الصفحة Page Header يمكنك اخفاؤه برمجيا واظهاره في أي صفحة تريدها بكتابة الكود داخل التقرير من حدث تنسيق Format الكود التالي يخفي رأس الصفحة في جميع الصفحات : Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer) PageHeaderSection.Visible = False End Sub ولإظهار رأس الصفحة في الصفحة الأولى فقط دون الباقي : Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer) If Me.Page > 1 Then PageHeaderSection.Visible = false Else PageHeaderSection.Visible = true End If End Sub وممكن تختار رقم صفحة معينة
  11. كلك ذوق وأخلاق وعلم أستاذ أحمد الفلاحجى وبالتوفيق أستاذ عمر omarAbdalrazaq
  12. عادي مفيش مشكلة بس التجميع هيكون : بدلاً من السيد/ أحمد ، العقيد/ وليد ، والوزير/ سيد ستجد : 4/ أحمد ، 14/وليد ، 22/ سيد لأن الجدول المشار إليه فيه أكواد الرتب أو اللقب وليس أسمائها ولحل مؤقت للمشكلة يجب تعديل الدالة وعمل ربط مع جدول آخر به كود اللقب واسم اللقب ، كما بالمرفق NewDB3.accdb
  13. استنادا للدالة التي أوردها أستاذ أحمد الفلاحجى سابقاً فانظر المرفق NewDB2.accdb
  14. هههه ليس لهذه الدرجة ، لكن من الوهلة الأولى رأيت في أحد الحقلين الذين ذكرتهما لك ، معادلة تعتمد على معادلة ثانية ، والثانية تعتمد على ثالثة والثالثة تجمع أكثر من حقل وربما أحد تلك الحقول له معادلة ولذلك أقترج أن تستعين بجدول مؤقت لكي نوقف تسلسل المعادلات قبل أن يقوم البرنامج بالسب ونضطر للرد عليه سأرفق لك الفكرة العامة إن شاء الله وأنت فقط راجع المعادلات والقيم والحقول المطلوبة
  15. متابعة مع أستاذنا / جعفر وأؤكد على ما قاله : لذلك إذا قمت يا أستاذ أحمد بإزالة أو تعطيل آخر حقلين في الاستعلام المعقد (أعتقد اسمهما ksb , total_dr_2) فإنه يعمل جيدا
  16. وبارك فيك أخي الكريم وفي الاستاذ خالد وتقبل منكم صالح الاعمال لكن لي استفسار بسيط : لماذا التكرار في هذه الاسطر ؟ حيث أرى أنها متشابهة تمامافإن كانت كذلك فيمكنك وضعها مرة واحدة في دالة ثم تقوم باستدعائها Me.a1.Caption = "100" Me.s1.Caption = "50" Me.a2.Caption = "100" Me.s2.Caption = "50" Me.a3.Caption = "100" Me.s3.Caption = "50" Me.a4.Caption = "100" Me.s4.Caption = "50" Me.a5.Caption = "100" Me.s5.Caption = "50" Me.a6.Caption = "100" Me.s6.Caption = "50" Me.a7.Caption = "100" Me.s7.Caption = "50" Me.a8.Caption = "100" Me.s8.Caption = "50" Me.a9.Caption = "100" Me.s9.Caption = "50" Me.a10.Caption = "100" Me.s10.Caption = "50" Me.a11.Caption = "100" Me.s11.Caption = "50"
  17. بعد اذن أ/ خالد : ممكن فكرة الحل تعتمد على القيام بحساب مربعات النص داخل النموذج المحتوية فقط على القيم الرقمية أو التي تبدأ بحروف معينة وطبعا الحساب من حيث القيمة والعدد وتقسمهم على بعض قبل فتح التقرير ضع مربع نص مثلا اسمه avtext داخل النموذج وقبل فتح التقرير مباشرة ضع الكود Dim ctl As Control Dim C, v As Integer For Each ctl In Me.Controls If ctl.ControlType = acTextBox Then ' check text box only If ctl.name Like "m*" Then ' check if text box name start with m If Nz(ctl.Value, "") <> "" Then ' check if text box not empty v = v + ctl.Value ' value counter C = C + 1 ' number counter End If End If End If Next ctl avtext = v / C
  18. أقترح حذفها بصورة نهائية وتنشئها فقط عند الحاجة اليها ثم تحذفها قبل غلق القاعدة ، طبعا هذا كله برمجيا . وابحث بالمنتدى عن أكواد الانشاء والحذف تلك.
  19. أقترح أن تضيف كود لحذف الأسطر الفارغة بالملف النصي .
  20. اعمل connect مع القاعدة الخلفية ومرره للمتغير db: Dim db As DAO.Database Set db = DAO.DBEngine.OpenDatabase("مسار_القاعدة", False, False) اخفي الجدول المطلوب بدلالة اسمه : db.TableDefs("اسم_الجدول").Attributes = dbHiddenObject ' لاظهار الجدول اكتب = 0 ويمكن تطوير الكود باضافة كلمة مرور فتح القاعدة اذا كانت محمية بكلمة مرور وذلك في السطر الثاني بعد كلمة false .
  21. طالما تشغيل البرنامج يتم جيدا من الاختصار ، بينما لا يتم التشغيل مباشرة من أكسس فأقترح كتجربة قيام أكسس بتشغيل الاختصار وليس البرنامج. ربما المسألة لها علاقة بتمرير Parameters أو تحديد working directory . لأنه للأسف لم يعمل برنامجك عندي حتى أستطيع التحقق من الاحتمال مع ملاحظة أن لدي نظام التشغيل ويندوز 7 (32 بت) و FrameWork 4.6.
  22. أسعدني دعائك وكلماتك التي تعبر عن معدنك الطيب ، وشرف لي أن تدعوني للنظر في برنامجك الرائع جزاك الله كل خير ، وأقدر لك هذا التواضع الجميل والذي يغلب على الاساتذة والخبراء بهذا المنتدي العريق وبالعودة للبرنامج أرى في نموذج البحث سرعة البحث ممتازة ولا أجد شيئا يستحق أن أعلق عليه ، ولكن أذكرك أن لا تنسى بعض التحسينات الهامشية مثل : 1 – مربع النص يظهر عدد آيات سالب إذا بحثت عن كلمة غير موجودة بالقرآن لذلك لا تنسى معالجة الأمر وأقترح بدلاً من كتابة كود : طريقة تنسيق مربع النص لاظهار الصفر في حالة القيم السالبة وذلك بتعديل Format من تبويب Format من خصائص مربع النص هذا وكتابة التنسيق #;\0;\0;\0 2 – يجب أن تكون أكواد البرنامج في compiled state (عمل compile من قائمة Debug) بعد الانتهاء من النسخة . 3 – يفضل أن تكون محاذاة النص في قائمة البحث من اليمين إلى اليسار لأن هذا مناسب للغة العربية للآيات .
  23. العفو أخونا وأستاذنا الكريم وربنا يوفقك في هذا البرنامج ويجعله في ميزان حساتك أنا جربت الحل على الملف السابق رفعه ، لكن طبعا لا أعلم مدى سرعة البحث اذا تم تطبيقه على بيانات جدول به كلمات القرآن الكريم كاملا ولم أجرب موضوع تجاهل الهمزات في كلمة البحث
×
×
  • اضف...

Important Information