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

استفسار

مغلق
بدأه blulushi في 15 سبتمبر 2001 · 22 رد · 1,486 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الأخوة الكرام

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

لقد عدت و كلي شوق بعد فترة غياب اضطرارية بأمر الطبيب

عدت و لدي استفسار وطلب ..

لدي قاعدة بيانات صغيرة مكونة من :

"جدول أسماء الطلبة"_"جدول المنطقة"_"جدول القرية"_"جدول أولياء الأمور".. و بينهم العلاقة التالية

::المنطقة(1)-(many)القرية...القرية(1)-(many)أولياء الأمور::

الإستعلامات التالية:

مجموع المبالغ حسب المنطقة.. مجموع المبالغ حسب القرية .. مجموع المبالغ حسب أولياء الأمور

نموذج إدخال البيانات فيه الحقول التالية:

"اسم الطالب"_"الصف"_"المنطقة"_"القريه"_"اسم ولي الأمر"_"المبلغ" ((اسم المنطقة و القرية و ولي الأمر موجودون في قوائم منزلقة -Compo Box- يتم الإختيار منها)).

البيانات التي تسجل في النموذج تذهب لجدول أسماء الطلبة و الذي يشمل ::اسم الطالب ::المنطقة::القرية::ولي الأمر::المبلغ::

و في نفس الوقت تسجل البيانات الخاصة بالمبلغ حسب بيانات المنطقة و القرية و ولي الأمر(( كل في الجدول التابع له ))

المشكلة:

---------

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

---الإستفسار---- هل يمكن فلترة الأسماء في القائمة المنزلقة للقرية التابعة للأسم الذي تم اخياره من قائمة المنطقة بحيث ::نفترض:: *قائمة المنطقة تحوي (1) (2) (3) ..

*قائمة القرية (1-1) (1-2) (1-3)//(2-2) (2-4) (2-6)//(3-3) (3-6) (3-9) :: لذا عندما أقوم بتعين المنطقة (2)مثلا.. تقوم القاعدة بفلترة البيانات الخاصة بهذه المنطقة فقط و إظهارها في قائمة القرية بحيث لا يمكن إختيار إلا :: (2-2) (2-4) (2-6) :: لأختار مثلا(2-4) و عندما آتي على قائمة أولياء الأمور تكون قد تم فلترتها على حسب القرية التابع لها

---اسلوب فلتره بس ماراضية تضبط معي---

أرجو أن أكون قد أوضحت فالظاهر إني طولت كثير..

أرجو ألا أكون قد أثقلت و لك الشكر و التقدير

أخوكم سعيد

#2

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

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

حاول و خبرني

#3

الأخ الكريم الإكسيلانس

بعد التحية و السلام..

لقد وضعت نموذج القرية كـ(Sub Form) في النموذج الأساسي - حسبما فهمت منك -

و قمت بفلترته بحيث يضهر كل القرى التابعة للمنطقةالمختارة من القائمة المنسدلة و تتغير حسب تغير المنطقة المختاره.

((..و لكن كيف أجعل قائمة القرى تقرأ بياناتها من الـ(Sub Form) المفلترة..))

:: خاصة و أني لا أريد أن أضهر هذا الـ(Sub Form) للمستخدم ::

أخوكم سعيد

saeed786@omantel.net.om

#4

فيما يلي أسلوب بسيط على أكسس 2000 وأكسس1997 ، واجهني فيه بعض الإشكالات ، لكن أرجو أن تستفيد منه وتتداركها وتحسن الفكرة(انقر بالزر الأيمن واختر حفظ باسم) :

http://mypage.ayna.com/harith77/area1.zip

http://mypage.ayna.com/harith77/area1-1997.zip

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

ثم تجعل في النموذج في خصائص مربع تحرير وسرد القرية مصدر الصف استعلام تدرج فيه حقل القرية من جدول القرى ، وحقل المنطقة من هذا الجدول ، وتجعل في معايير هذا الاستعلام في حقل المنطقة : [forms]![اسم النموذج]![اسم مربع تحرير وسرد المنطقة] .

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

وفق الله الجميع .

#5

الأخوة الكرام

بعد أجمل تحية و أفضل سلام

أخي الكريم حارث،،

أشكرك على هذا المثال الرائع و لقد قمت بتطبيقه بدقة مراعيا فرق الأسماء و لكن واجهتني مشكلة أرجو أن تكون بسيطه وهي حين أختار اسم القرية للسجل الأول تظهر بدون مشاكل و عندما أنتقل للسجل الجديد و اختار اسم منطقة جديدة تختفي بيانات القرية من السجل الأول(( في المثال الذي قمت بإعداده مشكورا لم يحصل ذلك)).. أرجو إن لم يكن فيه مضايقة لك أن تشرح لي حتى و لو بإيجاز عمل المثال وكيف يمكن تثبيت البيان المختار لإسم القرية عند الإنتقال لسجل جديد علما بأني استخدم في تنسيق الجدول(Columnar layout)

أخوكم سعيد

#6

أخي الفاضل سعيد :

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

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

في نموذج إدخال بيانات الطلاب جعلت مربع تحرير وسرد لإدخال رقم المنطقة ، وفي خصائصه نوع مصدر الصف : جدول/استعلام ، مصدر الصف استعلام أنشأته مستمدا من جدول المناطق يحتوي على حقلين : رقم المنطقة ، واسم المنطقة ،عدد الأعمدة :2 ، عرض العمود الأول صفر ، وعرض العمود الثاني 3 سم ، العمود المنضم : 1 ، أي رقم المنطقة ، طبعا لتكون القيمة الظاهرة هي اسم المنطقة، والمخزنة رقمها.وهنا لا يوجد أي مشكلة.

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

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

الحلول التي وجدتها حلان :

الحل الأول : أن تجعل في خصائص مربع التحرير والسرد القرية عرض العمود الأول 1 سم بدلا من صفر ، والثاني 3 سم ، ويعيب هذا الحل أن القيمة الظاهرة في مربع التحرير والسرد ستصبح هي رقم القرية بدلا من اسمها، ويمكن تلطيف ذلك بإضافة مربع نص بجواره يعرض اسم القرية (ويحتاج ذلك إلى أن يكون مصدر السجل في النموذج استعلام يحتوي على جدول الطلاب+ اسم القرية من جدول القرى) .

الحل الثاني : أن تغير في خصائص جدول الطلاب وتجعل حقل القرية حقل نص وليس رقم وتخزن فيه اسم القرية وليس رقمها ، ومن ثم تجعل في النموذج في خصائص مربع التحرير والسرد القرية مصدر الصف استعلام يحتوي على حقلين : اسم القرية ، رقم المنطقة ، عدد الأعمدة 1 ، العمود المنضم 1 .

هذا ما تمكنت من التوصل إليه ، ولعل عند الإخوان حلولا أفضل .

بالمناسبة أود شكرك على طرح الموضوع حيث كنت بحاجة إليه لكن أؤجل التفكير فيه .

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

وفق الله الجميع

#7

الأخ حارث

ممكن ترسل لي الملف على بريدي فأنا عجزت أن استوعب المشكلة .

شاكرا تعاونك سلفا .

H_H123@hotmail.com

ولك تحياتي

#8

الأخ أبو حمود :

الملف الذي تظهر فيه المشكلة عدلت فيه مع الأسف ، لكن سأحاول في أقرب وقت ممكن أن أجهزه بحيث تكون المشكلة ظاهرة وأرسله لك، فأنا في شوق لحل هذه المشكلة حيث لم أقتنع بالحلول التي توصلت إليها ، ولك شكري .

#9

الأح حارث

لك شكري وتقديري ، وفقك الله لك خير على سرعة استجابتك .

والله يحفظك واعتذر عن إزعاجك .

ولك تحياتي

#10

الأخوة الكرام

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

الأخ حارث

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

عموما و بعد البحث في الشبكة و جدت مسألة مشابه و قد تم حلها بواسطة كود و هي كالتالي : :( و لكنها لم تحل المشكلةعندي بعد :(

Private Sub cbxCombo1_AfterUpdate()

Dim strSQL As String

strSQL = "Select " & Me!cbxCombo1

strSQL = strSQL & " from Categories"

Me!cbxCombo2.RowSourceType = "Table/Query"

Me!cbxCombo2.RowSource = strSQL

End Sub

أرجو أن يكون منها فائدة لجمع الأفكار ..

أخوكم سعيد

#11

الأخ أبو حمود : كيف "إزعاج" والحاجة لنا، وأنت صاحب المعروف.

أرسلت لك الملف حسب فهمي ، وبودي لو أرسل الأخ سعيد الملف لديه لكم أيضا إن رأيتم ذلك .

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

وفق الله الجميع .

#12

الأخوة الكرام

بعد التحية و السلام

الأستاذ أبو حمود .. لقد سمحت لنفسي بإرسال مثال بسيط على موضوع المشكلة على بريدك الخاص (H_H123@hotmail.com ) .. فأرجو التكرم بإبداء الرأي..

أخوكم الصغير سعيد البلوشي

#13

الأخوة الكرام

بعد التحية و السلام

هل توصل أحدنا إلى شيئ .. أي شيئ .. أرجو مساهمات بقية الأعضاء ..

أخوكم سعيد

#14

الأخ حارث الأخ blulushi جميع الأخوة المشاركين

أولا أشكر الأخوين على إرسالهما الملفين على بريدي .

ثانياً : المشكلة اثنتان وليست واحدة وإن كانتا متشابهتين ولنبدأ بالأبسط وهي إمكانية عرض بيانات في قائمة منسدلة بناء على الاختيار من قائمة قبلها والفرق بينها وبين المشكلة التي تليها هو أن النموذج هنا في عرض نموذج مفرد وهي أبسط وأقل تعقيد وحلها :

1- في القائمة الأولى التي نريد عرض بياناتها بناء على الاختيار من القائمة السابقة نضع في مصدر الصف عبارة ٍٍَSQL ونضع في معيار جملة تستند إلأى قيمة على النموذج انظر المثال التالي :

SELECT القرى.[رقم مميز للقرى], القرى.[اسم القرية], القرى.المنطقه FROM القرى WHERE (((القرى.المنطقه)=forms!الطلبه![المنطقه]));

وفي القائمة التالية نعمل كالسابق .

2- في حدث عند الحالي للنموذج ضع :

Me![اسم القائمة الثانية].Requery

Me![اسم القائمة الثالثة].Requery

لاحظ أن كل القوائم ذات العبارات المشروطة يجب أن تكتب هنا .

3- ضع في حدث عند التركيز لكل قائمة :

Me![اسم القائمة الثانية].Requery

وهكذا تحل المشكلة .

المشكلة الثانية : النموذج يكون في عرض نماذج مستمرة -الأسماء بناء على المثال الذي أرسله لي الأخ حارث جزاه الله خير-وحلها :

Private Sub Form_Current()

Me.قرية_الطالب.Requery

End Sub

Private Sub قرية_الطالب_AfterUpdate()

القائمة "جديدة"

End Sub

Private Sub منطقة_الطالب_AfterUpdate()

DoCmd.GoToControl "قرية_الطالب"

If Len(Me![قرية_الطالب]) = 0 Then

القائمة "جديدة"

Else

القائمة "تعديل"

End If

قرية_الطالب.Dropdown

End Sub

Private Function القائمة(اختيار As String)

Dim strSql As String

strSql = "SELECT قرى.رقم_القرية, قرى.اسم_القرية, قرى.منطقة_القرية FROM قرى;"

Select Case اختيار

Case "جديدة"

قرية_الطالب.RowSource = strSql

Case "تعديل"

قرية_الطالب.RowSource = "SELECT قرى.رقم_القرية, قرى.اسم_القرية, قرى.منطقة_القرية " _

& " FROM قرى WHERE (((قرى.منطقة_القرية)=[Forms]![الطلاب الجديد]![منطقة_الطالب]));"

End Select

End Function

مع ملاحظة التالي:

1- يجب منع الخروج بدون اختيار بيانات من المنطقة بجعل خاصية مطلوب في الجدول إلى نعم .

2- يجب منع الخروج من قرية الطالب بنفس الطريقة السابقة .

وفي اعتقادي أن سبب المشكلة هو أن النموذج بعرض نماذج مستمرة .

آمل من الأخوة -خاصة الأخ حارث- تجربة الكود السابق وإفادتنا بالنتيجة .

الأخ حارث سأرسل القاعدة بعد التعديل على بريدك .

الأخ بلوشي سأرسل القاعدة الثانية بعد التعديل على بريدك .

وللجميع تحياتي

#15

الأخ أبو حمود :

الملف بعد التعديل أصبح أكثر من رائع ، ولك جزيل الشكر .

الإخوة الأفاضل :

لتكونوا في الصورة معنا في فهم الموضوع تجدون الملف أدناه، ويحتوي على ثلاثة نماذج :

النموذج الأول : طلاب ، وهو نموذج مفرد ، ولا تظهر فيه المشكلة .

النموذج الثاني : طلاب2 ، نموذج مستمر ، وتظهر فيه المشكلة .

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

أكسس 2000 : http://mypage.ayna.com/harith77/NewAreaVillage.zip

أكسس 1997 : http://mypage.ayna.com/harith77/NewAreaVillage1997.zip

( انقر بالزر الأيمن واختر حفظ الهدف باسم )

وفق الله الجميع

#16

الأخوة الكرام..

بعد التحية و السلام

الأخ الكريم الأستاذ حارث

الأخ الكريم الأستاذ أبو حمود

أدام الله عليكم صفاء العقل و خصب المخيله و العفو و العافية.. إنه سميع مجيب.

أخوكم سعيد

#17

جزاك الله خير .

ولا حرمك الله أجر دعوتك .

ولك تحياتي

#18

تحية عطرة للأستاذ حارث

المثال NewAreaVillage الذي أرفقته جميل وإنني حاولت أن أدخل عليه بعض التحسينات لكنني فشلت والذي أطلبه منك إكمال الجميل وذلك بإضافة بعض الأمور لو تكرمت :

-1- بعد فتح نموذج الطلاب الجديد إذا إختار المستخدم منطقة الشرقية من القائمة بشكل أتوماتيكي تنفتح له قائمة القرى ليختار منها إحدى القرى وهي شرقاء أو مشرقة أو شرق وهذا جميل لكن إذا كانت القرية المختارة السابقة هي جنباء من منطقة الجنوبية والمستخدم تركها فتبقى كما هي فتصير المنطقة الشرقية و القرية جنباء وهذا خطأ

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

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

#19

الأخ محسن :

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

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

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

وفق الله الجميع .

#20

الأخ حارث

بالنسبة للأشكال الذي ذكرته فلم أنتبه إليه والحل أن تضع في حدث عند الخروج لحقل قرية_الطالب السطر التالي :

القائمة "جديدة"

وإذا استخدمت الأكواد التالية فهي موجودة ضمنها .

الأخ محسن محمد

بالنسبة للطلب الأول فضع في حدث عند الخروج من القائمة الأسطر التالية :

If القرية_في_المنطقة = False Then

MsgBox "القرية التي اخترتها ليست موجودة في المنطقة ." & vbCrLf _

& "أعد الإختيار مرة أخرى .", vbMsgBoxRight + vbMsgBoxRtlReading

Cancel = -1

قرية_الطالب.Dropdown

Exit Sub

End If

القائمة "جديدة"

وفي آخر الوحدة النمطية للنموذج ضع :

Private Function القرية_في_المنطقة() As Boolean

Dim db As Database

Dim rst As Recordset

Set db = Application.CurrentDb

Set rst = db.OpenRecordset("SELECT مناطق.رقم_المنطقة, قرى.رقم_القرية FROM قرى INNER JOIN مناطق ON قرى.منطقة_القرية = مناطق.رقم_المنطقة " _

& " WHERE (((مناطق.رقم_المنطقة)=" & [Forms]![الطلاب الجديد]![منطقة_الطالب] & ") AND ((قرى.رقم_القرية)=" & [Forms]![الطلاب الجديد]![قرية_الطالب] & ")); ")

If rst.RecordCount = 0 Then

القرية_في_المنطقة = False

Else

القرية_في_المنطقة = True

End If

db.Close

End Function

أما الطلب الثاني فضع في حدث بعد التحديث لقائمة قرية الطالب الأسطر التالية :

Dim db As Database

Dim rst As Recordset

Set db = Application.CurrentDb

Set rst = db.OpenRecordset("SELECT مناطق.رقم_المنطقة, قرى.رقم_القرية " _

& " FROM قرى INNER JOIN مناطق ON قرى.منطقة_القرية = مناطق.رقم_المنطقة " _

& " WHERE (((قرى.رقم_القرية)=" & [Forms]![الطلاب الجديد]![قرية_الطالب] & "));")

Me![منطقة_الطالب] = rst![رقم_المنطقة]

db.Close

القائمة "جديدة"

ملاحظة هامة يلزم وضع مرجع لـ DAO عن طريق اختيار Tools في الوحدة النمطية ثم References ثم اختيار

Microsoft DAO 3.6 Object Library

ولك تحياتي

#21

إتماما للفائدة تجدون الملف بعد إضافة الأكواد التي ذكرها الأخ أبو حمود - جزاه الله كل خير - على الوصلة التالية :

أكسس 2000 : http://mypage.ayna.com/harith77/LastAreaVillage.zip

وفق الله الجميع .

#22

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

وماشاء الله عليكم جميعكم مثال للجود والعطاء زادكم الله علما ونورا ونفع بكم

اخي العزيز حارث اذا امكن ارسال القاعدة على بريدي حيث حاولت تحميلها ولم استطع وجزاك الله عنا خير الجزاء

البريد = ashhh1@hotmail.com

#23

المعذرة :

بحثت عن الملف الأخير لدي فلم أجده .

(وهو المطلوب بالطريقة الصحيحة)

لكن لعله يكون موجودا عند بعض الإخوة .

أما الملفان الأول والثاني :

(انقر بالزر الأيمن واختر حفظ الهدف باسم)

الأول :

http://www.pcpages.com/harith77/area-village.zip

الثاني :

http://www.pcpages.com/harith77/NewAreaVillage.zip

هذا الموضوع مغلق.

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