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

مطلوب ترقيم الطلاب


إذهب إلى الإجابة الإجابة بواسطة محمد أبوعبدالله,

الردود الموصى بها

قام بنشر (معدل)

لدي جدول به

اسم الطالب : stu_name

نوعه ذكر/أنثى : stu_sex

حالته : مستجد / باق :stu_case

الطلب الأول :

ترقيم الطلبة جميعهم بحيث البنين المستجدون أولاً ثم البنين الباقون ثم البنات المستجدات ثم البنات الباقيات

no_serial  وهذا الترقيم في حقل 

الطلب الثاني :

ترقيم مجموعات كل مجموعة لا تزيد عن 6 طلاب لكل فئة  موضحة بالطلب الأول وبنفس ترتيبهم.

ملحوظة:

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

...................

والمثال المرفق به جدول موضح به الناتج المطلوب

لاحظ المجموعة رقم 23 بها طالبة واحدة لأن الطالبة التي تليها كانت في فئة مختلفة

 

 

Database0.mdb

تم تعديل بواسطه Ahmed Sary
  • تمت الإجابة
قام بنشر

السلام عليكم

بالاضافة الى ما تفضل به اخي الحبيب واستاذي @د.كاف يار وله جزيل الشكر

تفضل اخي الكريم

Option Compare Database
Option Explicit

Private Sub Command0_Click()

       CurrentDb.Execute "UPDATE Table1 SET no_group = Null"
       CurrentDb.Execute "UPDATE Table1 SET no_serial = Null"

       
       Dim mySQL As String
       Dim rst As Recordset, rs As Recordset
       Dim i As Integer, k  As Integer, L   As Integer

        
1 On Error GoTo 2
        mySQL = "Select * From Table1 ORDER BY stu_case , stu_sex "
'        Debug.Print mySQL

        Set rst = CurrentDb.OpenRecordset(mySQL)
        rst.MoveLast: rst.MoveFirst

            For i = 1 To rst.RecordCount
                rst.Edit
                rst!no_serial = i
                rst.Update
                rst.MoveNext
            Next
            rst.Close: Set rst = Nothing


2 On Error GoTo Err
        mySQL = "Select * From Table1 WHERE stu_case = 1 ORDER BY no_serial "
'        Debug.Print mySQL

        Set rst = CurrentDb.OpenRecordset(mySQL)
        rst.MoveLast: rst.MoveFirst
        
            For i = 1 To rst.RecordCount
                For k = 1 To 6
                    rst.Edit
                    rst!no_group = i
                    rst.Update
                    rst.MoveNext
                Next
            Next
            rst.Close: Set rst = Nothing
            
            Call randx
Err:
            Call randx
End Sub

Sub randx()
       Dim mySQL As String
       Dim rst As Recordset, rs As Recordset
       Dim i As Integer, k  As Integer, L   As Integer
       
3 On Error GoTo Err
        mySQL = "Select * From Table1 WHERE stu_case = 2 ORDER BY no_serial "
'        Debug.Print mySQL

        Set rst = CurrentDb.OpenRecordset(mySQL)
        rst.MoveLast: rst.MoveFirst

            L = Nz(DMax("[no_group]", "Table1"), 0) + 1
            For i = L To rst.RecordCount
                For k = 1 To 6
                    rst.Edit
                    rst!no_group = i
                    rst.Update
                    rst.MoveNext
                Next
            Next
            rst.Close: Set rst = Nothing
            
            MsgBox "Done", vbInformation, "Officena"

Err:

End Sub

Database03.rar

تحياتي

  • Like 3
قام بنشر
14 دقائق مضت, محمد أبوعبدالله said:

السلام عليكم

بالاضافة الى ما تفضل به اخي الحبيب واستاذي @د.كاف يار وله جزيل الشكر

تفضل اخي الكريم

Option Compare Database
Option Explicit

Private Sub Command0_Click()

       CurrentDb.Execute "UPDATE Table1 SET no_group = Null"
       CurrentDb.Execute "UPDATE Table1 SET no_serial = Null"

       
       Dim mySQL As String
       Dim rst As Recordset, rs As Recordset
       Dim i As Integer, k  As Integer, L   As Integer

        
1 On Error GoTo 2
        mySQL = "Select * From Table1 ORDER BY stu_case , stu_sex "
'        Debug.Print mySQL

        Set rst = CurrentDb.OpenRecordset(mySQL)
        rst.MoveLast: rst.MoveFirst

            For i = 1 To rst.RecordCount
                rst.Edit
                rst!no_serial = i
                rst.Update
                rst.MoveNext
            Next
            rst.Close: Set rst = Nothing


2 On Error GoTo Err
        mySQL = "Select * From Table1 WHERE stu_case = 1 ORDER BY no_serial "
'        Debug.Print mySQL

        Set rst = CurrentDb.OpenRecordset(mySQL)
        rst.MoveLast: rst.MoveFirst
        
            For i = 1 To rst.RecordCount
                For k = 1 To 6
                    rst.Edit
                    rst!no_group = i
                    rst.Update
                    rst.MoveNext
                Next
            Next
            rst.Close: Set rst = Nothing
            
            Call randx
Err:
            Call randx
End Sub

Sub randx()
       Dim mySQL As String
       Dim rst As Recordset, rs As Recordset
       Dim i As Integer, k  As Integer, L   As Integer
       
3 On Error GoTo Err
        mySQL = "Select * From Table1 WHERE stu_case = 2 ORDER BY no_serial "
'        Debug.Print mySQL

        Set rst = CurrentDb.OpenRecordset(mySQL)
        rst.MoveLast: rst.MoveFirst

            L = Nz(DMax("[no_group]", "Table1"), 0) + 1
            For i = L To rst.RecordCount
                For k = 1 To 6
                    rst.Edit
                    rst!no_group = i
                    rst.Update
                    rst.MoveNext
                Next
            Next
            rst.Close: Set rst = Nothing
            
            MsgBox "Done", vbInformation, "Officena"

Err:

End Sub

Database03.rar 26.83 kB · 0 downloads

تحياتي

ماشاء الله لا قوة الا بالله 

فعلا الابداع لا يعرف الحدود 

فكرة احترافيه بكل ما تعنيه الكلمة

  • Like 1

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information