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

نقل قيمة من نموذج لآخر

مغلق
بدأه حازم1111111111 في 17 أغسطس 2006 · 6 رد · 1,102 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

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

عندي استفسار بسيط ارجوا من الاخوة المبرمجين الكرام

الاجابة عليه ..

لدي نموذجين في قاعدة البيانات ......

النموذج الاول هو نموذج الموظفين(وبه جميع بيانات الموظفين) ....وهو النموذج الرئيسي

وبه زر امر عند فتحه يفتح على النموذج الاخر وهو نموذج المتقاعدين.

السؤال هنا ..ان النوذج الرئيسي به خانة اختيار..اسمها (موظف متقاعد)

اريد ان يقوم البرنامج مباشرة عند اختيار موظف متقاعد من خانة الاختيار في النوذج الرئيسي (ان ينقل اسم الموظف مباشرة الى النموذج الاخر الخاص بالمتقاعدين)بحيث لايظهر في النموذج الرئيسي ويظهر في نموذج المتقاعدين .........

وشكرا لكم اخواني

#2

أخي الكريم لك ما طلبت ... أتمنى أن يكون هو المطلوب ... ونرجوا منك الدعاء الصالح ..

أخوكم في الله sandanet

ASD.zip

تم تعديل هذه المشاركة بواسطة SANDANET في 17 أغسطس 2006 في 15:56

#3

sandanet

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

ولكن الا يوجد كود مثلا if .. then

وعند اختيار صح يعمل الكود

وشكرا

#4

أخي الكريم ياريت اتوضح سؤالك اكثر

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

if .... then في الكود الخاص بعلامة الصح الموجودة بالمثال ..

#5

صباح او مساء الورد

انا عاجز عن شكرك اخيsandanet

وحقيقة غمرتني بكرمك ولطفك

ولا املك لك الا الدعاء لك بكل خير

واتمنى ان تصبر علي وتتحملني

ولكن اريد كيفية صياغة الكود بالضبط ولكن مني جزيل الشكر

#6

أخي الكريم حازم

تحية طيبة لك وبعد ..

سوف أشرح لك الطريقة لكي تتضح لك الصورة ..

في البداية يجب أن يكون عندك جدولين رئيسيين كما في المثال السابق ( Table1 و Table2 ) وجدول فرعي تضع فيه حالة الموظف كما في المثال ( الموظفون ) ويجب أن تربط الجدول الفرعي هذا بالجدوليين الرئيسيين وفي المثال السابق تم ربط الجدول الفرعي بالحقل ( b ) لكلا الجدولين ..

إذا كنت لا تعرف طريقة الربط فاخبرني لكي اشرحها لك بصورة منفصلة ..

ثانيا يجب أن يحتوي كل من الجدوليين الرئيسيين على الترقيم التلقائي وفي المثال السابق الترقيم التلقائي واضح وهو بأسم ( Serial ) في كلا الجدولين الرئيسيين ...

بعدها أنشيء نموذج للجدول ( table1 ) في المثال السابق أسم النموذج ( form1 ) ..

الى هنا كل شيء واضح صح ..

بعدها توجه الى الاستعلامات وانشيء استعلام إلحاقي وفي المثال أسم الاستعلام الإلحاقي هو ( Query1 ) يقوم الاستعلام هذا بإلحاق جميع بيانات ( table1 ) الى ( table2 ) بدون أستثناء

ملاحظة : حاول ان تجعل كل من الجدوليين الرئيسيين يحتويان على نفس الحقول حتى لا يكون هناك مجال للخطأ

المهم ..

مازلنا في الاستعلام الإلحاقي ... نحن نريد نقل بيانات سجل واحد فقط وهو الذي نريده وليس جميع السجلات الموجودة في الجدول الأول .. صح ؟؟؟ إذن لابد من وضع كود في الاستعلام الإلحاقي يعبر عن مشاعرنا ( هههههه ) قصدي لابد من وضع كود وهو يعتبر الشرط الذي يعمل فيه الاستعلام الإلحاقي كما نريده ..

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

لماذا حقل ال ( serial ) بالذات وليس حقل آخر ؟؟؟

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

ولتتضح الفكرة لك بشكل كامل ... حاول جعل خانة ال ( serial ) في النموذج ظاهرة اي قم باختيار كلمة نعم على خاصية ( مرئي ) لكي يظهر مربع ال ( serial ) في النموذج ... ثم حاول ان تدخل بيانات جديدة في النموذج فانك سوف تلاحظ انها اخذت ترقيم تلقائي .. عموما لا اريد ان اخرج عن الموضوع اكثر من ذلك ..

نرجع الى الاستعلام الإلحاقي عند الحقل ( serial ) توجه الى الأسفل في خانة المعايير واضط كلك يمين في الماوس واختار كلمة إنشاء .. سوف يفتح معك منشيء التعبير ... حاول الوصول الى كلمة ( serial ) الموجودة في ( form1 ) من خلال منشيء التعبير ... تأكد من حصولك على نفس الكود الموجود في المثال السابق .. إذا وجدت كلمة ( نماذج ) قد ظهرت في الكود غيرها الى ( forms ) أي تأكد من الكود جيداً لأنه هو أساس الفكرة كلها ..

بعدها قم بإنشاء استعلام حذف وضع نفس الكود الذي قمنا بعمله في الاستعلام الالحاقي فيه ( نفس الكود في خانة المعايير في حقل serial ) ..

الى هنا بإمكانك تجربة المثال لكي تتأكد من نقل بيانات السجل الذي تريده فقط من ( table1 الى table2 ) وليس جميع السجلات ...

الآن نتوجه الى النموذج ..

ننشيء زرين في النموذج الأول هو زر إضافة بيانات جديدة والزر الآخر هو زر حفظ البيانات

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

هنا في النموذج نريد نقل البيانات المعروضة أمامنا الى الجدول الثاني فقط في حالة إذا كان الحقل ( b ) يحتوي على كلمة ( موظف متقاعد ) ... إذن نتوجه الى الكود الخاص بعلامة الصح نضع الكود التالي بعد سطر on error ...

If b = "موظف متقاعد" Then

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

DoCmd.OpenQuery "Query1"

DoCmd.OpenQuery "deltRec"

Me.Requery

Else

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

End If

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

أولا أخي الكريم بإمكانك الإستغناء عن السطر الذي يأتي بعد سطر عبارة if ... قصدي السطر :

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

يمكنك حذفه .. حيث انه يقوم بحفظ البيانات في الجدول الأول ... يمكن حذفه على إعتبار ان البيانات قد تم حفظها تلقائياً .

عبارة if تقول إذا كان الحقل الذ اسمه ( b ) فيه كلمة ( موظف متقاعد ) إذن قم بعمل التالي :

DoCmd.OpenQuery "Query1"

DoCmd.OpenQuery "deltRec"

Me.Requery

أي قم بتشغيل الاستعلام الألحاقي ثم شغل استعلام الحذف بعده وعبارة Me.Requery نضعها لكي نتخلص من كلمة ( محذوف ) التي سوف تظهر لك في النموذج .

Else

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

End If

عبارة else تعني ( وإلا ) قم بتنفيذ هذا الكود ... طبعا الكود هو نفسه الذي قمنا بالإستغناء عنه في البداية وهو كود أحفظ البيانات في الجدول الأول .

-------------------------------------

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

وأعذرني من أي تقصير ... وفقك الله

أخوكم في الله

sandanet

#7

اخي SANDANET

شكرا جزيلا

والله يوفقك على هذا المعروف

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

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