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

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

قام بنشر

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

الاخوة الأكارم الرجاء تعديل العنوان والقسم بمايتناسب مع قوانين المنتدي

لدي مشكلة لم استطع حلي منز فترطة طويلة (حاولت بكل الطرق _ استعلامات الحاق اجرائية _ حاولت بكود sql)

المعطيات

نظام به عدة جداول مرتبطة

المطلوبات

اريد نقل معلومات الجدول التالي stages وهو الجدول الأساسي للتسجيل الجديد للطلاب

اريد نقل معلوماته الي جدول Obtained_Basic وهو جدول الدرجات المتحصلة لمرحلة الأساس

فقط يمكن تغيير عمود السنة الدراسية (Academic_Year_B) وايضا عمود الفترة الدراسية (Periods_B) او الاثنين معا او احدهما او كليهما

مايهم 

نقل كل السجلات من  الجدول التالي stages الي جدول Obtained_Basic دون تكرار

عدم تكرار النقل في حال لم يتغير شي في احد العمودين عمود السنة الدراسية (Academic_Year_B) وايضا عمود الفترة الدراسية (Periods_B) او الاثنين معا

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

موجود مرفق 2010 به كل المطلوب مع محاولاتي

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

استعلام الحاق بشروط دون تكرار.accdb

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

ولكن عملية تحويله الي vba code اعطت نتائج خطأ

حتي الاستعلامات الاجرائية احيانا تشتغل واحيانا لا

الكود

Me.Year.SetFocus
If Me.Year.Text = "" Then MsgBox "ÇáÑÌÇÁ ÅÎÊíÇÑ ÇáÚÇã ÇáÏÑÇÓí": Exit Sub
Me.Periods.SetFocus
If Me.Periods.Text = "" Then MsgBox "ÇáÑÌÇÁ ÅÎÊíÇÑ ÇáÝÊÑÉ": Exit Sub
If MsgBox("ÓæÝ íÊã ÊÑÍíá ÇáØáÇÈ" & vbCrLf & "åá ÇäÊ ãÊÃßÏ ãä ÊäÝíÐ ÇáÃãÑ .", vbMsgBoxRtlReading + vbMsgBoxRight + vbExclamation + vbYesNo, "ÊÑÍíá ÇáØáÇÈ") = vbNo Then Exit Sub
Dim SQL As String
SQL = "INSERT INTO Grades_Obtained_Basic_School (Class_B, Academic_Year_B, Periods_B, File_No_B)" & _
"SELECT Grades_Obtained_Basic_School.Class_B, Grades_Obtained_Basic_School.Academic_Year_B," & Me.Periods.Column(0) & ",Grades_Obtained_Basic_School.File_No_B " & _
"FROM Students INNER JOIN Grades_Obtained_Basic_School ON Students.File_No=Grades_Obtained_Basic_School.File_No_B " & _
"WHERE Grades_Obtained_Basic_School.Class_B=" & Me.Class.Column(0) & " AND Grades_Obtained_Basic_School.Academic_Year_B=" & Me.Year.Column(0) & ";"
DoCmd.SetWarnings False
DoCmd.RunSQL SQL
MsgBox "Êã ÊÑÍíá ÇáØáÇÈ ÈäÌÇÍ"
 

قام بنشر

نقل كل المفاتيح من stages الي Obtained_Basic يشرط في المرة الاولي كلها

في المرة الثانية بشرط نقل السجلات الجيد او التي حدث بها تغيير

قام بنشر

الضبط ينبع من الجداول

اولا الجدول الاساسي لا يوجد فيه حقل للفترة

لذا اضفت الحقل

الحل هو جعل الحقول الثلاث مفاتيح بحيث اذا تساوت القيمة يمنع الالحاق ( رقم الملف / العام الدراسي / الفترة )

انظر المرفق وشغل الاستعلام 

ثم شغلة مرة اخرى

ثم غير في واحد من السجلات

ثم شغل الاستعلام وانظر النتيجة

استعلام الحاق بشروط دون تكرار2.rar

  • Thanks 1
قام بنشر

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

stages
رقم الملف العام الدراسي الصف الفصل الفترة
1 2 1 1 2
2 2 1 2 2
3 2 2 1 2
4 2 2 2 2
5 2 3 1 2
6 2 3 2 2

أولا شاكر لاهتمامك 

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

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

في البداية قمت بتغيير نصف السجلات وعددها 3 سجلات من اصل 6

ولم يفلح  الامر

وبعدها قمت بتغيير كل السجلات وهي 6 سجلات كما تري ولم يفلح الامر ايضا

أيضا حاولت استخدام هذه الدالة

Not In (SELECT stages.File_Info
FROM stages
)

قام بنشر
2 ساعات مضت, ibnjabalsoftware said:

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

تأكد يا زول ، انت ما جربتها

الحقول الثلاث : اسم الطالب /  السنة الدراسية / الفترة  ، مفاتيح مرتبطة مع بعض

يستحيل الحاق سجل مشابه للحقول الثلاث .

  • Like 2
قام بنشر

السلام عليكم

كلامك صحيح استاذي العزيز @ابوخليل

انا جربت الملف

السجلات لاتتكر

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

تحياتي استاذ

قام بنشر

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

مشاركه مع اخوانى واساتذتى جزاهم الله عنى كل خير

فى مثال اخى ومعلمى وشيخنا الجليل @ابوخليل قم بازاله العلاقه ما بين جدول Obtained_Basic وجدول Students ثم قم باضافتها مره اخرى اذا شئت

او استخدم

INSERT INTO Obtained_Basic ( File_No_B, Academic_Year_B, Class_B, Classroom_B )
SELECT stages.File_No_S, stages.Academic_Year_S, stages.Class_S, stages.Classroom_S
FROM stages
WHERE ((([File_No_s] & [Academic_Year_s] & [Class_s] & [Classroom_s]) Not In (SELECT  [File_No_B] & [Academic_Year_B] & [Class_B] & [Classroom_B] FROM Obtained_Basic ;)));

بالتوفيق

قام بنشر
2 ساعات مضت, ابوخليل said:

تأكد يا زول ، انت ما جربتها

الحقول الثلاث : اسم الطالب /  السنة الدراسية / الفترة  ، مفاتيح مرتبطة مع بعض

يستحيل الحاق سجل مشابه للحقول الثلاث .

هههههههههههه

لا اخفي عليك الله علما

هههههههههه كيف عرفت اني زول ما اظن من البروفايل يا بروف @ابوخليل

والله حتي النسخة الاخيرة جربتها وما ظبطت

Obtained_Basic
ترقيم تلقائي رقم الملف العام الدراسي الصف الفصل الفترة إسلامية
1 1 1 1 1    
2 2 1 1 2    
3 3 1 2 1    
4 4 1 2 2    
5 5 1 3 1    
6 6 1 3 2    

 

اولا الفترة تم تجاهلها (وانا قصدت قصدت اخد السنة والفترة من نموزج Operations_On_Result وعلي اساسها يتم النقل

عموما الاستعلام يرفض بعد تغيير السجلات في العام الدراسي كما يلي

stages
Stage_ID رقم الملف العام الدراسي الصف الفصل
1 1 2 1 1
2 2 2 1 2
3 3 2 2 1
4 4 2 2 2
5 5 2 3 1
6 6 2 3 2

 

لاحظ العام الدراسي

ويا @ابوبسمله الكود كلو صاير أحمر ماقدرت انسقو قبل الرد ياريت تطبيقه علي النموزج Operations_On_Result مع الاخز في الاعتبار نموزج المرشحات هو نموزج Operations_On_Result أقوم باستخدام لتحديد السنة والفترة الدراسية ولاحظ ان الفترة الدراسية غير موجود كحقل في جدول stages 

 

قام بنشر
36 دقائق مضت, ibnjabalsoftware said:

هههههههههه كيف عرفت اني زول ما اظن من البروفايل يا بروف @ابوخليل

البلد : السودان ..

ومعك حق انا غفلت عن الاسم ابن جبلة

اذا انت يمني او سوري ، لان بلدة جبلة في اليمن وفي سوريا

بالنسبة لمشكلتك اذا بتلغي شرط الفترة جرب تكتفي بحقلين فقط مفاتيح في الجدول

قام بنشر
2 ساعات مضت, Ahmed_J said:

السلام عليكم

كلامك صحيح استاذي العزيز @ابوخليل

انا جربت الملف

السجلات لاتتكر

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

تحياتي استاذ

الله ينور علييييييييييييك  يا استاذ @Ahmed_J

يا @ابوخليلالاستعلام يعمل في المرة الأولي في حال تفريغ جدول  Obtained_Basic وبعدها لايستطيع نسخ السجلات ازا شغلت الاستعلام مرة اخري

هذا هو المطلوب بعينه

هب انني سجلت 3 طلاب في ثلاث صفوف مختلفة في جدول stages

وبعدها قرت اجلاسهم في الامتحان الشهري الأول في جدول Obtained_Basic

سانقل الطلاب باستعلام وياحبزا تحوله لكود من جدول stages الي جدول Obtained_Basic بناءا علي الفلتر او المرشحات او الكمبو بوكس الموجودة في نموزج Operations_On_Result

ويمكن تكرار هذ الخطوات في كل مرة تطرأ فيها اختبارات او امتحانات مع مراعات تغيير السنة والفترة من نموزج Operations_On_Result

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

قام بنشر

السلام عليكم

2 ساعات مضت, ibnjabalsoftware said:

يا @ابوبسمله الكود كلو صاير أحمر ماقدرت انسقو قبل الرد ياريت تطبيقه علي النموزج Operations_On_Result مع الاخز في الاعتبار نموزج المرشحات هو نموزج Operations_On_Result أقوم باستخدام لتحديد السنة والفترة الدراسية ولاحظ ان الفترة الدراسية غير موجود كحقل في جدول stages 

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

3 ساعات مضت, ابوبسمله said:

فى مثال اخى ومعلمى وشيخنا الجليل @ابوخليل قم بازاله العلاقه ما بين جدول Obtained_Basic وجدول Students ثم قم باضافتها مره اخرى اذا شئت

او استخدم

واليك المثال

قم بتشغيل الاستعلام qryInsert لن يتم ترحيل اى سجلات

قم باضافه سجلات فالجدول stages ثم قم بتشغيل الاستعلام سيتم السجلات الجديده فقط

بالنسبه للنموذج  Operations_On_Result لم يتم ذكره ببدايه السؤال قم انت بعمل بعمل الفلتر على استعلام الالحاق وفق المعايير المناسبه لك

بالتوفيق

استعلام الحاق بشروط دون تكرار_1.accdb

قام بنشر
3 ساعات مضت, ابوبسمله said:

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

مشاركه مع اخوانى واساتذتى جزاهم الله عنى كل خير

فى مثال اخى ومعلمى وشيخنا الجليل @ابوخليل قم بازاله العلاقه ما بين جدول Obtained_Basic وجدول Students ثم قم باضافتها مره اخرى اذا شئت

او استخدم

INSERT INTO Obtained_Basic ( File_No_B, Academic_Year_B, Class_B, Classroom_B )
SELECT stages.File_No_S, stages.Academic_Year_S, stages.Class_S, stages.Classroom_S
FROM stages
WHERE ((([File_No_s] & [Academic_Year_s] & [Class_s] & [Classroom_s]) Not In (SELECT  [File_No_B] & [Academic_Year_B] & [Class_B] & [Classroom_B] FROM Obtained_Basic ;)));

بالتوفيق

بوركت وبورك في @ابوخليلوالرفاق الجميلين

لاحظ الاستعلام الالحاقي شغال بصورة طبيعية الا انه يقبل التكرارا لنفس الحقول

 

Obtained_Basic
ترقيم تلقائي رقم الملف العام الدراسي الصف الفصل الفترة
247 1 1 1 1 1
248 2 1 1 2 1
249 3 1 2 1 1
250 4 1 2 2 1
251 5 1 3 1 1
252 6 1 3 2 1
253 1 1 1 1 1
254 2 1 1 2 1
255 3 1 2 1 1
256 4 1 2 2 1
257 5 1 3 1 1
258 6 1 3 2 1
259 1 1 1 1 1
260 2 1 1 2 1
261 3 1 2 1 1
262 4 1 2 2 1
263 5 1 3 1 1
264 6 1 3 2 1

لاحظ اقام الطلاب من 1 الي 6 مكررين ثلاثة مرات

قام بنشر
1 دقيقه مضت, ibnjabalsoftware said:

بوركت وبورك في @ابوخليلوالرفاق الجميلين

لاحظ الاستعلام الالحاقي شغال بصورة طبيعية الا انه يقبل التكرارا لنفس الحقول

وفيك بارك الله

معلش سامحنى الصوره دى من اى مثال ؟

قام بنشر
57 دقائق مضت, ابوبسمله said:

وفيك بارك الله

معلش سامحنى الصوره دى من اى مثال ؟

الصورة كانت من المثال قبل الأخير

في ما تكرمت من مثال يجري العمل طبيعيا في حال قمنا بالتغيير في جدول stages

ولكن في اغلب الأحيان المعلومات في جدول ال stages تكون ثابتة 

ولكن عندما نريد ترحيلها نقوم بترحيلها وفق المرشحات التي بنموزج Operations_On_Result وهنا تكم مشكلة التكرار 

في 2‏/2‏/2023 at 20:01, ibnjabalsoftware said:

لمطلوبات

اريد نقل معلومات الجدول التالي stages وهو الجدول الأساسي للتسجيل الجديد للطلاب

اريد نقل معلوماته الي جدول Obtained_Basic وهو جدول الدرجات المتحصلة لمرحلة الأساس

فقط يمكن تغيير عمود السنة الدراسية (Academic_Year_B) وايضا عمود الفترة الدراسية (Periods_B) او الاثنين معا او احدهما او كليهما

مايهم 

نقل كل السجلات من  الجدول التالي stages الي جدول Obtained_Basic دون تكرار

عدم تكرار النقل في حال لم يتغير شي في احد العمودين عمود السنة الدراسية (Academic_Year_B) وايضا عمود الفترة الدراسية (Periods_B) او الاثنين معا

لو لاحظت العبارات كانت واضحة في الجزء "فقط يمكن تغيير عمود السنة الدراسية (Academic_Year_B) وايضا عمود الفترة الدراسية (Periods_B) او الاثنين معا او احدهما او كليهما"

لو دققنا قليلا في Academic_Year_B وايضا Periods_B

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

يوم 6 شهر 2

تحديث جديد لقد تم حل المشكلة يارفاق @ابوخليل @ابوخليل @Ahmed_J

INSERT INTO Obtained_Basic ( File_No_B, Academic_Year_B, Class_B, Classroom_B, Periods_B )
SELECT stages.File_No_S, [Forms]![Operations_On_Result]![Year] AS [Year], stages.Class_S, stages.Classroom_S, [Forms]![Operations_On_Result]![Periods] AS Periods
FROM stages
WHERE ((([Forms]![Operations_On_Result]![Year])=[Forms]![Operations_On_Result]![Year]) AND (([Forms]![Operations_On_Result]![Periods])=[Forms]![Operations_On_Result]![Periods]) AND (([File_No_S] & [Forms]![Operations_On_Result]![Year] & [Class_S] & [Classroom_S] & [Forms]![Operations_On_Result]![Periods]) Not In (SELECT [File_No_B] & [Academic_Year_B] & [Class_B] & [Classroom_B] & [Periods_B] AS Not2
FROM Obtained_Basic)));

الان اريد تحويل الاستعلام الالحاقي الي vba code

بحيث لايستطيع احد الوصول الي الاستعلام وتخريبه

 

 

تم تعديل بواسطه ابوخليل
ضبط تنسيق الكود

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   1 عضو متواجد الان

×
×
  • اضف...

Important Information