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

عبد الفتاح كيرة

الخبراء
  • Posts

    3,015
  • تاريخ الانضمام

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

  • Days Won

    4

مشاركات المكتوبه بواسطه عبد الفتاح كيرة

  1. أستاذ جعفر حفظه الله

    الفكرة أننا جعلنا التقرير مبنيا على استعلام 

    لنستفيد بتسلسل و تجدد عدد الفصول فى كل مرة

    و النتائج مرضية جدا و الحمد لله

    نقطتان:

    أولا لماذا يفضل عمل كل شىء فى الاستعلام

    ثانيا : نود شرح طريقتكم فى التحليل كما تقول الصورة

    و شكرا لحضرتكم

  2. في ١٠‏/٧‏/٢٠١٨ at 01:15, عبد الفتاح كيرة said:

    Set rs = CurrentDb.OpenRecordset("SELECT Students.sery, Students.Group, Students.kolaf, Students.mazroof FROM Students where (group =" & fs & ") order by group")

    خزن فى قاعدة البيانات الحالية currentdb جملة الاستعلام التالية

    مع ملاحظة 

    Where (group=)

    Fs

    اسم المتغير الذى سيتم استدعاء الوظيفة به

    وعند الاستدعاء نجعل المتغير يساوى رقم المجموعة من 1 إلى 11

    داخل حلقة تكرارية

    والبقية تأتى إن تيسر الحال

     

    • Like 1
  3. في ١٠‏/٧‏/٢٠١٨ at 01:15, عبد الفتاح كيرة said:

    Function myfun(fs As Integer)

    بداية الوظيفة

    واسمها

    وما بين القوسين متغير تطلبه عند استدعائها

    في ١٠‏/٧‏/٢٠١٨ at 01:15, عبد الفتاح كيرة said:

    Dim rs As Recordset Dim rrr As Integer rrr = 1 Dim i, ii, iii As Integer Dim r As Integer Dim rr As Integer

    حجز مكان فى الذاكرة لتخزين السجلات عنوانه rs من النوع recordset

    ثم مجموعة من المتغيرات من النوع الرقمى تعرف عند استخدامها

    • Like 1
  4. أستاذنا جعفر

    تم حل المشكلة بفضل الله

    فبدلا من استخدام مربعات نصوص غير منضمة

    استخدمت الاستعلام الجدولى

    وهو حل رائع

    حقول عناوين الصفوف هى

    حقل الصف

    ثم حقل الفصل

    وحقل عناوين الأعمدة هو حقل حالة الطالب و فيه مستجد/معيد

    لكن لا مانع من إكمال ما بدأنا لإفادة المنتدى

    وهناك مشكلة عامة فى الاستعلام الجدولى

    وهى أنه لا يضع عنوانا لعمود فى حال كان خاليا

    يعنى لو عمود به 5 قيم

    واحدة منها غير مستعملة ليس فيها بيانات

    فإن الاستعلام الجدولى لا يعرضها

     

  5. المشكلة فى الصفوف

    وليست فى الأعمدة فالأعمدة  ثابتة

    حسب فكرتك

    ندرج مثلا فى 10 مربعات تحت بعضها

    ونتحكم بالكود فى ارتفاعاتها وفى المسافات بينها

    ونخفى الزائد منها

    سأجرب ذلك و أرد عليك

    مع خالص شكرى

    وأرجو إرشادى برابط لمواضيع مشابهة فى المنتدى

     

     

     

  6. السلام عليكم

    عدد الفصول فى كل صف يختلف من عام لآخر

    مثلا الصف الأول فى العام الماضى كان 4 فصول

    هذا العام صار 5 فصول

    هل يمكن إدراج مربع نص للتقرير حسب الحاجة

    بحيث لو كان العدد 4 فصول يتم إدراج 4 فصول

    وإذا كان العدد 5 فصول يتم إدراج 5 فصول

    طبعا كل هذا بالكود

    ما اقتراحاتكم لتنفيذ ذلك

    والتقرير هو عبارة عن ميزانية مدرسة فى أعوام مختلفة

  7. هذا مختصر و سريع

    أنشأت وظيفة لهذا الغرض

    
    Function myfun(fs As Integer)
    Dim rs As Recordset
       Dim rrr As Integer
       rrr = 1
       Dim i, ii, iii As Integer
       Dim r As Integer
       Dim rr As Integer
      rr = 1
     Set rs = CurrentDb.OpenRecordset("SELECT Students.sery, Students.Group, Students.kolaf, Students.mazroof FROM Students where (group =" & fs & ") order  by group")
       rs.MoveFirst
       Do Until rs.EOF
            rs.Edit
                rs!kolaf = rr
                rs.Update
        If rrr Mod 50 = 0 Then
       rr = rr + 1
       End If
        rrr = rrr + 1
       rs.MoveNext
       Loop
       rs.MoveFirst
       rr = 1
       rrr = 1
       rs.Close
       Set rs = Nothing
    End Function

    و تستدعى هكذا

    Private Sub test1_Click()
    Dim i As Integer
       For i = 1 To 11
            myfun i
        Next i
    End Sub

    و التنفيذ سريع حوالى 7 ثوان مع ملاحظة أن بالجدول أكثر من 15 ألف سجل

     

     

    كيرة رقم الغلاف والمظروف2003.mdb

    كيرة رقم الغلاف والمظروف.accdb

    و هذا الكود للمظروف

    Private Sub maz_Click()
    Dim rs As Recordset
       Dim rr As Integer
          Dim rrr As Integer
      rr = 1
      rrr = 1
     Set rs = CurrentDb.OpenRecordset("SELECT Students.sery, Students.Group, Students.kolaf, Students.mazroof FROM Students  order  by sery")
       Do Until rs.EOF
            rs.Edit
                rs!mazroof = rr
                rs.Update
        If rrr Mod 50 = 0 Then
       rr = rr + 1
       End If
       rs.MoveNext
       rrr = rrr + 1
       Loop
      rs.Close
    Set rs = Nothing
    End Sub

     

    • Thanks 1
  8. وفقكم الله 

    ‏أسباب دفع العقوبة عشرة، وهي:
    🔹ثلاثة من العبد:
    - التوبة
    - الاستغفار
    - الحسنات الماحية
    🔹ثلاثة من الناس:
    - دعاءالمؤمنين
    - إهداءالعمل الصالح له
    - شفاعتهﷺ
    🔹أربعة يبتديها الله:
    - المصائب المكفرة في الدنيا
    - الفتنة في البرزخ
    - أهوال القيامة
    - مغفرة الله بفضله

    • Like 1
  9. إذا كان عدد المحافظات كبيرا

    فالأفضل إنشاء جدول للمحافظات

    كود المحافظة

    اسم المحافظة

    ثم تستخدم هذا الكود لاستخراج رقم المحافظة من الرقم القومى ووضعه فى حقل رقم المحافظة

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

    و هذا لكل السجلات

    وبسرعة مذهلة

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tblmain")
    rs.MoveFirst
    Do Until rs.EOF
            rs.Edit
                    rs!Mohafza = Nz(mID(rs![CHqawmy], 8, 2))
                    rs!CHBDay = Nz(mID(rs![CHqawmy], 6, 2))
                    rs![CHBmonth] = Nz(mID(rs![CHqawmy], 4, 2))
    
                If Nz(mID(rs![CHqawmy], 1, 1)) = 2 Then
                    rs![CHYear] = Val(mID(rs![CHqawmy], 2, 2)) + 1900
                Else
                    rs![CHYear] = Nz(mID(rs![CHqawmy], 2, 2)) + 2000
                End If
                        rs!Tmelad = DateSerial(rs!CHYear, rs!CHBmonth, rs!CHBDay)
            rs.Update
            rs.MoveNext
    Loop
    Me.Requery
     DoCmd.GoToRecord , , acFirst
     Set db = Nothing
     Set rs = Nothing

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

    Capture400.PNG.87660b680df56eea2e9096d25eed0078.PNG

    • Like 2
  10. 53 دقائق مضت, jjafferr said:

    والآن اجيب على اسئلتك:

     

     

    1. هناك نوعين من Recordset ، نوع يخص DAO وآخر يخص ADO ، ومع تشابههما ، إلا ان هناك الكثير من الاوامر التي تختلف بينهم ،

    فإذا لم نخصص نوع الـ Recordset ، فالاكسس يستعمل مكتبة الاولى في القائمة ، مثلا ، في الصور التالية ، مكتبة ADO قبل مكتبة DAO ، فعند كتابة Recordset فقط ، فالاكسس يعتبرها تابعه لـ ADO:

    في الاكسس 2003

    929.Clipboard03.jpg.1b0c5953e47c0085eb1712d4af73a5db.jpg

    .

    وفي الاكسس 2010 فما فوق تم دمج مكتبة DAO في MS Office 14 Access Database engine object

    929.Clipboard02.jpg.47d70d4d095cd3140d2f8641b312a6ae.jpg

    .

     

    2. هذا امر OpenRecordset ، فيه عدة اختيارات ، والمبرمج اختار هذه لأسبابه ، ويمكنك الاستغناء عن الجزئين الاخيرين منها ، حيث هذا يكفي:

    
    (Set rst = db.OpenRecordset(strSQL

    .

    3. المؤشر في سجلات Recordset يكون كما في القائمة التالية:

    BOF

    Record1

    Record2

    ..

    ..

    EOF

     

    حيث BOF = Begining Of File

    EOF = End Of File

    فإذا كنا على BOF  او EOF فلا يوجد هناك سجلات ،

    فالسطر معناه ، اننا مادمنا لسنا قبل بداية ولا بعد نهاية الـ Recordset ، فقم بالخطوة التالية ،

     

    4. انتقل الى اول سجل تصادفه (رجاء متابعة النقطة التالية) ،

    5. اذا اردنا ان نجعل الـ Recordset بالكامل في ذاكرة الكمبيوتر ، فعلينا ان نأخذ المؤشر الى آخر سجل ، ثم عندما نأخذ المؤشر الى اول سجل ، فيعرف البرنامج عدد سجلات هذا الـ Recordset ،

    بينما في الرقم#4 اعلاه ، فنحن طلبنا منه البدء من اول سطر وبدون معرفة عدد السجلات ،

    والنقطتين معناها سطر جديد في الكود ، يعني:

    
    بدل كتابة
    For i = 1 To RC
        childrst.Delete
        childrst.MoveNext
    Next i
    
    
    يمكننا كتابة
    For i = 1 To RC: childrst.Delete : childrst.MoveNext : Next i

    .

    ولكننا اذا عملنا هذا الشيء لكل الكود ، فلن نعرف كيف نتصيد الخطأ ، ولا نستطيع استعمال Goto ،

    فنحن نستعمله في نطاق نعمل انه لن تكون لدينا اخطاء فيه:smile:

     

    جعفر

    معلومات قيمة أستاذ جعفر

    أظنها رد فى موضوع آخر

    عموما شكرا لك

×
×
  • اضف...

Important Information