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

Gamal.Saad

الخبراء
  • Posts

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

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

  • Days Won

    3

مشاركات المكتوبه بواسطه Gamal.Saad

  1. 2 ساعات مضت, khasem said:

    توجد مشكلة في المجموع والمعدل من حيث الناتج  

    كذلك  المفروض المجموع والمعدل يظهر للناجح فقط اما المكمل والراسب فلا يظهر له مجموع

     

    منذ ساعه, Ahmed Sary said:

    أو

    المعادلة خطأ في البداية

    نعم نعم أعتذر  خطأ غير مقصود لأن القسمة كانت تتم على العدد المفترض للمقررات + 1  وهذا غير صحيح 

    وتم التعديل بإزالة +1

    Dynamic Array and form controls update.accdb

    • Like 1
    • Thanks 1
  2. يحتاج الحل للمراجعة و التحسين

    و أهم شيئ في فكرة الحل هو  أن تضع أسماء المواد الدراسية في جدول ثم تقوم دالة باستيراد المسميات إلى أماكنها بالنموذج بدلالة رقم المادة

    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

    • Like 2
  3. عمل ومجهود رائع من الاستاذ ابو تراب 

    وبالمرور على الكود تجد أن عدد المواد تم الاعلان عنه كمصفوفة باسم ٍSubjects  كما يلي :

    Private subjects(12) As TextBox

    وهذا النوع يسمى Fixed أو ثابت ومحدد بعدد عناصر للمصفوفة ، ولتحويله لديناميك dynamic يكون الاعلان :

    Private subjects() As TextBox

    وذلك حتى تتمكن من تغيير حجم المصفوفة في أي وقت وفي أي مكان بالكود باستخدام الأمر ReDim  كالتالي :

    ReDim subjects(12)

     ويتم استبدال الرقم الممثل لحجم المصفوفة بقيمة مربع نص به الرقم بالنموذج  ، ولأنه يتم استدعاء المصفوفة في أكثر من مكان فيجب أن تستخدم أمر اضافي يحافظ على القيم داخل المصفوفة والتي تمثل درجات المواد الدراسية ، كما يلي : 

    ReDim Preserve subjects(Me.Text1)

    وعلاوة على ما سبق يجب تغيير مسميات مربعات النص بالنموذج وتكون مسلسلة حتى :1/ يسهل الاشارة إليها   2/توفر عدد أسطر الكود. 3/تمكن من اضافة الكثير من المواد بعد ذلك 

    طبعا  أنا أحببت أن تعلم فكرتي في الحل لربما  هناك حلول وأفكار أخرى أسرع وأفضل  وسأجرب لك ذلك بأقرب وقت ممكن

    • Like 1
    • Thanks 2
  4. هل تريد توزيع 10 درجات على مقررات الرسوب لكل طالب بحبث :

    1 - لا يتم التوزيع اذا كانت المواد أكثر من ثلاثة ؟ أم ماذا تقصد ؟

    2 - وما معنى يتم التوزيع اذا كان الطالب ناجحا ؟ فاذا كان ناجحا لماذا توزع عليه درجات للنجاح ؟

    • Like 1
    • Thanks 1
  5. في ١٥‏/٥‏/٢٠٢٠ at 14:00, jjafferr said:

    برنامج يعمل كالتالي:

    تضع البرنامج في مجلد ، وتضع جميع صور jpg في نفس المجلد ، ثم انقر نقرتين على البرنامج ، وفي الشاشة السوداء اضغط على الرقم 1 من الكيبورد ، فتلقائيا يحول لك الصور الى ملف pdf

    برنامج جميل وسريع وصغير المساحة ، نشكرك أستاذنا العزيز/ jjafferr

    وأحب أن أشارك في البرنامج من أجل زيادة سهولة الاستخدام :

    يمكن اضافة باراميتر NOASK للأمر حتى يتم تخطي المطالبة بادخال رقم 1

    j2p.exe /NOASK

    أو  قم بوضع المرفق التالي بجوار البرنامج بعد فك الضغط

    No Ask.rar

    • Like 1
    • Thanks 1
  6. رأس الصفحة 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

    وممكن تختار رقم صفحة معينة 

     

     

    • Like 4
  7. 1 ساعه مضت, omarAbdalrazaq said:

    هل استطيع استبدال هذا الاستعلام بجدول اسماء السواق Tbl_WheelUsers

    عادي مفيش مشكلة بس التجميع هيكون بدلاً من السيد/ أحمد ، العقيد/ وليد ، والوزير/ سيد

    ستجد 4/ أحمد ، 14/وليد ، 22/ سيد

    لأن الجدول المشار إليه فيه أكواد الرتب أو اللقب وليس أسمائها

    ولحل مؤقت للمشكلة يجب تعديل الدالة  وعمل ربط مع جدول آخر به  كود اللقب واسم اللقب ، كما بالمرفق

    NewDB3.accdb

    • Like 3
  8. 13 ساعات مضت, احمد حبيبه said:

    لقد انشأت استعلام 3 واستعلام 4 ونفس الرساله الاستعلام معقد جدا جدا

    هههه ليس لهذه الدرجة  ،

    لكن من الوهلة الأولى رأيت في أحد الحقلين الذين ذكرتهما لك ، معادلة تعتمد على معادلة ثانية ، والثانية تعتمد على ثالثة

    والثالثة تجمع أكثر من حقل وربما أحد تلك الحقول له معادلة  

    ولذلك أقترج أن تستعين بجدول مؤقت لكي نوقف تسلسل المعادلات قبل أن يقوم البرنامج بالسب  ونضطر للرد عليه

    سأرفق لك  الفكرة العامة إن شاء الله وأنت فقط راجع المعادلات والقيم والحقول المطلوبة 

     

  9. متابعة مع أستاذنا / جعفر 

    وأؤكد على ما قاله :

    اقتباس
    في ١٣‏/٥‏/٢٠٢٠ at 02:13, jjafferr said:

    1. قد لا يكفيك الاستعلام qry_Calc_Data ، وانما قد تحتاج الى الاستعلام qry_Calc_Data2 او حتى 3 ، حتى لا يعطيك الاكسس خطأ "الاستعلام معقد جدا" ،

     

    لذلك إذا قمت يا أستاذ أحمد بإزالة أو تعطيل  آخر حقلين في الاستعلام المعقد (أعتقد اسمهما ksb  ,   total_dr_2)  فإنه يعمل جيدا

  10. وبارك فيك أخي الكريم وفي الاستاذ خالد وتقبل منكم صالح الاعمال
    لكن لي استفسار بسيط : لماذا التكرار في هذه الاسطر ؟ حيث أرى أنها متشابهة تمامافإن كانت كذلك

    فيمكنك وضعها مرة واحدة في دالة ثم تقوم باستدعائها

    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"

     

    • Like 1
  11. بعد اذن أ/ خالد :

    ممكن فكرة الحل تعتمد على القيام بحساب مربعات النص داخل النموذج  المحتوية فقط على القيم الرقمية  أو التي تبدأ بحروف معينة

    وطبعا الحساب من حيث القيمة والعدد وتقسمهم على بعض قبل فتح التقرير

    ضع مربع نص مثلا اسمه 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

     

    • Like 3
  12. اقتباس
    في ٢٨‏/٤‏/٢٠٢٠ at 22:57, Ahmed_J said:

     هل يمكن اخفاء الاستعلامات بصورة نهائية 

     

    أقترح حذفها بصورة نهائية وتنشئها فقط عند الحاجة اليها ثم تحذفها قبل غلق القاعدة  ، طبعا هذا كله برمجيا . وابحث بالمنتدى عن أكواد الانشاء والحذف تلك.

    • Like 1
  13. اعمل connect  مع القاعدة الخلفية  ومرره للمتغير db:

        Dim db As DAO.Database
        Set db = DAO.DBEngine.OpenDatabase("مسار_القاعدة", False, False)

    اخفي الجدول المطلوب بدلالة اسمه :

        db.TableDefs("اسم_الجدول").Attributes = dbHiddenObject    ' لاظهار الجدول اكتب = 0

    ويمكن تطوير الكود باضافة كلمة مرور فتح القاعدة اذا كانت محمية بكلمة مرور  وذلك في السطر الثاني بعد كلمة false .

  14. طالما تشغيل البرنامج يتم جيدا من  الاختصار  ، بينما لا يتم التشغيل مباشرة من أكسس

    فأقترح كتجربة قيام أكسس بتشغيل الاختصار وليس البرنامج.

    ربما المسألة لها علاقة بتمرير  Parameters أو تحديد working directory .

    لأنه للأسف لم يعمل برنامجك عندي حتى أستطيع التحقق من الاحتمال

    مع ملاحظة أن لدي نظام التشغيل ويندوز 7  (32 بت)  و FrameWork 4.6. 

    • Like 1
  15. أسعدني دعائك وكلماتك التي تعبر عن معدنك الطيب ، وشرف لي أن تدعوني للنظر في برنامجك الرائع

    جزاك الله كل خير ، وأقدر لك هذا التواضع الجميل والذي يغلب على الاساتذة والخبراء بهذا المنتدي العريق

    وبالعودة للبرنامج أرى في نموذج البحث  سرعة البحث  ممتازة ولا أجد شيئا يستحق أن أعلق عليه  ، ولكن أذكرك أن لا تنسى  بعض التحسينات الهامشية مثل :

    1 – مربع النص يظهر عدد آيات سالب إذا بحثت عن كلمة غير موجودة بالقرآن لذلك لا تنسى معالجة الأمر  وأقترح بدلاً من كتابة كود : طريقة تنسيق مربع النص لاظهار الصفر في حالة القيم السالبة وذلك بتعديل Format من تبويب Format من خصائص مربع النص هذا وكتابة التنسيق  #;\0;\0;\0

    2 – يجب  أن  تكون أكواد البرنامج في compiled state (عمل compile من قائمة Debug)  بعد الانتهاء من النسخة .

    3 – يفضل أن تكون محاذاة النص في قائمة البحث من اليمين إلى اليسار لأن هذا مناسب للغة العربية للآيات .

  16. العفو أخونا وأستاذنا  الكريم

    وربنا يوفقك في هذا البرنامج ويجعله في ميزان حساتك

    أنا جربت الحل على الملف السابق رفعه ، لكن طبعا لا أعلم مدى سرعة البحث اذا تم تطبيقه على بيانات جدول به كلمات القرآن الكريم  كاملا ولم أجرب موضوع تجاهل الهمزات في كلمة البحث

    • Thanks 1
×
×
  • اضف...

Important Information