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

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

قام بنشر

صباح الخير جميعا

لدي مشكلتان

الأولى :

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

الثانية :

أريد عمل طريقة بين نموذجين

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

مرفق ملف لمثال واضح

:rol:

_______________________.rar

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

الاخت نرجس الورد

بالنسبة للنقطة الاولى

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

الحل هو الغاء عامل التصفية على النموذج قبل امر الانتقال الى السجل الاخير.

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

اليك التعديل على النقطة الاولى واعذرينا على التقصير

بالتوفيق

_______________________.rar

تم تعديل بواسطه yousef
قام بنشر

أختي الكريمه

أرجو أن أكون قد فهمت قصدك بالنسبه لطلبك الثاني ...

الثانية :

أريد عمل طريقة بين نموذجين

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

الذي فهمته هو أنكِ تريدين تطابق الأرقام بين السجل الأول و الثاني ...

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

بالتوفيق إن شاء الله

قام بنشر
الاخت نرجس الورد

بالنسبة للنقطة الاولى

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

الحل هو الغاء عامل التصفية على النموذج قبل امر الانتقال الى السجل الاخير.

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

اليك التعديل على النقطة الاولى واعذرينا على التقصير

بالتوفيق

شكراااا لك أخي الكريم يوسف

المشكلة الأولى تم حلها

وأتمنى لك التوفيق وأن يساعدك الله

:rol:

قام بنشر
أختي الكريمه

أرجو أن أكون قد فهمت قصدك بالنسبه لطلبك الثاني ...

الثانية :

أريد عمل طريقة بين نموذجين

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

الذي فهمته هو أنكِ تريدين تطابق الأرقام بين السجل الأول و الثاني ...

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

بالتوفيق إن شاء الله

شكرا لك أخي الكريم

للتوضيح فإن هدفي هو أن يقوم المستخدم في النموذج الثاني بتحديد نفس () للسجل الحالي في النموذج الأول

وذلك لأن مصدر النموذج الثاني يعتبر جدول فرعي مرتبط بالسجل الأساس في الجدول الأول.

أو اذا كانت هناك طريقة أخرى للحل فلا مشكلة

مرفق تعديل على الملف للتوضيح أكثر

ولكم شكررررررري

_______________________2.rar

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

أختي الكريمة

أعتقد إن الخلل موجود في تصميم الجداول ...

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

أما في الحالة التي تريدينها فإن الموظف الواحد ممكن تكون له عدة شهادات .... فالعلاقة المطلوبة هي ( واحد - متعدد )

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

ندخل في المفيد ...

المطلوب

1- حذف العلاقة الموجودة بين الجدولين ...

2- تسمية حقل المفتاح الرئيسي في جدول الشهادات ( الجدول الثاني ) باسم مختلف

3- وضع حقل جديد في جدول الشهادات اسمه ُُُُEmployee ID و بنفس خصائص حقل المفتاح الرئيسي في الجدول الأول ... و ذلك للربط بين الجدولين باستخدامه

4- هنا تصبح العلاقة بالشكل المطلوب ( واحد - متعدد )

5- الآن يمكن عمل ال Form المطلوب بال Wizard بسهوله

ملحوظة :

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

_______________________2.zip

تم تعديل بواسطه Dream_Works
قام بنشر

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

شكرا لمجهودك الطيب أخي الكريم Dream_Works

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

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

مرفق بالمثال التعديل مع توضيح جديد للمطلووب

مع خالص شكرري

:rol:

_______________________3.rar

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

في حدث عند الفتح للنموذج Emp2 ضعي الكود ادناه

DoCmd.GoToRecord , , acNewRec
Me.EmployeeID.Value = Forms!emp1.EmployeeID

وهذا الملف بعد التعديل

جزاك الله ألف خير أخي الفاضل يوسف

هذا ممتاز ويحقق نصف المطلب حيث أنه في كل مرة عند فتح النموذج الفرعي سيقوم هذا الكود بفتح سجل جديد . . والذي أريده أن لا يفتح سجل جديد في حالة وجود سجل سابق بنفس رقم الموظف (ُُُُEmployee ID)

طبعاً مع امكانية اضافة أكثر من سجل لنفس الموظف ولكن عند رغبتنا فقط

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

ربما لو رجعنا للطريقة الأولى : وهي وضع رسالة تحذير في حالة عدم تساوي رقم (ُُُُEmployee ID) في النموذج الفرعي مع النموذج الأساسي قد يكون لهذه الطريقة كود أخف من السابق .

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

مع استحيائي وشكرررررررري لكم

تم تعديل بواسطه نرجس الورد
قام بنشر (معدل)

أرجو مساعدتي . . مع تقديري لظروفكم جميعاً

أني أتسائل .. هل بالإمكان عمل مثل هذه الطريقة أو لا يمكن ؟

مع خالص شكري وبالتوفيق لكم جميعاً

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

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

الأمر في غاية البساطة،

اتقدم لك بالتعديل المطلوب

Update.rar

تحياتي

السلام عليكم

أخي الفاضل المكافح محب العلم

الله يرزقك مثل طيب نواياك

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

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

كما أن هناك شيء آخر . . أريد النموذج الفرعي عمودي وليس جدولي

ومن ثم نبدا بوضع الأكواد المناسبة

أولاً : الكود الخاص بفتح النموذج الفرعي بناءً على رقم السجل الحالي في النموذج الاساس

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

أعرف بوجود هذين الكودين في مثالك أخي الفاضل .. ولكن لم أستطع فهمها واستنباطها لأستفيد منها !!!

أعرف أني أثقلت عليكم ساعدكم الله وزادكم صبراً وعلما

قام بنشر

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

فلاحظ أن الكود في النموذج emp4 يقوم بتغيير رقم EmployeeID من تلقاء نفسه !! ..

أتمنى أن تلاحظ هذه المشكلة !

مع تقديري لك ولجهدك . .

قام بنشر
هذا ممتاز ويحقق نصف المطلب حيث أنه في كل مرة عند فتح النموذج الفرعي سيقوم هذا الكود بفتح سجل جديد . . والذي أريده أن لا يفتح سجل جديد في حالة وجود سجل سابق بنفس رقم الموظف (ُُُُEmployee ID)

طبعاً مع امكانية اضافة أكثر من سجل لنفس الموظف ولكن عند رغبتنا فقط

أرجو أن يكون هذا المطلوب ...

أرجوالتأكد من تعبئة Certificate ID في حالة الإضافة

_______________________3.zip

قام بنشر
هذا ممتاز ويحقق نصف المطلب حيث أنه في كل مرة عند فتح النموذج الفرعي سيقوم هذا الكود بفتح سجل جديد . . والذي أريده أن لا يفتح سجل جديد في حالة وجود سجل سابق بنفس رقم الموظف (ُُُُEmployee ID)

طبعاً مع امكانية اضافة أكثر من سجل لنفس الموظف ولكن عند رغبتنا فقط

أرجو أن يكون هذا المطلوب ...

أرجوالتأكد من تعبئة Certificate ID في حالة الإضافة

السلام عليكم

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

أخي الكريم 'Dream_Works' شكرا لتواصلك

كود النموذج الأول Emp1 :

هذا الجزء يحتوي على تعريفات بالمتغيرات في الكود :

    Dim stDocName As String
    Dim stLinkCriteria As String
    Dim count As Integer
وهذا الجزء من الكود يقوم بفتح النموذج الفرعي المطابق للسجل الأساس بالنموذج Emp1 :
    stDocName = "Emp2"

   stLinkCriteria = "[EmployeeID]=" & Me.EmployeeID
إلى هنا ليس لدي أي مشكلة في طريقة فتح النموذج الفرعي بشرط تطابق السجلات أما هذا الجزء من الكود لم أعرف وظيفته :
   count = DCount("*", stDocName, stLinkCriteria)
If count = 0 Then
' Employee ID is not found
DoCmd.OpenForm stDocName, DataMode:=acFormAdd, OpenArgs:=Me.EmployeeID
Else
' Employee ID is found
DoCmd.OpenForm stDocName, , , stLinkCriteria
End If
في النموذج الفرعي Emp2 : في حدث عند الفتح :
If Not IsNull(Me.OpenArgs) Then
DoCmd.GoToRecord , , acNewRec
Me.EmployeeID = Me.OpenArgs

End If

لم أعرف ما هو هذا : OpenArgs

هل هو متغير أم ثابت أم ماذا ؟

اني في احراج من اتعابكم معي ونحن في أيام عيد الأضحى المبارك

على كل حال حالياً يتبقى شيء واحد فقط

كل ما هو مطلوب حالياً هو أن أجعل النموذج الفرعي لا يضيف أي سجل جديد إلا بنفس رقم السجل الأساس بالجدول الأول

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

الطريقة الأولى :

جعل النموذج الفرعي يضيف رقم EmployeeID بشكل تلقائي من ذاته

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

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

الطريقة الثانية :

جعل المستخدم هو من يختار رقم EmployeeID ولكن بوجود شرط لتطابقه مع EmployeeID في الجدول الأول

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

:fff:

:rol:

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.

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

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information