الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ترحيل الطلاب الناجحين

بدأه Azizmm في 23 يوليو 2013 · 11 رد · 2,907 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

في البداية أود أن أهنيء أعضاء وزوار منتدنا الغالي بمناسبة شهر رمضان وكل عام والمسلمين بخير 

لدي قاعدة بيانات مدرسة أشتغل فيها ومن مهامها الأولى متابعة بيانات الطلاب وترحيلهم من سنة إلى أخرى ونحن قادمون على بداية العام الدراسي الجديد فأود طريقة لترحيل الطلاب الناجحون من سنة للأخرى بطريقة آليه وسريعة ومنظمة ولكن أود أيضاً ترقيم الطلاب المرحلون كذلك لنفترض أن لدينا آخر رقم في السنة الخامسة ابتدائي 050-15 يكون الترحيل يبدأ من رقم 051-15 وهكذا علما بأن النموذج الذي يقوم بإدخال البيانات FormSudents  الذي يعتمد على الجدول TabSudents حيث أن الترقيم مشروط حسب السنة الدراسية الذي يعتمد على الجدول TabUnits فآمل أن يكون المطلوب واضحا ومفهوماً 

أود أن يكون الترحيل عن طريق نموذج مستمر فعند اختيار الطلاب الناجحون (سواء كان للمدرسة _أو كان ذلك لكل صف ) وعن طريق زر واحد أو نقرة واحدة يتم ذلك بطريقة آلية وسريعة .

 

Aziz03.rar

#2

أخي العزيز، السلام عليكم ورحمة الله وبركاته

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

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

 

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

أنتم قلتم أنكم تريدون ترحيل الطلاب الناجحين من سنة لأخرى وهذا يتحقق من خلال إنشاء إستعلام إلحاق من جدول إلى آخر وفقا لمعايير محدد وهو النجاح، بحيث نستطيع أن نعبر عن هذا المعيار بخانة الإختيار، فإذا كانت قيمة خانة  الإختيار تساوي True فهي تدل على الطلاب الناجحين وإذا كانت العكس False فهذا يشير إلى الطلاب الراسبين. 

 

أرجو لكم التوفيق في مشروعكم الكريم

والسلام عليكم ورحمة الله وبركاته

#3

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

#4

بسم الله الرحمن الرحيم

شكراً يا أخي على الرد فقد كنت اعتقد بأن طرح السؤال واضح كل ما أريده هو ترحيل الطلاب الناجحين الى الصفوف المتقدمة بطريقة آليه فقد أرفقت بالملف نموذج يمكن أن يسهل الأمر باسم FormSudentsResult حيث جعلت به زر أمر يقوم بالترحيل بشرط نجاح الطالب وهو خانة اختيار بالنموذج باسم Result مع المحافظة على الترقيم حيث جعلت لكل سنة دراسية الرقم الخاص بها فمثلا الصف الأول يبدأ بالرقم 001-11 وهكذا بقية السنوات 

فالمطلوب من الترقيم أن يبدأ الترحيل بما انتهى إليه آخر رقم للسنة الماضية فمثلا آخر طالب في الصف الثالث كان رقم 030-13 فعند الترحيل للصف الثالث يبدأ من الرقم 031-13 وهكذا بقية السنوات 

وجزاكم الله خير الجزاء

Aziz03.rar

#5

بسم الله الرحمن الرحيم

جزاكم الله خيراً وبارك فيك يا أخوتي في المنتدى ...

هل المسألة صعبة حتى لم نجد أحد من أعضاء المنتدى الغالي ليقوم بحل المسألة؟

#6

السلام عليكم ورحمة الله وبركاته

 

يبدو أن الأمر أكثر من صعب أم ماذا يا اخواني ..................

#7

عشان ترحل الطلاب الناجحين الى مرحلة اعلى التبع التالي :

1- استعلام 1 بالطلاب الناجحين مثلا من الصف الاول النتيجة = ناجح هذا اول استعلام 

2- من الاستعلام رقم 1 انشاء استعلام 2 وهو استعلام تحديث الى الصف الثاني والنتيجة = null الآن انتهينا من نقل طلب الصف الاول الى الصف الثاني فقط الناجحين وهكذا في باقي الفصول الاخرى ....

آمل ان يكون هذا مفيد 

وبالتوفيق

#8

السلام عليكم ورحمة الله

مشكور ياأخي هرمان ولكن أود تطبيق ذلك من عندك لو سمح لك الوقت وجزاك الله خيراً ولكن لا تنسى الترقيم كما أوضحت في بداية الموضوع .

#9

اخي الكريم ، تفضل :)

 

قمت باضافة خانة رقم تلقائي الى الجدول TabUnits حتى اصل للصف التالي :)

 

وهذه هي البرمجة التي على زر الترحيل:

 

Private Sub cmd_upgrage_passed_students_Click()
On Error GoTo err_cmd_upgrage_passed_students_Click

Dim rst_Read As DAO.Recordset
Dim rst_Write As DAO.Recordset
Dim x() As String

'save the Records
If Me.Dirty Then Me.Dirty = False

'get the Form data
'Set rst_Read = Me.RecordsetClone
Set rst_Read = CurrentDb.OpenRecordset("Select * From TabSudents Where [result]= -1")

'prepare the Tabstudents table for input
Set rst_Write = CurrentDb.OpenRecordset("Select * From TabSudents")


'move the curser to the first record
rst_Read.MoveLast: rst_Read.MoveFirst

'loop through all the Records in the Form,
'when we find a ticked Result, then upgrade the student
Do Until rst_Read.EOF

'find the ticked Result
If rst_Read!result = -1 Then

'find the next class ID
Next_Class_ID = DLookup("[units_AutoID]", "TabUnits", "[units]='" & rst_Read!CLASSE & "'") + 1

'Next class name and number, read 2 values at once
a = DLookup("[units] & '|' &

", "TabUnits", "[units_AutoID]=" & Next_Class_ID)
x = Split(a, "|")
Next_Class_Name = x(0)
Next_Class_Number = x(1)

'find what is the Max Student_ID in the next class
Next_Student_ID = DMax("[sudent_ID]", "TabSudents", "left([sudent_ID], 2)=" & Next_Class_Number) + 1


'now we have all the info we need, lets upgrade
'Change/Edit the student info to the New class info

'always start the curser from the first record
rst_Write.MoveLast: rst_Write.MoveFirst

'go to the right Record
rst_Write.FindFirst "[sudent_ID]=" & rst_Read!SUDENT_ID

'set the Records for Editing
rst_Write.Edit

'change the Student data to the new data
rst_Write!SUDENT_ID = Next_Student_ID
rst_Write!CLASSE = Next_Class_Name
rst_Write!result = 0

'update the table with this new info
rst_Write.Update

End If

'move to the next Record in the Form
rst_Read.MoveNext
Loop

'requery the Form, with the new info
Me.Requery

'cleaning up and releasing memory
rst_Read.Close: Set rst_Read = Nothing
rst_Write.Close: Set rst_Write = Nothing


Exit Sub
err_cmd_upgrage_passed_students_Click:

If Err.NUMBER = 3021 Then
'No records, ignoe
Resume Next
Else
'capture other error
MsgBox Err.NUMBER & vbCrLf & Err.Description
End If

End Sub

 

جعفر

47.Aziz03.accdb.zip

2
#10

عمل رائع استاذ جعفر ولكن ما رئيك لو نعمل استعلامين من نفس الجدول استعلام للناجحين واستعلام للراسبين كما قال الاخ الاستاذ هرمان سابقا ومن ثم

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

ودون الحاجة للتاشير على كل طالب اذا كان مستجد او منقول....

#11

اخي ابوعمرو

 

الاستعلام بوجه عام يمكن تطبيقه على بيانات شبه متشابهه ، ولكن في حالتنا قد يكون اصعب من المتوقع ، لاننا يجب ان نلجأ الى اكثر من جدول لاخذ البيانات :(

وكلامي ليس معناه انه لا يمكن اخذ البيانات من الجداول من خلال الاستعلام (كما هو الحال في مثالنا) ، فإذا استعصت الامور ، فيمكننا عمل module وبالتالي اخذ البيانات منها :)

ولكني اشبّه البرمجه بالطبخ (مع اني ما اعرف اطبخ :) ) ، فكل مبرمج يطبخ بالطريقة الاسهل له :)

 

جعفر

2
#12

السلام عليكم ورحمة الله

مشكور ياأخي(جعفر) وبارك الله فيك وفي أعضاء المنتدى عمل أكثر من رائع وجزاك الله خيراً....

مواضيع مشابهة