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

نموذج لاستدعاء بيانات جدول رئيسى مع بيانات من جدول فرعى ؟

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

أخوتى و أحبتى

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

و كل عام و أنتم بخير

إذا كان لدينا قاعدة بيانات للموظفين – مثلا –

و بها جدول للبيانات الأساسية للموظفين من حقوله : كود الموظف " مفتاح أساسى " – اسم الموظف – باقى بياناته الشخصية

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

السؤال هو : كيف يمكن عمل نموذج به نموذج فرعى للإجازات مثلا – هذا النموذج الآساسى يه Combo Box يمكن استدعاء بيانات الموظف سواء بالكود او بالاسم بحيث عند فتحة يتم ظهور الأسماء أبجديا و يتم الاختيار منه او كتابة كود الموظف مباشرة حتى يتم استدعاء بياناته الشخصية بالنموذج الرئيسى و بيانات الإجازات مثلا بالنموذج الفرعى ؟

خالص شكرى و تقديرى للجميع

(f) أخـــــــــــBengaـــــوكم (f)

قال أبن القيم : أكثروا من الخير فينتشر .. و أقلوا من الشر فيندثر ..

#2

أنا ما فهمت السؤال .

أرسل لي القاعدة على البريد مع مزيد من الايضاح حسب الاسماء في القاعدة .

ولك تحياتي

#3

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

أخى الحبيب / ابو حميد

راجع بريدك من فضلك :D

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

و الله المستعان

خالص تحياتى

(f) أخــــــــــBengaــــــوك(f)

قال أبن القيم : أكثروا من الخير فينتشر .. و أقلوا من الشر فيندثر ..

#4

الأخ benga

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

لذلك أرسل الملف مرة اخرى مع اعتذراي لك .

ولك تحياتي

#5

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

شكرا لك اخى ابو حمود

ارسلته لك مرة أخرى

راجع بريدك من فضلك (f)

خالص تحياتى للجميع

أخـــــــــBengaـــــوكم

قال أبن القيم : أكثروا من الخير فينتشر .. و أقلوا من الشر فيندثر ..

#6

الأخ benga

لم يصلني شيء ولم أحذف هذه المرة شيء .

ولك تحياتي

#7

خيراَ إن شاء الله ..

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

ربما لابد و ان اكتب حرف العنوان كبيرة اليس كذلك .. عفوا فالمسجل عندى بحروف صغيرة

خالص شكرى و تقديرى لأهتمامك أخى الحبيب

أخـــــــBengaـــوك

قال أبن القيم : أكثروا من الخير فينتشر .. و أقلوا من الشر فيندثر ..

#8

ارسلت لك رسالة على عنوانك البريدي أنه لم يصلني شيء حتى الآن فهل وصلتك وأما الملف فلم يصلني حتى الآن .

لاتنسى إن أرسلته أن تضع الموضوع بالعربي .

ولك تحياتي

#9

أخى الحبيب ابو حمود

أرسلت لك رسالة تحمل الملف ردا على بريدك الذى ارسلتة لى و ذلك يوم وصلها لى فهل وصلتك و معها المف ؟

مع خالص شكرى و تقديرى

أخــــــBengaـــــــوك

قال أبن القيم : أكثروا من الخير فينتشر .. و أقلوا من الشر فيندثر ..

#10

لا لم يصاني شيء تأكد من البريد الصحيح .

H_H123@Hotmail.com

أنسخه وأزل الكلمة قبله والنقطتين بعد اللصق .

ولك تحياتي

#11

اخى ا لحبيب

تم عمل كل ما ذكرته بالحرف :) :)

خالص تحياتى

أخــــــــBengaــــــوك

قال أبن القيم : أكثروا من الخير فينتشر .. و أقلوا من الشر فيندثر ..

#12

اخى الفاضل

يظهر انى اهتممت بارسال الملف و نسيا انه يمكنى ان انشرها هنا و اعتقد ان هذا اسهل

http://www.geocities.com/zoka_5/files/Emp_Review.ZIP

خالص تحياتى

قال أبن القيم : أكثروا من الخير فينتشر .. و أقلوا من الشر فيندثر ..

#13

الأخ benga

أرسلت الملف على بريدك بعد التعديل .

ولك تحياتي

#14

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

الأخ الفاضل / ابو حمود

(f) شكرا لك .. (f)

و جزاك الله خيرا .. فعلا هذا هو المطلوب :D (y) (y)

و هذه هى الوصلة للملف بعد تعديلاتك حتى يستفيد منها الاخوان الذين يبحثون عن مثل هذه الأسئلة

http://www.geocities.com/zoka_5/files/EMP_REVIEW2.ZIP

ّّّ~~~~~~~~~

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

يظهر انى طمعت فيك :) :)

لكن اكيد من عشمى و ان شاء الله يكون شبة درس مفيد لنا جميع

اشكرك مرة أخرى

و أرجو ان تتقبل خالص تحياتى (f)

أخــــــــBengaـــــوك

قال أبن القيم : أكثروا من الخير فينتشر .. و أقلوا من الشر فيندثر ..

#15

الأخ benga

كود الاختيار بين ذكر أو أنثى أو الاختيار من القائمة أو كتابة 1أو 2 :

If IsNumeric(NewData) Then
Response = acDataErrContinue
If NewData = 1 Then
Emp_Sex = "ذكر"
Else
Emp_Sex = "أنثى"
End If
Emp_Tel.SetFocus
End If

السطر الأول يحتوي على IF الشرطية ويقاربها في المعنى في اللغة العربية (إذا كان) ولابد أن يأتي بعدها الشرط وهو هنا أن تكون قيمة المتغير NewData رقمية وليست حرفية ، ونعرف أنها رقمية وليست حرفية باستخدام دالة التحقق من نوع البيانات IsNumeric وهي تعيد قيميتين True إذا كانت قيمة المتغير رقمية أو False إذا كانت قيمة المتغير ليست رقمية حروف أو حروف وأرقام ولكن كما يشاهد في الكود كأن الشرط في السطر ناقص يعني لم نطلب منه أن يتأكد هل هي True أو False فالمفروض أن تكون هكذا :

If IsNumeric(NewData) = True Then

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

يأتي بعد ذلك كلمة Then ومعناها (تقريب للمعنى في الكود) فاعمل كذا .

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

والجواب : أن الحقل في السجل الجديد فارغ حتى ولو كتبتها في مربع النص لأن السجل مرتبط بالجدول وهذا السجل -الحالي- لم يتم حفظه في الجدول فهو فارغ لايوجد به أي قيمة .

ويمكن الحل بطريقة أخرى كالتالي :

If IsNumeric(Emp_Sex.Text) = True Then

بإضافة TEXT الى اسم الحقل بعد النقطة وهي تظهر القيمة الحالية لمربع النص بغض النظر عن أن القيمة محفوظة في الجدول حالياً أم لم يتم الحفظ .

السطر الثاني :

Response = acDataErrContinue

Response : متغير تولى الإعلان عنه الأكسس وهو من نوع عدد صحيح ، وهو يمثل العمل أو التصرف المطلوب من الحدث فعله وهي ثلاثة أفعال :

acDataErrDisplay : الافتراضي ، وهي إظهار الرسالة المعتادة "النص الذي أدخلته ليس عنصراً ضمن القائمة ......" عند عدم التزام المستخدم بالقائمة ، وهي تظهر بدون أن يتم عمل أي كود فقط اختر في خاصية التزام بالقائمة نعم وستظهر لك مباشرة ، وقد يقال إذا ما عملها ؟

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

If IsNumeric(NewData) Then
Response = acDataErrContinue
Select Case NewData
Case 1
Emp_Sex = "ذكر"
Case 2
Emp_Sex = "أنثى"
Case Else
Response = acDataErrDisplay
Exit Sub
End Select
Emp_Tel.SetFocus
End If

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

acDataErrAdded : لاتعرض الرسالة الافتراضية وذلك لتمكين المستخدم من إضافة القيمة الى مصدر القائمة في مكان آخر كنموذج آخر أو جدول ثم بعد العودة الى النموذج يتم التأكد من القيمة ولذلك لابد من عمل Requery لتحديث القائمة بآخر البيانات التي سجلت .

تلاحظ أيضا في الكود أننا قصرنا عمل الكود بكون القيمة المدخلة رقمية وإلا لايعمل منه أي شي ، فما فائدة ذلك ؟

والجواب حتى لايظهر خطأ في السطر If NewData = 1 Then إذا تم إدخال قيم حرفية غير موجودة في القائمة ، وجرب تعليق السطر الأول من الكود المذكور في أول الرد والسطر الأخير منه وانظر النتيجة ستظهر رسالة Type Mismatch لاختلاف النوع .

السطر الذي بعده :

If NewData = 1 Then
Emp_Sex = "ذكر"
Else
Emp_Sex = "أنثى"
End If

يتأكد من قيمة المتغير NewData بعد تأكدنا أنها قيمة رقمية فإذا كانت تساوي واحد يسجل كلمة "ذكر" وإلا يسجل كلمة "أنثى" .

Else معناها التقريبي وإلا .

End If : إغلاق لـ If الشرطية وهي ضرورية جداً إذا كان ما يأتي بعد Then في سطر لوحده .

مثال لكيفة الاستغناء في مثالنا السابق :

If NewData = 1 Then _
Emp_Sex = "ذكر" _
Else _
Emp_Sex = "أنثى"

السطر ما قبل الأخير :

Emp_Tel.SetFocus

وظيفته نقل التركيز لمربع النص المسمى Emp_Tel وفائدته عدم جعل القائمة منسدلة بعد وضع رقم ، جرب تعليق السطر وانظر النتيجة .

السطر الأخير :

End If وهي اغلاق لـ IF الشرطية الأولى ويسمى هذا الأسلوب تعشيش دالات IF داخل بعضها .

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

ولك تحياتي

#16

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

أخى الحبيب ابو حمود

" يا أخى جماليك مغراّنا " هكذا نقول فى مصر عندما نعجز عن الشكر :) (f)

و لكن الأفضل .. جزاك الله كل خير و جعلة فى موازين حسناتك

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

أرجو أن تتقبل خالص تحياتى

أخــــــــBengaــــــوك

قال أبن القيم : أكثروا من الخير فينتشر .. و أقلوا من الشر فيندثر ..

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…