أبو امين قام بنشر يوليو 24, 2022 قام بنشر يوليو 24, 2022 طريقة جيدة ربما تيسر على طالبي المعلومة ايجاد الجواب لما يعترضون له من اشكاليات في التصميم : السؤا ل : 01/ قاعدة بيانات طلبة 02/ كل اخر سنة ينقطع مجموعة من الطلبة يضطر العامل على المنظومة حذفها يدويا و اعادة تسجيلها في حدول المنقطعين السؤال هل توجد طريقة بسيطة تمكن من حذف المنقطعين من الجدول الرئيسي و اضافتها الى الجدول الفرعي اي جدول المنقطعون ؟ الجواب : هذا الأمر يتعلق بتصميم القاعدة والتخطيط لها، هناك طريقتان : الطريقة الأولى: * عمل نسخة من الجدول الرئيسي للتلامذة ثم تسميته باسم المنقطعين. وتسطيع أن تصمم له نماذجه وتقاريره الخاصة. * حذف جميع السجلات بالجدول الجديد اي جدول المنقطعون . * ثم تصمم استعلامين: الأول ااستعلام إلحاقي يقوم بإلحاق التلميذ المنقطع بجدول المنقطعين . والثاني: استعلام حذف لحذف نفس التلميذ من الجدول الرئيسي للتلامذة . * ثم تشغيل هذين الاستعلامين بشكل متعاقب في زر واحد. الطريقة الثانية: وهي أن تخصص في جدول التلاميذ حقلا يرمز لحالة التلميذ وتضع (مثلا) الرقم واحد للتلميذ المباشر الذي مازال يدرس والرقم اثنين للتلميذ المنقطع ، وتقوم بعد ذلك بتعديل جميع استعلاماتك بإضافة شرط حالة التلميذ فيها للتحكم في نوع التلاميذ المطلوب عرضهم أو التعامل معهم. وبهذا نبقي على الجدول الرئيسي لجميع التلاميذ . المطلوب من السادة المشاركين الراغبين في العمل على المثال : انشاء مثال للطريقة الاولى و مثال للطريقة الثانية نريد بعث روح المشاركة و التفاعل للزملاء المتواجدين و المتابعين خاصة الذين يقرؤون و يمرون دون تعليق او ضوضاء فبالتفاعل يمكن ان نصنع العجب
متقاعد قام بنشر يوليو 24, 2022 قام بنشر يوليو 24, 2022 51 دقائق مضت, derbali ammar said: وهي أن تخصص في جدول التلاميذ حقلا يرمز لحالة التلميذ وتضع (مثلا) الرقم واحد للتلميذ المباشر الذي مازال يدرس والرقم اثنين للتلميذ المنقطع ، وتقوم بعد ذلك بتعديل جميع استعلاماتك بإضافة شرط حالة التلميذ فيها للتحكم في نوع التلاميذ المطلوب عرضهم أو التعامل معهم. وبهذا نبقي على الجدول الرئيسي لجميع التلاميذ . نعم اتفق هذة الطريقة هي الافضل وكنا نستخدمها حتى في البرامج الكبيرة لانه من غير المجدي ان يكون لدينا اكثر من جدول للطلاب من وجهة نظر خاصة ليس من المجدي ان تتكر الحقول في اكثر من جدول الا ما يتعلق بحقول العلاقات وهذا التكرار يحكمة نوع العلاقة تحياتي 2
أبو امين قام بنشر يوليو 24, 2022 الكاتب قام بنشر يوليو 24, 2022 الاشكال في هذين الاستعلامين : الأول ااستعلام إلحاقي يقوم بإلحاق التلميذ المنقطع بجدول المنقطعين . والثاني: استعلام حذف لحذف نفس التلميذ من الجدول الرئيسي للتلامذة هل بالامكان التكرم و تنزيل مثال لطريقة عملهما لنستفيد من خبرة و تجربة استاذنا الكريم
Eng.Qassim قام بنشر يوليو 24, 2022 قام بنشر يوليو 24, 2022 في الحالتين انت تحتاج الى حقل حالة التلميذ..يتم تمييز الطالب المنقطع عن غيره انا ارى ان الطريقتين طريقة واحدة تحياتي 2
أبو امين قام بنشر يوليو 24, 2022 الكاتب قام بنشر يوليو 24, 2022 نظرا لشح الردود و التفاعل من الزملاء لاجاد الحلول الممكنة : توصلت بعد عناء شديد و طويل للتوصل الى الحل نظرا للزاد الضعيف : اولا نقوم بانشاء استعلام الحاقي : 01/نفتح قاعدة بيانات جديدة 02/ نقوم بنصميم جدول تحت اسم : TblInfo 03 / ننسخ هذا الجدول و نغير اسمه الى : TblInfoArchvs 04/ نقوم بانشاء استعلام و نضيف له حقول الجدول الرئيسي : TblInfo 04 / نضغط على ايقونة الاستعلام الالحاقي : يظهر لنا مربع حوار يطلب منا تحديد قاعدة البيانات الحالية او الاخرى : نحدد على قاعدة البيانات الحالية و نختار من القائمة المنسدلة الجدول الجديد : TblInfoArchvs و نضغط على ok ثم ننشئ نموذج و نضيف له زر امر و للزر الكود التالي : DoCmd.RunSQL "INSERT INTO TblInfoArchvs ( NEleves, NmPrnm) SELECT TblInfo.NEleves, TblInfo.NmPrnm FROM TblInfo; " نفتح الان النموذج و نضغط على زر الامر : مبروك تم نقل جميع السجلات الموجودة بالجدول الرئيسي للجدول الثاني اي جدول الارشيف هذه المرحلة الاولى : يبقى ان نضيف حقل للجدول الرئيسي لنرمز فيه للتلاميذ المنقطعون و نقوم بتعديل الاستعلام لكي لا يضيف الا التلاميذ المنقطعون : في القادم ان شاء الله ملاحظة يوجد في تونس مثال يقول : " ايغني و ايرد على جناحوا " يضرب هذا المثل على من يسال و يجيب بمفرده على السؤال وهو ما اقوم به انا الان : للطرفة قاعدة البيانات في المرققات : انشاء استعلام الحاقي و نقل البيانات من جدول الى جدول.accdb
أبو امين قام بنشر يوليو 24, 2022 الكاتب قام بنشر يوليو 24, 2022 الجزء الثاني من البرنامج : ذكرنا ان الهدف من قاعدة البيانات هي نقل مثلا بيانات التلامذة المنقطعون الى جدول ثاني : نضيف الان للجدول الرئيسي لقاعدة البيانات وهوو جدول : TblInfo حقل تحت اسم : mvmnt ثم نضيف نفس الحقل الى الجدول الفرعي بنفس الخصائص ننتقل الى الاستعلام الالحاقي و نضيف له نفس الحقل و في critere نكتب رقم 1 تحت حقل : mvmnt في الجدول الفرعي ننتقل الان الى النموذج و نقوم باضافة الحقل لجملة SQL في امر الزر ليصبح الكود كالاتي : DoCmd.RunSQL "INSERT INTO TblInfoArchvs ( NEleves, NmPrnm,mvmnt) SELECT TblInfo.NEleves, TblInfo.NmPrnm,TblInfo.mvmnt FROM TblInfo WHERE (((TblInfo.mvmnt)=1)); " قاعدة البيانات بالاضافات في المرفقات : انشاء استعلام الحاقي و نقل البيانات من جدول الى جدول.accdb
د.كاف يار قام بنشر يوليو 24, 2022 قام بنشر يوليو 24, 2022 (معدل) جميع ما تحتاجه موجود في اجابة @Eng.Qassim 3 ساعات مضت, Eng.Qassim said: في الحالتين انت تحتاج الى حقل حالة التلميذ..يتم تمييز الطالب المنقطع عن غيره اجابة و اقتراح من سطر واحد تغنييك عن تكرار الجداول عديمة الفائدة بإختصار قم بإضافة عمود جديد لتحديد حالة الطالب ( مستمر - منقطع - مفصول - موقوف - ........... الخ ) منذ ساعه, derbali ammar said: اولا نقوم بانشاء استعلام الحاقي : تعلم انشاء مثل هذه الاستعلامات بطريقة احترافية تسهل عليك العمل دوماً جرب استخدم الكود التالي في عمليات ( الإضافة - التحديث - الحذف - الاستعلام ) لإضافة بيانات جديدة للجدول استخدم الكود التالي On Error GoTo errorhandle Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("ضع هنا اسم الجدول") rs.AddNew rs.Fields("اسم العمود 1").Value = "القيمة1" rs.Fields("اسم العمود 2").Value = "القيمة2" rs.Fields("اسم العمود 3").Value = "القيمة3" rs.Update MsgBox "تم اضافة البيانات بنجاح", vbInformation + vbMsgBoxRight, "تأكيد" errorhandleexit: Exit Function errorhandle: MsgBox Err.Description Resume errorhandleexit و لتحديث سجل محدد استخدم الكود التالي On Error GoTo errorhandle Dim rs As DAO.Recordset, SerTb As String, SetCoulmin As String, SetValue As String SerTb = "ضع هنا اسم الجدول" SetCoulmin = "اسم العمود في الجدول الذي يحتوي على المفتاح الرئيسي" SetValue = "حقل العيار الذي يحتوي على المفتاح الرئيسي في النموذج" Set rs = CurrentDb.OpenRecordset("SELECT * FROM " & SerTb & " where [" & SetCoulmin & "] Like '" & SetValue & "'") rs.Edit rs.Fields("اسم العمود 1").Value = "القيمة1" rs.Fields("اسم العمود 2").Value = "القيمة2" rs.Fields("اسم العمود 3").Value = "القيمة3" rs.Update MsgBox "تم تحديث البيانات بنجاح", vbInformation + vbMsgBoxRight, "تأكيد" errorhandleexit: Exit Function errorhandle: MsgBox Err.Description Resume errorhandleexit و لحذف حقل استخدم الكود التالي On Error GoTo errorhandle Dim rs As DAO.Recordset, SerTb As String, SetCoulmin As String, SetValue As String SerTb = "ضع هنا اسم الجدول" SetCoulmin = "اسم العمود في الجدول الذي يحتوي على المفتاح الرئيسي" SetValue = "حقل العيار الذي يحتوي على المفتاح الرئيسي في النموذج" Set rs = CurrentDb.OpenRecordset("SELECT * FROM " & SerTb & " where [" & SetCoulmin & "] Like '" & SetValue & "'") rs.Delete MsgBox "تم حذف السجل بنجاح", vbInformation + vbMsgBoxRight, "تأكيد" errorhandleexit: Exit Sub errorhandle: MsgBox Err.Description Resume errorhandleexit تم تعديل يوليو 24, 2022 بواسطه د.كاف يار 5
ابوخليل قام بنشر يوليو 24, 2022 قام بنشر يوليو 24, 2022 بارك الله فيك اخونا العزيز عمار الاصل في قواعد البيانات انه يحضر اي يمنع حذف اي بيانات تم ادخالها بتاتا ، ويتغاضى عن حذف سجل تم ادخاله بالخطأ في وقته اما مسألة الإلحاق والحذف .. فلا ينصح به ما عرضته في طريقة الحل الثانية هو الصحيح وهو المتبع في البرامج الرصينة ، وهو ما اشار اليه اخوانك 2
أبو امين قام بنشر يوليو 24, 2022 الكاتب قام بنشر يوليو 24, 2022 كنا قد انشانا القاعدة و هي تحتوي على جدولان : الجدول الرئيسي : جدول معطيات التلاميذ TblInfo الجدول الفرعي : جدول الارشيف : TblInfoArchvs اضفنا ايضا حقل لكلا الجدولان وهو حقل حركة التلاميذ : الان بعد ان تقدمنا شوطا في الاستعلام الالحاقي و حققنا نتيجة جيدة خاصة لمن هو مبتدئ في مجال الاكسيس مثلي بالطبع : نقوم بانشاء جدول جديد لحركة التلاميذ تحت اسم : mvmnt يتضمن حقلان : 1. IDmvmnt /// NuméroAuto 2. Mvmnt //// Texte نضيف لهذا الحقل المعطيات التالية : IDmvmnt Mvmnt 1 انقطاع 2 مباشر نقوم برط هذا الجدول مع الجدول الرئيسي نفتح الان الاستعلام و نضيف جدول Mvmnt لتغيير انتماء جدول : Mvmnt من الانتماء للجدول الرئيسي الى الانتماء لجدول Mvmnt نت\كر جيدا اننا اضفنا رقم /// 1 /// في كريتار حقل : Mvmnt نغير هذا الرقم الى كلمة انقطاع نكتبها مكان رقم 1 نقوم بمعاينة الاستعلام سنجد المعلومات الموجودة صحيحة و رقم 1 تغير الى كلمة انقطاع يبقى الان تغيير الكود : نضيف هذا الكود مكان الكود السابق : DoCmd.RunSQL " INSERT INTO TblInfoArchvs ( NEleves, NmPrnm,mvmnt) " & _ "SELECT TblInfo.NEleves, TblInfo.NmPrnm, mvmnt.mvmnt, " & _ "FROM mvmnt INNER JOIN TblInfo ON mvmnt.IDmvmnt = TblInfo.mvmnt" & _ "WHERE (((mvmnt.mvmnt) = انقطاع));" لكن بعد كل هذا الجهد ظهر لنا الخطا المبين في الصورة : المثال موجود بالمرفقات مع الخطا : انشاء استعلام الحاقي و نقل البيانات من جدول الى جدول.accdb ننتضر الحل من الاساتذة الكرام لاصلاح الخطا
أبو امين قام بنشر يوليو 24, 2022 الكاتب قام بنشر يوليو 24, 2022 الى الخبير العزيز : د.كاف يار صراحة امثلتكم جيدة و شيقة و جميلة لكنها معقدة لمن هو مبتدا و اريد ان اسوق لكم ملاحظة ان مستوى المنتدى عالي جدا و قوي و يصعب على كل مبتدئ مجاراتكم صراحة و نحن المبتدئين نلتجئ دائما الى البساطة و الوضوح و ما يهمنا هنا ليس الاضافة او الح\ف او ما شابه و انما هي عملية الالحاق و ان كان المثال لا يروق لكم فانني بالفعل وقفت عند حدود الخطا و عجزت عن ايجاد حل له و سيتوقف المثال شكرا لكم على كل حال
أفضل إجابة ابو جودي قام بنشر يوليو 24, 2022 أفضل إجابة قام بنشر يوليو 24, 2022 طيب وليه كل ده اضف الحقول الاتية فى الجدول الرئيسي منقطع - مفصول - موقوف على ان تكون من النوع Yes/No منقطع = yes مفصول = yes موقوف = yes وسوى استعلام ومرر اليه القيمى المعلمه ليقوم بعمل الفلتر تبعا للحالة الممرة او الابسط سوى عدد استعلامات تبعا لعدد الحالات وفى المعيار اختر حقل الفتر yes تبعا لكل حالة الموضوع ابسط من البساطة 2 1
ابو جودي قام بنشر يوليو 24, 2022 قام بنشر يوليو 24, 2022 7 دقائق مضت, derbali ammar said: الى الخبير العزيز : د.كاف يار صراحة امثلتكم جيدة و شيقة و جميلة لكنها معقدة لمن هو مبتدا و اريد ان اسوق لكم ملاحظة ان مستوى المنتدى عالي جدا و قوي و يصعب على كل مبتدئ مجاراتكم صراحة و نحن المبتدئين نلتجئ دائما الى البساطة و الوضوح و ما يهمنا هنا ليس الاضافة او الح\ف او ما شابه و انما هي عملية الالحاق و ان كان المثال لا يروق لكم فانني بالفعل وقفت عند حدود الخطا و عجزت عن ايجاد حل له و سيتوقف المثال شكرا لكم على كل حال اسال عن التعقيدات تجد الشرح ومنه تتعلم بمرور الوقت وهذه كانت اولى خطواتى هنا ولازلت ان تعثرت فقط نصيحة لا تضع اسالة نظرية ارفق قاعدة بعدد قليل من البيانات ودع عالم الرياضيات فى مخيلتك دائما عند التصميم والتفكير الجواب يأتى بناء على معطى , مجهول , ثابت 29 دقائق مضت, ابوخليل said: الاصل في قواعد البيانات انه يحضر اي يمنع حذف اي بيانات تم ادخالها بتاتا ، ويتغاضى عن حذف سجل تم ادخاله بالخطأ في وقته اما مسألة الإلحاق والحذف .. فلا ينصح به وتذكر جيدا هذه كلمات من ذهب ضعها نصب عينيك دائما وابدا 2
ابو جودي قام بنشر يوليو 24, 2022 قام بنشر يوليو 24, 2022 بالمناسبة فى الحل التانى انت اشرت الى IDmvmnt Mvmnt 1 انقطاع 2 مباشر يعنى سوف تقوم باستخدام حقول رقمية واخرى نصية مما يستوجب مستقبلا الربط بينهما بالاستعلامات او العلاقات او مجال الدوال ليش تصعب السهل وفى مرفق نوع الحقل رقم Long وليه تحجز 4 Byte بحالهم علشان الارقان 1 , 2 , 3 لما ممكن تستخدم 2 Byte بس لو كان الحقل Integer , Boolean انصحك راجع هذا الدرس 1
أبو امين قام بنشر يوليو 24, 2022 الكاتب قام بنشر يوليو 24, 2022 1 ساعه مضت, د.كاف يار said: جميع ما تحتاجه موجود في اجابة @Eng.Qassim اجابة و اقتراح من سطر واحد تغنييك عن تكرار الجداول عديمة الفائدة بإختصار قم بإضافة عمود جديد لتحديد حالة الطالب ( مستمر - منقطع - مفصول - موقوف - ........... الخ ) تعلم انشاء مثل هذه الاستعلامات بطريقة احترافية تسهل عليك العمل دوماً جرب استخدم الكود التالي في عمليات ( الإضافة - التحديث - الحذف - الاستعلام ) لإضافة بيانات جديدة للجدول استخدم الكود التالي On Error GoTo errorhandle Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("ضع هنا اسم الجدول") rs.AddNew rs.Fields("اسم العمود 1").Value = "القيمة1" rs.Fields("اسم العمود 2").Value = "القيمة2" rs.Fields("اسم العمود 3").Value = "القيمة3" rs.Update MsgBox "تم اضافة البيانات بنجاح", vbInformation + vbMsgBoxRight, "تأكيد" errorhandleexit: Exit Function errorhandle: MsgBox Err.Description Resume errorhandleexit و لتحديث سجل محدد استخدم الكود التالي On Error GoTo errorhandle Dim rs As DAO.Recordset, SerTb As String, SetCoulmin As String, SetValue As String SerTb = "ضع هنا اسم الجدول" SetCoulmin = "اسم العمود في الجدول الذي يحتوي على المفتاح الرئيسي" SetValue = "حقل العيار الذي يحتوي على المفتاح الرئيسي في النموذج" Set rs = CurrentDb.OpenRecordset("SELECT * FROM " & SerTb & " where [" & SetCoulmin & "] Like '" & SetValue & "'") rs.Edit rs.Fields("اسم العمود 1").Value = "القيمة1" rs.Fields("اسم العمود 2").Value = "القيمة2" rs.Fields("اسم العمود 3").Value = "القيمة3" rs.Update MsgBox "تم تحديث البيانات بنجاح", vbInformation + vbMsgBoxRight, "تأكيد" errorhandleexit: Exit Function errorhandle: MsgBox Err.Description Resume errorhandleexit و لحذف حقل استخدم الكود التالي On Error GoTo errorhandle Dim rs As DAO.Recordset, SerTb As String, SetCoulmin As String, SetValue As String SerTb = "ضع هنا اسم الجدول" SetCoulmin = "اسم العمود في الجدول الذي يحتوي على المفتاح الرئيسي" SetValue = "حقل العيار الذي يحتوي على المفتاح الرئيسي في النموذج" Set rs = CurrentDb.OpenRecordset("SELECT * FROM " & SerTb & " where [" & SetCoulmin & "] Like '" & SetValue & "'") rs.Delete MsgBox "تم حذف السجل بنجاح", vbInformation + vbMsgBoxRight, "تأكيد" errorhandleexit: Exit Sub errorhandle: MsgBox Err.Description Resume errorhandleexit استاذي الكريم لقد جربت كود الاضافة و اعطاني ه>ا الخطا : قد ارفقت لك المثال بالخطا للتعديل عليه انشاء استعلام الحاقي و نقل البيانات من جدول الى جدول.accdb
د.كاف يار قام بنشر يوليو 24, 2022 قام بنشر يوليو 24, 2022 فقط عدل المحدد الى sub تفضل التعديل انشاء استعلام الحاقي و نقل البيانات من جدول الى جدول.accdb 2
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.